Register creators
Register creators by your own externalId and handle, refresh their stored profile data, and disconnect handles.
A creator is a user identified by your externalId, with one or more linked Instagram or TikTok handles. Verification matches a creator's linked handle against the comments or likers on a post, so a creator must be registered before their attempts can verify.
Register a creator and link a handle
/social-accountsNeeds a token with admin rights.
Registers the creator if externalId is new and links the handle in one call. You assert that the handle belongs to this creator; no ownership check runs.
curl -X POST {API_BASE_URL}/social-accounts \
-H "Authorization: Bearer <API_TOKEN>" \
-H "Content-Type: application/json" \
-d '{
"externalId": "cust_abc123",
"platform": "instagram",
"handle": "creator_jane",
"displayName": "Jane Doe"
}'| Field | Required | Notes |
|---|---|---|
externalId | yes | Your identifier for this creator |
platform | yes | instagram or tiktok |
handle | yes | With or without a leading @ |
email | no | Defaults to a placeholder derived from externalId |
displayName | no |
{
"data": {
"user": { "id": 42, "externalId": "cust_abc123", "email": "jane@example.com" },
"socialAccount": {
"id": 7,
"platform": "instagram",
"platformUsername": "creator_jane",
"profileData": { "followers": 12800, "full_name": "Jane Doe", "is_verified": false }
}
}
}The call is idempotent on the triple externalId + platform + handle:
| Status | Meaning |
|---|---|
201 | New link created |
200 | This exact triple already existed. The stored record is returned unchanged |
403 | Token lacks admin rights |
400 | The request body failed validation |
The same handle may be linked under different externalIds, and an existing externalId is reused rather than rejected.
profileData keys are not guaranteed
Profile data is fetched best-effort at registration. Common keys are followers, following, profile_pic_url, full_name, biography, and is_verified, but any of them can be absent. If you need a key that is missing, call the refresh route below. To read any public profile without registering a creator, use the Creator profiles lookup.
List creators
/admin/creatorsReturns every registered creator with linked accounts and their campaign stats.
{
"data": [
{
"userId": 42,
"email": "jane@example.com",
"displayName": "Jane Doe",
"avatarUrl": null,
"platform": "instagram",
"platformUsername": "creator_jane",
"connectedAt": "2026-06-01T09:00:00.000Z",
"profileData": { "followers": 12800, "full_name": "Jane Doe" },
"totalAttempts": 5,
"totalVerified": 4,
"totalRewarded": 3,
"totalPoints": 300
}
]
}userId is the internal id you can use on admin attempt routes instead of externalId.
Refresh a profile
Fetches the latest Instagram or TikTok profile data and replaces profileData wholesale, rather than merging into it. data is the new profile object itself, not the creator.
When the profile cannot be read the route returns a data lookup error. When it is read but comes back empty, the route returns 200 and data is {} — which also clears the stored profile, so keep the previous copy if you need it.
Check a handle
/admin/creators/verify/{handle}Answers whether an Instagram handle is linked to a registered creator. Accepts the handle with or without @.
{ "data": { "verified": true } }Disconnect a handle
/social-accounts/disconnectNeeds a token with admin rights.
Soft-disconnects the active link matching externalId + platform + handle (case-insensitive). The handle stops counting for verification and listings at once; past attempts, matched comments, and rewards are kept.
curl -X POST {API_BASE_URL}/social-accounts/disconnect \
-H "Authorization: Bearer <API_TOKEN>" \
-H "Content-Type: application/json" \
-d '{ "externalId": "cust_abc123", "platform": "instagram", "handle": "creator_jane" }'{
"data": {
"id": 7,
"platform": "instagram",
"platformUsername": "creator_jane",
"disconnectedAt": "2026-07-01T00:00:00.000Z"
}
}After disconnecting, the creator may link a different handle, another externalId may claim the freed handle, and re-posting the same triple to POST /social-accounts reconnects it. 404 means no active link matched.
Last updated on