Check an app slug
const url = 'https://qinto-api.blotout.io/developer/app-slugs/facebook-capi';const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}curl --request GET \ --url https://qinto-api.blotout.io/developer/app-slugs/facebook-capi \ --header 'Authorization: Bearer <token>'Reports whether a slug is still free, and offers free alternatives when it is not, so a developer can pick another one before the app is built around it. The slug namespace is global: it spans every organization.
How it works
An unavailable answer is final — taken slugs stay reserved even after the app is deleted, and reserved ones belong to the Blotout platform — and carries up to three free variations of the slug in suggestions. An available answer can still lose a race with another registration, so the create operation stays authoritative and can answer slug_taken afterwards.
Required permissions
- None beyond a valid token; requires an OAuth token with the
developerscope
Authorizations
Section titled “Authorizations”Parameters
Section titled “Parameters”Path Parameters
Section titled “Path Parameters”The slug to check: 3-30 lowercase letters, digits, and hyphens, starting with a letter and not ending with a hyphen.
Example
facebook-capiThe slug to check: 3-30 lowercase letters, digits, and hyphens, starting with a letter and not ending with a hyphen.
Responses
Section titled “Responses”The slug was checked; available carries the verdict, reason says why an unavailable slug is refused, and suggestions lists free slugs to offer instead.
object
The slug that was checked.
Whether the slug can still be registered. False means the create operation would refuse it.
Why the slug is unavailable: taken when an app already claimed it, reserved when the Blotout platform keeps it for its own surfaces. Null when the slug is available.
Up to three free slugs to offer instead, worded from the requested one and ordered at random. Empty when the requested slug is available.
Example
{ "slug": "facebook-capi", "available": true, "reason": "taken", "suggestions": [ "facebook-capi-labs" ]}invalid_params — A path parameter failed validation (for example a malformed UUID); details pinpoints the offending parameter.
object
Machine-readable error slug; switch on this value rather than on the HTTP status alone.
Field-level validation errors: a tree keyed by input property, each node carrying an errors array of human-readable messages. Render it to help the caller correct the request.
object
Example
{ "error": "invalid_params", "details": { "errors": [], "properties": { "teamId": { "errors": [ "Invalid UUID" ] } } }}unauthenticated — The Authorization: Bearer token is missing, malformed, or no longer valid. Generate a team API token or obtain a new OAuth access token.
object
Machine-readable error slug; switch on this value rather than on the HTTP status alone.
Example
{ "error": "unauthenticated"}forbidden — The bearer credential lacks the required permission or belongs to another team, or its user lacks the organization role a developer operation needs. Update its policies, use a credential bound to the addressed team, or ask an organization owner for the role; message states the reason when one is known.
object
Machine-readable error slug; switch on this value rather than on the HTTP status alone.
Human-readable reason for this specific failure, intended for display — do not parse it programmatically.
Example
{ "error": "forbidden", "message": "The Cloudflare API token is invalid or expired."}internal — Unexpected server error. Nothing is guaranteed to have been persisted; idempotent operations are safe to retry.
object
Machine-readable error slug; switch on this value rather than on the HTTP status alone.
Example
{ "error": "internal"}