Skip to content
Clan LabsAPIv2
GuidesWebsite Open dashboard
OverviewAuthenticationAPI keysRequestsErrorsMigrationEndpoints
API reference
API v2
  • API overview
  • Authentication
  • API keys and scopes
  • Requests and responses
  • Errors and rate limits
  • Versioning and migration
  • Swagger migration
Troubleshooting
  • Authentication failures
  • Request and rate-limit errors
Members
  • GETList members
  • GETFetch one member
  • POSTChange a member's experience
  • POSTChange a member's quota points
  • PUTSet a member's rank
  • POSTPromote a member one rank
  • POSTDemote a member one rank
  • POSTAward a medal
  • DELETERemove a medal
  • POSTAward a qualification
  • DELETERemove a qualification
  • GETList a member's suspensions
  • POSTSuspend a member
  • POSTRestore a member's active suspension
  • POSTCancel a member's active suspension
Configuration
  • GETList ranks
  • GETFetch one rank
  • GETList medals
  • GETFetch one medal by name
  • GETList qualifications
  • GETFetch one qualification by name
Moderation
  • GETList blacklist entries
  • POSTCreate a blacklist entry
  • GETFetch one blacklist entry
  • PATCHUpdate a blacklist entry's description
  • DELETERemove a blacklist entry
  • GETList warnings
  • POSTIssue a warning
  • GETFetch one warning
  • PATCHUpdate a warning
  • DELETEDelete a warning
Events
  • GETList events
  • POSTCreate and announce an event
  • GETList curated event types
  • GETList approved event locations
  • GETFetch one event
  • POSTCancel an event
  • POSTFinish an event
  • POSTCreate a fresh Discord announcement
GuidesClan Labs websiteOpen dashboard Support
API v2
  • API overview
  • Authentication
  • API keys and scopes
  • Requests and responses
  • Errors and rate limits
  • Versioning and migration
  • Swagger migration
Troubleshooting
  • Authentication failures
  • Request and rate-limit errors
Members
  • GETList members
  • GETFetch one member
  • POSTChange a member's experience
  • POSTChange a member's quota points
  • PUTSet a member's rank
  • POSTPromote a member one rank
  • POSTDemote a member one rank
  • POSTAward a medal
  • DELETERemove a medal
  • POSTAward a qualification
  • DELETERemove a qualification
  • GETList a member's suspensions
  • POSTSuspend a member
  • POSTRestore a member's active suspension
  • POSTCancel a member's active suspension
Configuration
  • GETList ranks
  • GETFetch one rank
  • GETList medals
  • GETFetch one medal by name
  • GETList qualifications
  • GETFetch one qualification by name
Moderation
  • GETList blacklist entries
  • POSTCreate a blacklist entry
  • GETFetch one blacklist entry
  • PATCHUpdate a blacklist entry's description
  • DELETERemove a blacklist entry
  • GETList warnings
  • POSTIssue a warning
  • GETFetch one warning
  • PATCHUpdate a warning
  • DELETEDelete a warning
Events
  • GETList events
  • POSTCreate and announce an event
  • GETList curated event types
  • GETList approved event locations
  • GETFetch one event
  • POSTCancel an event
  • POSTFinish an event
  • POSTCreate a fresh Discord announcement
  1. API reference
  2. /
  3. API v2
API v2

Requests, responses, pagination, and retries

Use API v2 path and query parameters, response envelopes, filters, and safe retry behaviour.

Last updated 3 September 2026

API v2 accepts JSON for request bodies and returns JSON for responses unless an endpoint documents an empty success body.

Request validation

Send Content-Type: application/json for JSON bodies. The generated endpoint page marks required fields and reports types, enums, length limits, numeric bounds, formats, and array limits. Many write schemas reject undeclared fields.

Do not coerce arbitrary user input into a request. Validate it before calling Clan Labs and preserve the API’s structured validation issues for debugging without logging private data.

Successful responses

A single resource or result is wrapped in data:

json
{
  "data": {
    "id": "RESOURCE_ID"
  }
}

Collection responses can add meta:

json
{
  "data": [],
  "meta": {
    "nextCursor": null
  }
}

Treat undocumented fields as unstable and do not assume a property omitted from one response is always absent.

Pagination

Pagination is endpoint-specific:

  • GET /v2/members uses limit from 1–100, defaults to 50, and returns meta.nextCursor. Pass that value as the next cursor.
  • GET /v2/events uses a UUID cursor, a 1–100 limit that defaults to 25, and optional status.
  • GET /v2/warnings uses limit from 0–200, defaults to 50, and skip from 0.

Stop when nextCursor is absent or null, or when an offset page contains no more records. Do not modify or infer a cursor.

Filtering and ordering

Supported filters are listed on each operation. Current examples include blacklist type, warning targetId, targetUsername, and severity, and event status.

API v2 does not expose a general sort parameter. Preserve the endpoint-defined order; sort a copy in your own application only when that does not break cursor pagination.

Identifying members

For a {userId} path, send a global Roblox user ID, or send a Roblox username and add ?by=username. The member fetch also supports refresh=1 or refresh=true to bypass its staleness window, sync from Roblox, and run the configured AutoRank check. Use refresh deliberately because it performs more work than a cached read.

Idempotency and retries

There is no global Idempotency-Key support in the current API.

  • Retry GET requests with bounded exponential backoff for transient failures.
  • Awarding a medal or qualification already held is explicitly a no-op and can be reconciled safely.
  • A duplicate blacklist create returns 409; fetch the existing entry instead of treating it as a new success.
  • Before retrying any other write after a timeout, fetch the target and determine whether the first call completed.
  • Obey Retry-After on 429.

Continue with Errors and rate limits.

PreviousAPI keys and scopesNext Errors and rate limits
On this page
  1. Request validation
  2. Successful responses
  3. Pagination
  4. Filtering and ordering
  5. Identifying members
  6. Idempotency and retries