Account settings
ReferenceManage your profile, security, preferences, API keys, and account deletion.
A non-hot-reloadable change occurred and we must rebuild.
Checking account access…
Use Akordo's versioned HTTP API for first-party and external clients.
Akordo exposes a versioned HTTP API under /api/v1 for first-party clients and external integrations.
Design goals for v1:
/api/v1/openapi.json.The OpenAPI document at GET /api/v1/openapi.json describes the /api/v1/* data endpoints. OAuth endpoints (/oauth/*) are not included in this spec — see the Authentication section below for those.
Use your Akordo deployment origin plus /api/v1.
Examples:
https://akordo.app/api/v1https://beta.akordo.app/api/v1/api/v1 is additive-first:
/api/v2).Clients that support browser-based auth should use authorization code + PKCE with Akordo's built-in OAuth endpoints:
GET /oauth/authorizePOST /oauth/tokenAPI-v1 grants must request all three parts of the API authority exactly:
api:accessakordo-api (selected by the server for the API resource)https://akordo.app/api/v1The resource parameter is required on the authorization request. MCP grants
(mcp:tools, the MCP audience, or the /api/mcp resource), a missing resource,
and another deployment's API URL cannot be used on API v1.
Use bearer tokens in API calls:
Authorization: Bearer at_xxx
For scripts, backend jobs, and tools that do not need user-interactive sign-in:
X-API-Key: ak_...Authorization: Bearer ak_...Keys carry explicit api:access and/or mcp:tools scopes and expire after at
most 90 days. A key cannot list, create, or revoke API keys; credential
management requires a recent interactive browser session or an approved,
short-lived first-party elevation. Store keys in a secret manager and revoke
them when an integration is retired.
If both Authorization and X-API-Key are present, bearer is evaluated first and X-API-Key can be used as fallback.
Authenticate and fetch your songs with curl:
# Check your identity
curl -H "X-API-Key: ak_your_key_here" https://akordo.app/api/v1/me
# List your songs
curl -H "X-API-Key: ak_your_key_here" https://akordo.app/api/v1/songs
# Get a specific song
curl -H "X-API-Key: ak_your_key_here" https://akordo.app/api/v1/songs/SONG_ID
Fetch the v1 OpenAPI document at:
GET /api/v1/openapi.jsonUse this document to generate typed clients, validate requests/responses, and keep integration tests aligned with the current v1 contract.
GET /api/v1/meGET /api/v1/songsGET /api/v1/songs/{song_id}GET /api/v1/songs/{song_id}/arrangementsGET /api/v1/setlistsGET /api/v1/setlists/{setlist_id}/api/v1/* is rate-limited by both client address and API-key/OAuth credential. The default
application limits are 600 requests per client and 300 per credential in a 60-second window;
deployment-edge limits may be stricter. A limited request returns 429 Too Many Requests with a
Retry-After header. Wait for that interval before retrying.
OAuth dynamic client registration (POST /oauth/register) has a separate, tighter abuse limit and
uses the same 429/Retry-After behavior.
List endpoints use cursor pagination.
Query parameters:
limit (1-100, default 50)cursor (opaque token from previous response)Response shape:
{
"data": [],
"page": {
"next_cursor": "opaque-token-or-null"
}
}
When next_cursor is null, you have reached the end of the result set.
Errors return a consistent JSON envelope:
{
"error": {
"code": "validation_error",
"message": "limit must be between 1 and 100"
}
}
Common error codes:
unauthorizedforbiddennot_foundvalidation_errorinternal_error