List Connected Social Accounts
Read up to 50 connected social accounts for the current creator. Returns platform, public username, verification flag, and connection timestamp. OAuth tokens are NOT exposed.
GET /api/v1/creators/social — 🔑 Bearer
Returns up to 50 connected social accounts for the calling user, ordered by connectedAt ASC (oldest first). Each row exposes only the public-safe fields — the OAuth tokens stored at connect time are kept server-side and never returned.
The 50-cap is enforced server-side. In practice creators link 2–6 platforms; the cap exists to bound payload size for unusual cases. Pagination is not exposed.
Request
No body, no params.
| Header | Required | Notes |
|---|---|---|
Authorization: Bearer <accessToken> | ✓ | JWT from POST /auth/login |
Response
200 OK — ArrayApiResponseOf<SocialAccountItemDto>
{
"success": true,
"data": [
{
"platform": "instagram",
"platformUsername": "johndoe",
"verified": true,
"connectedAt": "2026-04-29T20:00:00.000Z"
},
{
"platform": "x",
"platformUsername": "@johndoe",
"verified": true,
"connectedAt": "2026-04-29T20:00:00.000Z"
}
]
}| Field | Type | Notes |
|---|---|---|
platform | string | Platform identifier as recorded at connect time |
platformUsername | string | null | Public handle on the platform (may be null if the platform's API didn't return one) |
verified | boolean | true for OAuth-verified connections (always true for accounts created via POST /creators/social/connect — admin-injected accounts may differ) |
connectedAt | string (ISO 8601) | When the row was created |
Errors
| HTTP | code / i18nKey | Reason |
|---|---|---|
401 | (guard) | Missing / invalid bearer token |
Side effects
prisma.socialAccount.findMany({ where: { userId }, select: { platform, platformUsername, verified, connectedAt }, orderBy: { connectedAt: 'asc' }, take: 50 }).- Return the array.
accessToken,refreshToken,tokenExpiresAt,platformUserIdare excluded from the select — they are server-only. - No mutations.
Code samples
curl https://api.bio.re/api/v1/creators/social \
-H "Authorization: Bearer $ACCESS_TOKEN"type SocialAccountItem = {
platform: string;
platformUsername: string | null;
verified: boolean;
connectedAt: string;
};
async function getConnectedSocialAccounts(accessToken: string): Promise<SocialAccountItem[]> {
const res = await fetch('https://api.bio.re/api/v1/creators/social', {
headers: { Authorization: `Bearer ${accessToken}` },
});
const json = await res.json();
if (!res.ok || !json.success) {
throw Object.assign(new Error(json?.error?.message ?? 'Social list fetch failed'), {
code: json?.error?.code,
});
}
return json.data;
}import { useQuery } from '@tanstack/react-query';
export const creatorKeys = {
social: () => ['creators', 'social'] as const,
};
export function useConnectedSocialAccounts() {
return useQuery({
queryKey: creatorKeys.social(),
queryFn: async () => {
const res = await fetch('/api/v1/creators/social');
const json = await res.json();
if (!res.ok || !json.success) {
throw Object.assign(new Error(json?.error?.message ?? 'Social list fetch failed'), {
code: json?.error?.code,
i18nKey: json?.error?.i18nKey,
});
}
return json.data as SocialAccountItem[];
},
staleTime: 60_000,
});
}Try it
Authorization
bearer In: header
Response Body
application/json
application/json
curl -X GET "https://loading/api/v1/creators/social"{
"success": true,
"data": [
{
"platform": "instagram",
"platformUsername": "string",
"verified": true,
"connectedAt": "2019-08-24T14:15:22Z"
}
]
}{
"success": false,
"error": {
"code": "AUTH_UNAUTHORIZED",
"message": "Invalid credentials",
"i18nKey": "auth.login.invalid_credentials",
"i18nVars": {
"field": "email"
},
"details": [
{
"message": "email must be an email"
}
],
"correlationId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890"
}
}Source
| Source | Path | Lines |
|---|---|---|
| Controller | apps/api-core/src/modules/creator/creator.controller.ts | 85–91 (getSocialAccounts) |
| DTO (response item) | apps/api-core/src/modules/creator/dto/creator-client-response.dto.ts | 303–315 (SocialAccountItemDto) |
| Service | apps/api-core/src/modules/creator/creator.service.ts | 284–291 (getSocialAccounts) |
| Prisma model | packages/prisma/prisma/schema.prisma | SocialAccount (server-only fields excluded from select: accessToken, refreshToken, tokenExpiresAt, platformUserId) |
Disconnect Social Account
Remove a connected social account. Cascade-deletes the SocialMetrics row and recomputes totalFollowers across the creator's remaining linked accounts.
Get Creator Dashboard
Earnings + level + wallet + DM + response-rate summary in a single response. Computed from CreatorProfile, Wallet, PayoutRequest, Message, SocialAccount, and ConfigService thresholds.