Skip to main content
POST
/
v1
/
organization
/
api-keys
Create API Key
curl --request POST \
  --url https://api.signa.so/v1/organization/api-keys \
  --header 'Authorization: Bearer <token>' \
  --header 'Content-Type: application/json' \
  --data '
{
  "name": "<string>",
  "scopes": [
    "<string>"
  ],
  "expires_at": "<string>"
}
'
{
  "id": "key_Pe5hI9jK",
  "object": "api_key",
  "name": "Analytics Dashboard",
  "key": "sig_a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6e7f8a9b0c1d2e3f4a5b6",
  "prefix": "sig_a1b2",
  "scopes": ["trademarks:read", "billing:read"],
  "created_at": "2026-03-24T16:00:00Z",
  "expires_at": null,
  "request_id": "req_wP2gH8iJ"
}

Overview

Creates a new API key for your organization. The full key secret is returned only once in the response; it cannot be retrieved again. Store it securely immediately after creation. You can assign a name for identification, specific scopes to limit access, and an optional expiration date.

Request Body

name
string
required
Human-readable name for the key (e.g., “Production Backend”)
scopes
string[]
required
Authorized scopes. Available scopes: trademarks:read, api-keys:manage, billing:read
expires_at
string
Optional ISO timestamp for key expiration. Omit for a non-expiring key.

Response

response
object
{
  "id": "key_Pe5hI9jK",
  "object": "api_key",
  "name": "Analytics Dashboard",
  "key": "sig_a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6e7f8a9b0c1d2e3f4a5b6",
  "prefix": "sig_a1b2",
  "scopes": ["trademarks:read", "billing:read"],
  "created_at": "2026-03-24T16:00:00Z",
  "expires_at": null,
  "request_id": "req_wP2gH8iJ"
}

Code Examples

curl -X POST https://api.signa.so/v1/organization/api-keys \
  -H "Authorization: Bearer sig_xxxxxxxxxxxx" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Analytics Dashboard",
    "scopes": ["trademarks:read", "billing:read"]
  }'

Errors

StatusTypeDescription
400validation_errorMissing name or invalid scope values
401unauthorizedMissing or invalid API key
403forbiddenInsufficient permissions to create keys
409conflictA key with the same name already exists
429rate_limitedToo many requests