Create an API key
const url = 'https://example.com/api/v1/api-keys';const options = { method: 'POST', headers: { cookie: 'bl_%3Cslug%3E_session=%3Cbl_%3Cslug%3E_session%3E', 'Content-Type': 'application/json' }, body: '{"name":"example","scopes":["example"],"key":"example"}'};
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://example.com/api/v1/api-keys \ --header 'Content-Type: application/json' \ --cookie bl_%3Cslug%3E_session=%3Cbl_%3Cslug%3E_session%3E \ --data '{ "name": "example", "scopes": [ "example" ], "key": "example" }'A key for the management API (scope management), or for the gateway (scope gateway): a gateway key belongs to an app, so this creates an app that may read and write every subscription (decisions #73). The answer holds the key itself, once.
Authorizations
Section titled “Authorizations”Request Bodyrequired
Section titled “Request Bodyrequired”object
["management"] or ["gateway"].
Only for automated provisioning; normally generated.
Example generated
{ "name": "example", "scopes": [ "example" ], "key": "example"}Responses
Section titled “Responses”OK.
A key for the management API or the gateway.
object
Its last four characters, to recognise it; none for keys from before.
The app the key belongs to (decisions #73); none for the management API.
The key itself: only in the answer that creates it.
Example generated
{ "id": "example", "name": "example", "scopes": [ "example" ], "created_at": "2026-04-15T12:00:00Z", "last_used_at": "2026-04-15T12:00:00Z", "last4": "example", "app_id": "example", "key": "example"}Unknown or mixed scopes, or a supplied key shorter than 16 characters.
The body of every failed call to a management API.
object
object
Stable, machine-readable: invalid_request, unauthenticated,
forbidden, not_found, conflict, upstream_unavailable,
unavailable, internal, or a more specific code of the operation.
For people; may change between versions.
Example
{ "error": { "code": "not_found", "message": "unknown negotiation" }}No valid session, DPoP-bound token or API key.
The body of every failed call to a management API.
object
object
Stable, machine-readable: invalid_request, unauthenticated,
forbidden, not_found, conflict, upstream_unavailable,
unavailable, internal, or a more specific code of the operation.
For people; may change between versions.
Example
{ "error": { "code": "not_found", "message": "unknown negotiation" }}The caller lacks the role this operation needs; or a change with the session cookie came from a page of another site (cross_site_request, decisions #83).
The body of every failed call to a management API.
object
object
Stable, machine-readable: invalid_request, unauthenticated,
forbidden, not_found, conflict, upstream_unavailable,
unavailable, internal, or a more specific code of the operation.
For people; may change between versions.
Example
{ "error": { "code": "not_found", "message": "unknown negotiation" }}