Skip to main content

GET /v1/api-keys

List all API keys for your account.
API key values are only shown once at creation time. The list endpoint shows masked versions.

Request

curl https://api.anyway.sh/v1/api-keys \
  -H "Authorization: Bearer YOUR_API_KEY"

Response

{
  "data": [
    {
      "id": "key_abc123",
      "name": "Production SDK",
      "key_prefix": "aw_prod_****",
      "project_id": "proj_abc123",
      "permissions": ["write:traces", "read:traces"],
      "last_used_at": "2024-01-15T10:30:00Z",
      "created_at": "2024-01-01T00:00:00Z",
      "expires_at": null
    },
    {
      "id": "key_def456",
      "name": "Dashboard Read-only",
      "key_prefix": "aw_read_****",
      "project_id": null,
      "permissions": ["read:traces", "read:metrics"],
      "last_used_at": "2024-01-14T15:20:00Z",
      "created_at": "2024-01-05T00:00:00Z",
      "expires_at": "2024-12-31T23:59:59Z"
    }
  ]
}

POST /v1/api-keys

Create a new API key.
The API key value is only returned once. Store it securely immediately.

Request

curl -X POST https://api.anyway.sh/v1/api-keys \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "New SDK Key",
    "project_id": "proj_abc123",
    "permissions": ["write:traces", "read:traces"]
  }'

Request Body

name
string
required
A descriptive name for the API key.
project_id
string
Scope the key to a specific project. Omit for account-wide access.
permissions
array
required
List of permissions. Available permissions:
  • write:traces - Ingest telemetry data
  • read:traces - Query traces
  • read:metrics - Query metrics
  • manage:projects - Create/update/delete projects
  • manage:api-keys - Create/revoke API keys
  • manage:webhooks - Configure webhooks
expires_at
string
Optional expiration date (ISO 8601). Key never expires if omitted.

Response

{
  "data": {
    "id": "key_ghi789",
    "name": "New SDK Key",
    "key": "aw_prod_abc123xyz789...",
    "key_prefix": "aw_prod_****",
    "project_id": "proj_abc123",
    "permissions": ["write:traces", "read:traces"],
    "created_at": "2024-01-15T10:30:00Z",
    "expires_at": null
  }
}
The full key value is only included in this response. Copy it now!

GET /v1/api-keys/:key_id

Get details about a specific API key.

Request

curl https://api.anyway.sh/v1/api-keys/key_abc123 \
  -H "Authorization: Bearer YOUR_API_KEY"

Response

{
  "data": {
    "id": "key_abc123",
    "name": "Production SDK",
    "key_prefix": "aw_prod_****",
    "project_id": "proj_abc123",
    "permissions": ["write:traces", "read:traces"],
    "last_used_at": "2024-01-15T10:30:00Z",
    "last_used_ip": "192.168.1.1",
    "usage_count": 15420,
    "created_at": "2024-01-01T00:00:00Z",
    "expires_at": null
  }
}

PATCH /v1/api-keys/:key_id

Update an API key’s name or permissions.

Request

curl -X PATCH https://api.anyway.sh/v1/api-keys/key_abc123 \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Updated Key Name",
    "permissions": ["write:traces", "read:traces", "read:metrics"]
  }'

Request Body

name
string
New name for the API key.
permissions
array
Updated list of permissions.

Response

{
  "data": {
    "id": "key_abc123",
    "name": "Updated Key Name",
    "permissions": ["write:traces", "read:traces", "read:metrics"],
    "updated_at": "2024-01-15T11:00:00Z"
  }
}

DELETE /v1/api-keys/:key_id

Revoke an API key. The key will immediately stop working.

Request

curl -X DELETE https://api.anyway.sh/v1/api-keys/key_abc123 \
  -H "Authorization: Bearer YOUR_API_KEY"

Response

HTTP/1.1 204 No Content

Errors

CodeDescription
not_foundAPI key does not exist
conflictCannot revoke the last admin key