Axsync API v2

API keys

Long-lived credentials for server-to-server integrations. The secret is shown once, at creation.

The API key object

FieldTypeDescription
idstringUnique identifier, prefixed with ak_.
name requiredstringLabel for the key.
prefixstringFirst characters of the secret, for identification.
scopesstring[]Granted scopes.
last_used_attimestamp|nullLast successful request.
created_attimestampCreation time, RFC 3339 in UTC.

Example

{
  "id": "ak_8f3k2Q9xLm",
  "name": "CI exporter",
  "prefix": "axs_live_7Hq2",
  "scopes": [
    "notes:read",
    "files:read"
  ],
  "last_used_at": "2026-10-13T21:12:40Z",
  "created_at": "2026-09-14T08:21:07Z"
}

GET /api-keys

List api keys. Returns a paginated list of api keys.

Required scope: keys:read

Query parameters

FieldTypeDescription
limitintegerPage size, 1–100. Default 25.
cursorstringCursor from the previous page.
sortstringField to sort by, prefix - for descending.
filterstringFilter expression, see Filtering and sorting.

Request

curl -X GET "https://api.axnode.net/v2/api-keys" \
  -H "Authorization: Bearer $AXSYNC_TOKEN"
const res = await fetch('https://api.axnode.net/v2/api-keys', {
  method: 'GET',
  headers: { Authorization: `Bearer ${token}` }
});
const data = await res.json();
import requests

res = requests.get(
    'https://api.axnode.net/v2/api-keys',
    headers={'Authorization': f'Bearer {token}'},
)
data = res.json()

Response 200

{
  "data": [
    {
      "id": "ak_8f3k2Q9xLm",
      "name": "CI exporter",
      "prefix": "axs_live_7Hq2",
      "scopes": [
        "notes:read",
        "files:read"
      ],
      "last_used_at": "2026-10-13T21:12:40Z",
      "created_at": "2026-09-14T08:21:07Z"
    }
  ],
  "has_more": false,
  "next_cursor": null
}

POST /api-keys

Create a API key. Creates a API key.

Required scope: keys:write

Body parameters

FieldTypeDescription
name requiredstringLabel for the key.
prefixstringFirst characters of the secret, for identification.
scopesstring[]Granted scopes.
last_used_attimestamp|nullLast successful request.

Request

curl -X POST "https://api.axnode.net/v2/api-keys" \
  -H "Authorization: Bearer $AXSYNC_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"name": "CI exporter"}'
const res = await fetch('https://api.axnode.net/v2/api-keys', {
  method: 'POST',
  headers: { Authorization: `Bearer ${token}`, 'Content-Type': 'application/json' },
  body: JSON.stringify({"name": "CI exporter"})
});
const data = await res.json();
import requests

res = requests.post(
    'https://api.axnode.net/v2/api-keys',
    headers={'Authorization': f'Bearer {token}'}, json={"name": "CI exporter"},
)
data = res.json()

Response 201

{
  "id": "ak_8f3k2Q9xLm",
  "name": "CI exporter",
  "prefix": "axs_live_7Hq2",
  "scopes": [
    "notes:read",
    "files:read"
  ],
  "last_used_at": "2026-10-13T21:12:40Z",
  "created_at": "2026-09-14T08:21:07Z"
}

GET /api-keys/{id}

Retrieve a API key. Retrieves a API key by its identifier.

Required scope: keys:read

Request

curl -X GET "https://api.axnode.net/v2/api-keys/ak_8f3k2Q9xLm" \
  -H "Authorization: Bearer $AXSYNC_TOKEN"
const res = await fetch('https://api.axnode.net/v2/api-keys/ak_8f3k2Q9xLm', {
  method: 'GET',
  headers: { Authorization: `Bearer ${token}` }
});
const data = await res.json();
import requests

res = requests.get(
    'https://api.axnode.net/v2/api-keys/ak_8f3k2Q9xLm',
    headers={'Authorization': f'Bearer {token}'},
)
data = res.json()

Response 200

{
  "id": "ak_8f3k2Q9xLm",
  "name": "CI exporter",
  "prefix": "axs_live_7Hq2",
  "scopes": [
    "notes:read",
    "files:read"
  ],
  "last_used_at": "2026-10-13T21:12:40Z",
  "created_at": "2026-09-14T08:21:07Z"
}

DELETE /api-keys/{id}

Delete a API key. Permanently deletes a API key. This cannot be undone.

Required scope: keys:write

Request

curl -X DELETE "https://api.axnode.net/v2/api-keys/ak_8f3k2Q9xLm" \
  -H "Authorization: Bearer $AXSYNC_TOKEN"
const res = await fetch('https://api.axnode.net/v2/api-keys/ak_8f3k2Q9xLm', {
  method: 'DELETE',
  headers: { Authorization: `Bearer ${token}` }
});
const data = await res.json();
import requests

res = requests.delete(
    'https://api.axnode.net/v2/api-keys/ak_8f3k2Q9xLm',
    headers={'Authorization': f'Bearer {token}'},
)
data = res.json()

Response 200

{
  "deleted": true,
  "id": "ak_8f3k2Q9xLm"
}

POST /api-keys/{id}/rotate

Rotate an API key. Issues a new secret; the old one stays valid for 24 hours.

Required scope: keys:write

Body parameters

FieldTypeDescription
name requiredstringLabel for the key.
prefixstringFirst characters of the secret, for identification.
scopesstring[]Granted scopes.
last_used_attimestamp|nullLast successful request.

Request

curl -X POST "https://api.axnode.net/v2/api-keys/ak_8f3k2Q9xLm/rotate" \
  -H "Authorization: Bearer $AXSYNC_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"name": "CI exporter"}'
const res = await fetch('https://api.axnode.net/v2/api-keys/ak_8f3k2Q9xLm/rotate', {
  method: 'POST',
  headers: { Authorization: `Bearer ${token}`, 'Content-Type': 'application/json' },
  body: JSON.stringify({"name": "CI exporter"})
});
const data = await res.json();
import requests

res = requests.post(
    'https://api.axnode.net/v2/api-keys/ak_8f3k2Q9xLm/rotate',
    headers={'Authorization': f'Bearer {token}'}, json={"name": "CI exporter"},
)
data = res.json()

Response 200

{
  "id": "ak_8f3k2Q9xLm",
  "name": "CI exporter",
  "prefix": "axs_live_7Hq2",
  "scopes": [
    "notes:read",
    "files:read"
  ],
  "last_used_at": "2026-10-13T21:12:40Z",
  "created_at": "2026-09-14T08:21:07Z"
}