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

Authenticate API v2 requests

Send an API key and Clan ID securely and understand authentication failures.

Last updated 3 September 2026

Every public API v2 endpoint requires two headers:

http
Authorization: Bearer YOUR_API_KEY
X-Clan-Id: COMMUNITY_ID

YOUR_API_KEY is the one-time cl_live_… secret. COMMUNITY_ID is the Clan ID shown separately on the API settings page. A key is bound to one community; pairing it with another Clan ID does not grant cross-community access.

Request requirements

For authentication to pass, all of these must be true:

  1. The URL uses https://v3.api.clanlabs.co/v2/....
  2. Both headers are present and correctly formatted.
  3. The API master switch is enabled for the community.
  4. The individual key exists and is enabled.
  5. The key has the endpoint’s required scope.
  6. The community has an active subscription with API access and the endpoint’s feature.

Authorization checks do not replace route validation. A fully authenticated request can still receive 400, 404, 409, or 429.

Authentication failures

Status and codeMeaningNext action
401 missing_credentialsA key or X-Clan-Id is absent.Add both headers.
401 authentication errorThe key shape, secret, or community could not be authenticated.Check the API host, secret-manager value, Clan ID, and visible key prefix.
403 api_disabledThe community API master switch is off.Enable it in API settings.
403 key_disabledThis key is disabled.Enable it or use a current key.
403 legacy_key_unsupportedA migrated legacy key was sent to /v2.Rotate it in Settings → API Keys to issue a cl_live_ key.
403 insufficient_scopeThe key lacks the operation’s permission.Add only the required scope; read WWW-Authenticate for its name.
403 entitlement_requiredThe subscription is not active.Restore the community subscription.
403 api_access_unavailableThe plan does not include any API access.Compare the available plans.
403 feature_unavailableThe endpoint’s product feature is unavailable.Check tier, trial, and feature details.

Server-side storage

  • Put the secret in an encrypted deployment secret or environment variable.
  • Use a separate key for each integration and environment.
  • Never put it in source control, logs, URLs, support messages, frontend bundles, a Roblox LocalScript, or experience source code.
  • For Roblox server scripts, save it in the Creator Hub secrets store and read it with HttpService:GetSecret().
  • Redact the Authorization header in monitoring and exception tools.
  • Rotate immediately after suspected disclosure.

Example request

curl --request GET \
  --url 'https://v3.api.clanlabs.co/v2/members?limit=1' \
  --header 'Authorization: Bearer YOUR_API_KEY' \
  --header 'X-Clan-Id: COMMUNITY_ID'

Next, choose the smallest permissions in API keys and scopes.

PreviousAPI overviewNext API keys and scopes
On this page
  1. Request requirements
  2. Authentication failures
  3. Server-side storage
  4. Example request