Unkey · Schema

Unkey API Key

Represents an API key managed by the Unkey platform, including its configuration, permissions, rate limits, and credit settings.

APIKeysRate LimitingAuthenticationDeveloper PlatformAccess ControlIdentityAnalytics

Properties

Name Type Description
id string Unique identifier for the key
apiId string ID of the API namespace this key belongs to
workspaceId string ID of the workspace this key belongs to
name string Human-readable name for the key
prefix string Key prefix shown before the hash (e.g. sk, pk, test)
start string First few characters of the key for identification without exposing the full key
externalId string External identifier linking the key to a user or organization in your system
identityId string ID of the identity this key belongs to
meta object Arbitrary metadata associated with the key
roles array Roles assigned to this key
permissions array Permissions directly assigned to this key
enabled boolean Whether the key is currently active
plaintext string Plaintext key value — only returned on creation, never stored
hash object Key hash configuration
createdAt integer Unix timestamp (milliseconds) when the key was created
updatedAt integer Unix timestamp (milliseconds) when the key was last updated
expires integernull Unix timestamp (milliseconds) when the key expires, or null if it does not expire
deletedAt integernull Unix timestamp (milliseconds) when the key was deleted
ratelimit object Rate limit configuration for this key
credits object Credit/usage quota configuration for this key
View JSON Schema on GitHub

JSON Schema

unkey-key-schema.json Raw ↑
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://api.unkey.com/schemas/key",
  "title": "Unkey API Key",
  "description": "Represents an API key managed by the Unkey platform, including its configuration, permissions, rate limits, and credit settings.",
  "type": "object",
  "required": ["id", "apiId", "workspaceId", "createdAt"],
  "properties": {
    "id": {
      "type": "string",
      "description": "Unique identifier for the key",
      "pattern": "^key_[a-zA-Z0-9]+$",
      "example": "key_1234567890abcdef"
    },
    "apiId": {
      "type": "string",
      "description": "ID of the API namespace this key belongs to",
      "pattern": "^api_[a-zA-Z0-9]+$",
      "example": "api_1234567890"
    },
    "workspaceId": {
      "type": "string",
      "description": "ID of the workspace this key belongs to",
      "example": "ws_9876543210"
    },
    "name": {
      "type": "string",
      "description": "Human-readable name for the key",
      "example": "Production API Key"
    },
    "prefix": {
      "type": "string",
      "description": "Key prefix shown before the hash (e.g. sk, pk, test)",
      "example": "sk"
    },
    "start": {
      "type": "string",
      "description": "First few characters of the key for identification without exposing the full key",
      "example": "sk_abc..."
    },
    "externalId": {
      "type": "string",
      "description": "External identifier linking the key to a user or organization in your system",
      "example": "user_abc123"
    },
    "identityId": {
      "type": "string",
      "description": "ID of the identity this key belongs to",
      "example": "identity_xyz789"
    },
    "meta": {
      "type": "object",
      "description": "Arbitrary metadata associated with the key",
      "additionalProperties": true,
      "example": {"plan": "pro", "userId": "user_abc123"}
    },
    "roles": {
      "type": "array",
      "description": "Roles assigned to this key",
      "items": {"type": "string"},
      "example": ["read", "write"]
    },
    "permissions": {
      "type": "array",
      "description": "Permissions directly assigned to this key",
      "items": {"type": "string"},
      "example": ["data.read", "data.write"]
    },
    "enabled": {
      "type": "boolean",
      "description": "Whether the key is currently active",
      "default": true
    },
    "plaintext": {
      "type": "string",
      "description": "Plaintext key value — only returned on creation, never stored",
      "example": "sk_abcdefghijklmnopqrstuvwxyz1234567890"
    },
    "hash": {
      "type": "object",
      "description": "Key hash configuration",
      "properties": {
        "value": {"type": "string", "description": "SHA-256 hash of the key"},
        "variant": {"type": "string", "description": "Hash variant used"}
      }
    },
    "createdAt": {
      "type": "integer",
      "description": "Unix timestamp (milliseconds) when the key was created",
      "example": 1714694460000
    },
    "updatedAt": {
      "type": "integer",
      "description": "Unix timestamp (milliseconds) when the key was last updated"
    },
    "expires": {
      "type": ["integer", "null"],
      "description": "Unix timestamp (milliseconds) when the key expires, or null if it does not expire",
      "example": 1893456000000
    },
    "deletedAt": {
      "type": ["integer", "null"],
      "description": "Unix timestamp (milliseconds) when the key was deleted"
    },
    "ratelimit": {
      "type": "object",
      "description": "Rate limit configuration for this key",
      "properties": {
        "async": {
          "type": "boolean",
          "description": "Whether rate limit updates are applied asynchronously"
        },
        "limit": {
          "type": "integer",
          "description": "Maximum number of requests in the window",
          "minimum": 1,
          "example": 1000
        },
        "duration": {
          "type": "integer",
          "description": "Rate limit window duration in milliseconds",
          "minimum": 1,
          "example": 60000
        },
        "remaining": {
          "type": "integer",
          "description": "Remaining requests in the current window"
        },
        "reset": {
          "type": "integer",
          "description": "Unix timestamp (milliseconds) when the window resets"
        }
      }
    },
    "credits": {
      "type": "object",
      "description": "Credit/usage quota configuration for this key",
      "properties": {
        "amount": {
          "type": "integer",
          "description": "Current credit amount remaining",
          "minimum": 0
        },
        "refillAmount": {
          "type": "integer",
          "description": "Amount to refill on each refill cycle",
          "minimum": 0
        },
        "refillDay": {
          "type": "integer",
          "description": "Day of month to refill credits (1-31)",
          "minimum": 1,
          "maximum": 31
        },
        "lastRefillAt": {
          "type": "integer",
          "description": "Unix timestamp (milliseconds) of last refill"
        }
      }
    }
  },
  "additionalProperties": false
}

Work with this as data

Every JSON Schema here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for schemas

4 MCP tools reach this
  • find_json_schemasBrowse and filter every JSON Schema in the catalog.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools

Call it yourself

curl for this page
This JSON Schema
curl "https://apis.io/api/v1/json-schemas/unkey-key"
All schemas
curl "https://apis.io/api/v1/json-schemas?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no email required.

A second provider on the same verified email joins the account you already have.