BIO.RE
Discover

Get Featured Creators

Public admin-curated featured creator list. Filtered by current time window (startsAt/endsAt) + creator active status. Ordered by admin-set position. CDN-cached 5min.

GET /api/v1/discover/featured โ€” ๐ŸŒ Public ยท Rate limit: 60 req / minute ยท Kill-switched

Returns the admin-curated featured creator list. Reads FeaturedCreator rows where the current time falls inside the startsAt/endsAt window (open-ended on either side is allowed), then loads the matching CreatorProfile rows and filters out inactive / suspended / vacationing creators. Ordered by position ASC.

Admin-managed catalog. The featured list is curated via admin endpoints โ€” clients can't add/remove. Empty list = no current featured slots (or all currently-featured creators are inactive). Cap is 100 (server-side take: 100 on both queries).

Request

No body, no params, no headers required.

Response headers

HeaderValue
Cache-Controlpublic, s-maxage=300, stale-while-revalidate=600

Response

200 OK โ€” ApiResponseOf<CreatorListDto>

{
  "success": true,
  "data": {
    "creators": [
      {
        "id": "c1a2b3c4-d5e6-7890-abcd-ef1234567890",
        "userId": "u1a2b3c4-d5e6-7890-abcd-ef1234567890",
        "username": "featured-creator",
        "displayName": "Featured Creator",
        "avatarUrl": "https://cdn.bio.re/avatars/abc.webp",
        "level": "PLATINUM",
        "dmActive": true,
        "totalFollowers": 100000
      }
    ]
  }
}
FieldTypeNotes
creatorsCreatorCardDto[]Currently-featured + currently-active creators, ordered by admin-set position ASC

See Search for the full CreatorCardDto field reference.

Errors

HTTPcode / i18nKeyReason
429(throttle)Rate limit exceeded (60 req/min)
503features.discover_disabledAdmin kill switch DISCOVER is active

Side effects

  1. featuredCreator.findMany({ where: { startsAt <= now (or null), endsAt >= now (or null) }, orderBy: position asc, take: 100 }).
  2. Empty list โ†’ return { creators: [] } (no second query).
  3. creatorProfile.findMany({ where: id IN featured.ids AND active filter (status ACTIVE, creatorStatus ACTIVE, vacationMode false) }) with the user join.
  4. Map rows โ†’ toCard() and return.

Code samples

curl https://api.bio.re/api/v1/discover/featured
async function getFeaturedCreators(): Promise<CreatorCard[]> {
  const res = await fetch('https://api.bio.re/api/v1/discover/featured');
  const json = await res.json();
  if (!res.ok || !json.success) {
    throw Object.assign(new Error(json?.error?.message ?? 'Featured fetch failed'), {
      code: json?.error?.code,
    });
  }
  return json.data.creators;
}
import { useQuery } from '@tanstack/react-query';

export const discoverKeys = {
  featured: () => ['discover', 'featured'] as const,
};

export function useFeatured() {
  return useQuery({
    queryKey: discoverKeys.featured(),
    queryFn: async () => {
      const res = await fetch('/api/v1/discover/featured');
      const json = await res.json();
      if (!res.ok || !json.success) {
        throw Object.assign(new Error(json?.error?.message ?? 'Featured fetch failed'), {
          code: json?.error?.code,
          i18nKey: json?.error?.i18nKey,
        });
      }
      return json.data.creators as CreatorCard[];
    },
    staleTime: 5 * 60_000,
  });
}

Try it

GET
/api/v1/discover/featured

Response Body

application/json

curl -X GET "https://loading/api/v1/discover/featured"
{
  "success": true,
  "data": {
    "creators": [
      {
        "id": "cuid_creator_123",
        "userId": "2c4a230c-5085-4924-a3e1-25fb4fc5965b",
        "username": "johndoe",
        "displayName": "John Doe",
        "avatarUrl": "https://cdn.bio.re/avatars/abc.jpg",
        "level": "BRONZE",
        "dmActive": false,
        "totalFollowers": 0
      }
    ]
  }
}

Source

SourcePathLines
Controllerapps/api-core/src/modules/discover/discover.controller.ts51โ€“55 (featured)
DTO (response)apps/api-core/src/modules/discover/dto/discover-response.dto.ts52โ€“55 (CreatorListDto)
Serviceapps/api-core/src/modules/discover/discover.service.ts277โ€“296 (getFeatured)
Prisma modelspackages/prisma/prisma/schema.prismaFeaturedCreator (admin-managed: startsAt, endsAt, position), CreatorProfile (active filter)

On this page