Revoke a token
const url = 'https://qinto-api.blotout.io/oauth/revoke';const options = { method: 'POST', headers: {'Content-Type': 'application/x-www-form-urlencoded'}, body: new URLSearchParams({ token: 'qor_5e0b…', token_type_hint: 'refresh_token', client_id: 'qc_4b1d…', client_secret: 'qcs_71aa…' })};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}curl --request POST \ --url https://qinto-api.blotout.io/oauth/revoke \ --header 'Content-Type: application/x-www-form-urlencoded' \ --data 'token=qor_5e0b…' \ --data token_type_hint=refresh_token \ --data 'client_id=qc_4b1d…' \ --data 'client_secret=qcs_71aa…'Revokes a qoa_ access token, or a qor_ refresh token together with its whole grant, per RFC 7009.
How it works
Client authentication follows the same rules as the token endpoint. The response is 200 whether or not the token matched: an unknown token, or a token issued to a different app, is silently ignored so the endpoint cannot be used as a validity oracle.
Request Bodyrequired
Section titled “Request Bodyrequired”RFC 7009 form-encoded revocation request.
object
The qoa_ access token or qor_ refresh token to revoke. Revoking a refresh token revokes its whole grant.
Example
qor_5e0b…Optional RFC 7009 hint (access_token or refresh_token); the token prefix already decides, so it is ignored.
Example
refresh_tokenThe app’s client id. Required unless the client authenticates with HTTP Basic.
Example
qc_4b1d…The app’s client secret for client_secret_post authentication. Public clients omit it.
Example
qcs_71aa…Responses
Section titled “Responses”The request was processed; any matching token is revoked.
object
Always true: the request was processed. Unknown tokens and other apps’ tokens are ignored without an error.
Example
{ "revoked": true}invalid_request — the request body is malformed.
object
The RFC 6749 / RFC 8707 error code.
A human-readable explanation of the failure, safe to log.
Example
{ "error": "invalid_request", "error_description": "The authorization code has expired."}invalid_client — client authentication failed.
object
The RFC 6749 / RFC 8707 error code.
A human-readable explanation of the failure, safe to log.
Example
{ "error": "invalid_request", "error_description": "The authorization code has expired."}