Skip to content
Connect an agent

API keys

Create an API key

To rotate a key: create the new one, deploy it, then revoke the old one.

POST/v1/api-keys

TL;DR

QuestionAnswer
What does it do?Create an API key.
What does it need?An API key or an OAuth access token.
What does it take?A JSON body with the fields below, and idempotency-key in a header.
What does it return?Status 201 with a body of type CreatedApiKey.
In the SDK?flung.apiKeys.create()
What can go wrong?401 Missing, unknown, revoked or expired API key; 403 This key cannot manage API keys; 422 The request failed validation; 429 Too many requests for this credential; wait for retry-after seconds. Every failure has the same error shape.

What it does

To rotate a key: create the new one, deploy it, then revoke the old one. The new key has full access.

Example

bash
curl -X POST 'https://api.flung.dev/v1/api-keys' \  --header "Authorization: Bearer $FLUNG_API_KEY" \  --header 'Content-Type: application/json' \  --header "Idempotency-Key: $(uuidgen)" \  --data '{  "name": "Production server"}'

A successful answer looks like this:

json
{  "id": "key_aaaaaaaaaaaaaaaaaaaaaaaa",  "name": "string",  "prefix": "flung_sk_live_abcd",  "scopes": [    "string"  ],  "lastUsedAt": "2026-11-01T09:00:00.000Z",  "expiresAt": "2026-11-01T09:00:00.000Z",  "revokedAt": "2026-11-01T09:00:00.000Z",  "createdAt": "2026-11-01T09:00:00.000Z",  "key": "string"}

Header parameters

FieldTypeRequiredDescription
idempotency-keystringnoAny unique string, such as a UUID. A retry with the same key and body within 24 hours gets the first answer instead of running again.

Request body

The body has the type an object, with the fields below.

FieldTypeRequiredDescription
namestringyesat least 1 character; at most 100 characters.
expiresAtstringnoWhen the key stops working. Omit for a key that does not expire.

Responses

StatusMeaningBody
201The key, shown once.CreatedApiKey
401Missing, unknown, revoked or expired API key.Error
403This key cannot manage API keys.Error
422The request failed validation.Error
429Too many requests for this credential; wait for retry-after seconds.Error

Response body

A 201 answer has the type CreatedApiKey.

FieldTypeRequiredDescription
idstringyes
namestringyes
prefixstringyesThe start of the key, to tell keys apart.
scopesstring[]yes
lastUsedAtstring | nullyes
expiresAtstring | nullyes
revokedAtstring | nullyes
createdAtstringyes
keystringyesThe secret key. Shown only in this response; store it now.

See also

DocWhy
API referenceEvery endpoint
SchemasEvery request and response type
ErrorsEvery error code and what to do about it