List Projects
GET/v1/projects
API key requiredSuccess 200
Parameters
| Name | Type | Description |
|---|---|---|
limitquery | integer | Default 50; range 1–200 |
cursorquery | string | length ≤ 256; nullable |
afterquery | string | length ≤ 256; nullable |
X-Project-IDheader | string | The project to act on; the default project when omitted; nullable |
Response 200 application/json
| Name | Type | Description |
|---|---|---|
datarequired | array<object> | |
data[].idrequired | string | |
data[].organization_idrequired | string | |
data[].namerequired | string | |
data[].created_atrequired | number | |
next_cursor | string | Opaque; pass as cursor (or the after alias) for the next page; nullable |
has_more | boolean | Default false |
Example
curl "https://axiomlab.online/v1/projects" \ -H "Authorization: Bearer $AZIMO_API_KEY"
Create Project
POST/v1/projects
API key requiredSuccess 201
Parameters
| Name | Type | Description |
|---|---|---|
Idempotency-Keyheader | string | A unique value you generate and keep; reuse it when retrying so the request never runs twice; length 1–128; nullable |
X-Project-IDheader | string | The project to act on; the default project when omitted; nullable |
Request body application/json
| Name | Type | Description |
|---|---|---|
namerequired | string | length 1–120 |
Response 201 application/json
| Name | Type | Description |
|---|---|---|
idrequired | string | |
organization_idrequired | string | |
namerequired | string | |
created_atrequired | number |
Example
curl -X POST "https://axiomlab.online/v1/projects" \
-H "Authorization: Bearer $AZIMO_API_KEY" \
-H "Idempotency-Key: $(uuidgen)" \
-H "Content-Type: application/json" \
-d '{"name": "<name>"}'Delete Project
DELETE/v1/projects/{project_id}
API key requiredSuccess 200
Parameters
| Name | Type | Description |
|---|---|---|
project_idrequiredpath | string | |
X-Project-IDheader | string | The project to act on; the default project when omitted; nullable |
Response 200 application/json
| Name | Type | Description |
|---|---|---|
idrequired | string | |
deleted | boolean | Default true |
Example
curl -X DELETE "https://axiomlab.online/v1/projects/<project_id>" \ -H "Authorization: Bearer $AZIMO_API_KEY"
List Keys
GET/v1/api-keys
API key requiredSuccess 200
Parameters
| Name | Type | Description |
|---|---|---|
limitquery | integer | Default 50; range 1–200 |
cursorquery | string | length ≤ 256; nullable |
afterquery | string | length ≤ 256; nullable |
X-Project-IDheader | string | The project to act on; the default project when omitted; nullable |
Response 200 application/json
| Name | Type | Description |
|---|---|---|
datarequired | array<object> | |
data[].idrequired | string | |
data[].namerequired | string | Label given at creation (also returned as owner) |
data[].ownerrequired | string | |
data[].prefixrequired | string | nullable |
data[].organization_idrequired | string | nullable |
data[].project_id | string | Set when the key is bound to one project; nullable |
data[].rolerequired | string | One of: owner editor viewer |
data[].activerequired | boolean | |
data[].created_atrequired | number | nullable |
data[].last_used_at | number | nullable |
data[].expires_at | number | nullable |
data[].revoked_at | number | nullable |
next_cursor | string | Opaque; pass as cursor (or the after alias) for the next page; nullable |
has_more | boolean | Default false |
Example
curl "https://axiomlab.online/v1/api-keys" \ -H "Authorization: Bearer $AZIMO_API_KEY"
Create Key
POST/v1/api-keys
API key requiredSuccess 201
Parameters
| Name | Type | Description |
|---|---|---|
Idempotency-Keyheader | string | A unique value you generate and keep; reuse it when retrying so the request never runs twice; length 1–128; nullable |
X-Project-IDheader | string | The project to act on; the default project when omitted; nullable |
Request body application/json
| Name | Type | Description |
|---|---|---|
namerequired | string | length 1–120 |
role | string | One of: owner editor viewer; Default editor |
project_id | string | nullable |
monthly_budget_usd | number | range ≥ 0; nullable |
rate_per_hour | integer | range ≥ 1; nullable |
Response 201 application/json
| Name | Type | Description |
|---|---|---|
idrequired | string | |
namerequired | string | Label given at creation (also returned as owner) |
ownerrequired | string | |
prefixrequired | string | nullable |
organization_idrequired | string | nullable |
project_id | string | Set when the key is bound to one project; nullable |
rolerequired | string | One of: owner editor viewer |
activerequired | boolean | |
created_atrequired | number | nullable |
last_used_at | number | nullable |
expires_at | number | nullable |
revoked_at | number | nullable |
keyrequired | string | The bearer secret; shown once (an idempotent replay returns the same value) |
Example
curl -X POST "https://axiomlab.online/v1/api-keys" \
-H "Authorization: Bearer $AZIMO_API_KEY" \
-H "Idempotency-Key: $(uuidgen)" \
-H "Content-Type: application/json" \
-d '{"name": "<name>"}'Rotate Key
POST/v1/api-keys/{key_id}/rotate
API key requiredSuccess 200
The old secret dies at once, or after grace_seconds so running fleets can switch without downtime.
Parameters
| Name | Type | Description |
|---|---|---|
key_idrequiredpath | string | |
grace_secondsquery | integer | Default 0; range 0–604800 |
Idempotency-Keyheader | string | A unique value you generate and keep; reuse it when retrying so the request never runs twice; length 1–128; nullable |
X-Project-IDheader | string | The project to act on; the default project when omitted; nullable |
Response 200 application/json
| Name | Type | Description |
|---|---|---|
idrequired | string | |
keyrequired | string | |
previous_idrequired | string | |
previous_expires_inrequired | integer | nullable |
Example
curl -X POST "https://axiomlab.online/v1/api-keys/<key_id>/rotate" \ -H "Authorization: Bearer $AZIMO_API_KEY" \ -H "Idempotency-Key: $(uuidgen)"
Revoke Key
DELETE/v1/api-keys/{key_id}
API key requiredSuccess 200
Parameters
| Name | Type | Description |
|---|---|---|
key_idrequiredpath | string | |
X-Project-IDheader | string | The project to act on; the default project when omitted; nullable |
Response 200 application/json
| Name | Type | Description |
|---|---|---|
idrequired | string | |
active | boolean | Default false |
Example
curl -X DELETE "https://axiomlab.online/v1/api-keys/<key_id>" \ -H "Authorization: Bearer $AZIMO_API_KEY"
Audit Log
GET/v1/audit
API key requiredSuccess 200
Identity and configuration changes for this organization (keys, projects, webhooks), oldest first from after.
Parameters
| Name | Type | Description |
|---|---|---|
afterquery | integer | Default 0; range ≥ 0 |
limitquery | integer | Default 50; range 1–200 |
X-Project-IDheader | string | The project to act on; the default project when omitted; nullable |
Response 200 application/json
| Name | Type | Description |
|---|---|---|
datarequired | array<object> | |
data[].idrequired | string | |
data[].sequencerequired | integer | |
data[].typerequired | string | |
data[].created_atrequired | number | |
data[].api_versionrequired | string | |
data[].project_idrequired | string | nullable |
data[].datarequired | object | |
next_cursorrequired | integer | Sequence number to pass as after; unchanged when the page is empty |
has_more | boolean | Default false |
Example
curl "https://axiomlab.online/v1/audit" \ -H "Authorization: Bearer $AZIMO_API_KEY"