Создать новый API-ключ
Создаёт новый API-ключ для аутентифицированного пользователя. Открытое значение
keyвозвращается только в этом ответе. Считайте его чувствительным значением, доступным только для записи: получить его повторно невозможно. Требуется ключ управления.
OpenAPI
yaml
openapi: 3.1.0
info:
contact:
email: support@openrouter.ai
name: OpenRouter Support
url: https://openrouter.ai/docs
description: OpenAI-compatible API with additional OpenRouter features
license:
name: MIT
url: https://opensource.org/licenses/MIT
title: OpenRouter API
version: 1.0.0
servers:
- description: Production server
url: https://openrouter.ai/api/v1
x-speakeasy-server-id: production
security:
- apiKey: []
tags:
- description: API key management endpoints
name: API Keys
- description: Analytics and usage endpoints
name: Analytics
- description: Anthropic Messages endpoints
name: Anthropic Messages
- description: BYOK endpoints
name: BYOK
- description: Benchmarks endpoints
name: Benchmarks
- description: Chat completion endpoints
name: Chat
- description: Task classification market-share endpoints
name: Classifications
- description: Credit management endpoints
name: Credits
- description: >-
Public OpenRouter usage datasets. Data returned by these endpoints is
licensed under CC BY 4.0 (https://creativecommons.org/licenses/by/4.0/):
reuse and republish it, including commercially, with attribution to
OpenRouter.
name: Datasets
- description: Text embedding endpoints
name: Embeddings
- description: Endpoint information
name: Endpoints
- description: Files endpoints
name: Files
- description: Generation history endpoints
name: Generations
- description: Guardrails endpoints
name: Guardrails
- description: Images endpoints
name: Images
- description: Model information endpoints
name: Models
- description: OAuth authentication endpoints
name: OAuth
- description: Observability endpoints
name: Observability
- description: Organization endpoints
name: Organization
- description: Presets endpoints
name: Presets
- description: Provider information endpoints
name: Providers
- description: Rerank endpoints
name: Rerank
- description: OpenAI-compatible Responses API endpoints
name: Responses
- description: SCIM endpoints
name: SCIM
- description: Speech-to-text endpoints
name: STT
x-displayName: Transcriptions
- description: Text-to-speech endpoints
name: TTS
x-displayName: Speech
- description: Video Generation endpoints
name: Video Generation
- description: Workspaces endpoints
name: Workspaces
- description: beta.Analytics endpoints
name: beta.Analytics
externalDocs:
description: OpenRouter Documentation
url: https://openrouter.ai/docs
paths:
/keys:
post:
tags:
- API Keys
summary: Create a new API key
description: >-
Create a new API key for the authenticated user. The plaintext `key` is
returned only in this response. Treat it as a write-only, sensitive
value; it cannot be retrieved later. [Management
key](/docs/guides/overview/auth/management-api-keys) required.
operationId: createKeys
requestBody:
content:
application/json:
example:
expires_at: '2027-12-31T23:59:59Z'
include_byok_in_limit: true
limit: 50
limit_reset: monthly
name: My New API Key
schema:
example:
expires_at: '2027-12-31T23:59:59Z'
include_byok_in_limit: true
limit: 50
limit_reset: monthly
name: My New API Key
properties:
creator_user_id:
description: >-
Optional user ID of the key creator. Only meaningful for
organization-owned keys where a specific member is creating
the key.
example: user_2dHFtVWx2n56w6HkM0000000000
minLength: 1
type:
- string
- 'null'
expires_at:
description: >-
Optional ISO 8601 UTC timestamp when the API key should
expire. Must be UTC, other timezones will be rejected
example: '2027-12-31T23:59:59Z'
format: date-time
type:
- string
- 'null'
include_byok_in_limit:
description: Whether to include BYOK usage in the limit
example: true
type: boolean
limit:
description: Optional spending limit for the API key in USD
example: 50
format: double
type:
- number
- 'null'
limit_reset:
description: >-
Type of limit reset for the API key (daily, weekly, monthly,
or null for no reset). Resets happen automatically at
midnight UTC, and weeks are Monday through Sunday.
enum:
- daily
- weekly
- monthly
- null
example: monthly
type:
- string
- 'null'
name:
description: Name for the new API key
example: My New API Key
minLength: 1
type: string
workspace_id:
description: >-
The workspace to create the API key in. Defaults to the
default workspace if not provided.
example: 0df9e665-d932-5740-b2c7-b52af166bc11
format: uuid
type: string
required:
- name
type: object
required: true
responses:
'201':
content:
application/json:
example:
data:
byok_usage: 0
byok_usage_daily: 0
byok_usage_monthly: 0
byok_usage_weekly: 0
created_at: '2025-08-24T10:30:00Z'
creator_user_id: user_2dHFtVWx2n56w6HkM0000000000
disabled: false
expires_at: '2027-12-31T23:59:59Z'
hash: >-
f01d52606dc8f0a8303a7b5cc3fa07109c2e346cec7c0a16b40de462992ce943
include_byok_in_limit: true
label: My New API Key
limit: 50
limit_remaining: 50
limit_reset: monthly
name: My New API Key
updated_at: null
usage: 0
usage_daily: 0
usage_monthly: 0
usage_weekly: 0
workspace_id: 0df9e665-d932-5740-b2c7-b52af166bc11
key: >-
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
schema:
example:
data:
byok_usage: 0
byok_usage_daily: 0
byok_usage_monthly: 0
byok_usage_weekly: 0
created_at: '2025-08-24T10:30:00Z'
creator_user_id: user_2dHFtVWx2n56w6HkM0000000000
disabled: false
expires_at: '2027-12-31T23:59:59Z'
hash: >-
f01d52606dc8f0a8303a7b5cc3fa07109c2e346cec7c0a16b40de462992ce943
include_byok_in_limit: true
label: My New API Key
limit: 50
limit_remaining: 50
limit_reset: monthly
name: My New API Key
updated_at: null
usage: 0
usage_daily: 0
usage_monthly: 0
usage_weekly: 0
workspace_id: 0df9e665-d932-5740-b2c7-b52af166bc11
key: >-
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
properties:
data:
description: The created API key information
example:
byok_usage: 17.38
byok_usage_daily: 17.38
byok_usage_monthly: 17.38
byok_usage_weekly: 17.38
created_at: '2025-08-24T10:30:00Z'
creator_user_id: user_2dHFtVWx2n56w6HkM0000000000
disabled: false
expires_at: '2027-12-31T23:59:59Z'
hash: >-
f01d52606dc8f0a8303a7b5cc3fa07109c2e346cec7c0a16b40de462992ce943
include_byok_in_limit: false
label: sk-or-v1-0e6...1c96
limit: 100
limit_remaining: 74.5
limit_reset: monthly
name: My Production Key
updated_at: '2025-08-24T15:45:00Z'
usage: 25.5
usage_daily: 25.5
usage_monthly: 25.5
usage_weekly: 25.5
workspace_id: 0df9e665-d932-5740-b2c7-b52af166bc11
properties:
byok_usage:
description: Total external BYOK usage (in USD) for the API key
example: 17.38
format: double
type: number
byok_usage_daily:
description: External BYOK usage (in USD) for the current UTC day
example: 17.38
format: double
type: number
byok_usage_monthly:
description: External BYOK usage (in USD) for current UTC month
example: 17.38
format: double
type: number
byok_usage_weekly:
description: >-
External BYOK usage (in USD) for the current UTC week
(Monday-Sunday)
example: 17.38
format: double
type: number
created_at:
description: ISO 8601 timestamp of when the API key was created
example: '2025-08-24T10:30:00Z'
type: string
creator_user_id:
description: >-
The user ID of the key creator. For organization-owned
keys, this is the member who created the key. For
individual users, this is the user's own ID.
example: user_2dHFtVWx2n56w6HkM0000000000
type:
- string
- 'null'
disabled:
description: Whether the API key is disabled
example: false
type: boolean
expires_at:
description: >-
ISO 8601 UTC timestamp when the API key expires, or
null if no expiration
example: '2027-12-31T23:59:59Z'
format: date-time
type:
- string
- 'null'
hash:
description: Unique hash identifier for the API key
example: >-
f01d52606dc8f0a8303a7b5cc3fa07109c2e346cec7c0a16b40de462992ce943
type: string
include_byok_in_limit:
description: >-
Whether to include external BYOK usage in the credit
limit
example: false
type: boolean
label:
description: Human-readable label for the API key
example: sk-or-v1-0e6...1c96
type: string
limit:
description: Spending limit for the API key in USD
example: 100
format: double
type:
- number
- 'null'
limit_remaining:
description: Remaining spending limit in USD
example: 74.5
format: double
type:
- number
- 'null'
limit_reset:
description: Type of limit reset for the API key
example: monthly
type:
- string
- 'null'
name:
description: Name of the API key
example: My Production Key
type: string
updated_at:
description: >-
ISO 8601 timestamp of when the API key was last
updated
example: '2025-08-24T15:45:00Z'
type:
- string
- 'null'
usage:
description: Total OpenRouter credit usage (in USD) for the API key
example: 25.5
format: double
type: number
usage_daily:
description: >-
OpenRouter credit usage (in USD) for the current UTC
day
example: 25.5
format: double
type: number
usage_monthly:
description: >-
OpenRouter credit usage (in USD) for the current UTC
month
example: 25.5
format: double
type: number
usage_weekly:
description: >-
OpenRouter credit usage (in USD) for the current UTC
week (Monday-Sunday)
example: 25.5
format: double
type: number
workspace_id:
description: The workspace ID this API key belongs to.
example: 0df9e665-d932-5740-b2c7-b52af166bc11
type: string
required:
- hash
- name
- label
- disabled
- limit
- limit_remaining
- limit_reset
- include_byok_in_limit
- usage
- usage_daily
- usage_weekly
- usage_monthly
- byok_usage
- byok_usage_daily
- byok_usage_weekly
- byok_usage_monthly
- created_at
- updated_at
- creator_user_id
- workspace_id
type: object
key:
description: The actual API key string (only shown once)
example: >-
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
type: string
required:
- data
- key
type: object
description: API key created successfully
'400':
content:
application/json:
example:
error:
code: 400
message: Invalid request parameters
schema:
$ref: '#/components/schemas/BadRequestResponse'
description: Bad Request - Invalid request parameters or malformed input
'401':
content:
application/json:
example:
error:
code: 401
message: Missing Authentication header
schema:
$ref: '#/components/schemas/UnauthorizedResponse'
description: Unauthorized - Authentication required or invalid credentials
'403':
content:
application/json:
example:
error:
code: 403
message: Only management keys can perform this operation
schema:
$ref: '#/components/schemas/ForbiddenResponse'
description: Forbidden - Authentication successful but insufficient permissions
'429':
content:
application/json:
example:
error:
code: 429
message: Rate limit exceeded
schema:
$ref: '#/components/schemas/TooManyRequestsResponse'
description: Too Many Requests - Rate limit exceeded
'500':
content:
application/json:
example:
error:
code: 500
message: Internal Server Error
schema:
$ref: '#/components/schemas/InternalServerResponse'
description: Internal Server Error - Unexpected server error
components:
schemas:
BadRequestResponse:
description: Bad Request - Invalid request parameters or malformed input
example:
error:
code: 400
message: Invalid request parameters
properties:
error:
$ref: '#/components/schemas/BadRequestResponseErrorData'
openrouter_metadata:
additionalProperties: {}
type:
- object
- 'null'
user_id:
type:
- string
- 'null'
required:
- error
type: object
UnauthorizedResponse:
description: Unauthorized - Authentication required or invalid credentials
example:
error:
code: 401
message: Missing Authentication header
properties:
error:
$ref: '#/components/schemas/UnauthorizedResponseErrorData'
openrouter_metadata:
additionalProperties: {}
type:
- object
- 'null'
user_id:
type:
- string
- 'null'
required:
- error
type: object
ForbiddenResponse:
description: Forbidden - Authentication successful but insufficient permissions
example:
error:
code: 403
message: Only management keys can perform this operation
properties:
error:
$ref: '#/components/schemas/ForbiddenResponseErrorData'
openrouter_metadata:
additionalProperties: {}
type:
- object
- 'null'
user_id:
type:
- string
- 'null'
required:
- error
type: object
TooManyRequestsResponse:
description: Too Many Requests - Rate limit exceeded
example:
error:
code: 429
message: Rate limit exceeded
properties:
error:
$ref: '#/components/schemas/TooManyRequestsResponseErrorData'
openrouter_metadata:
additionalProperties: {}
type:
- object
- 'null'
user_id:
type:
- string
- 'null'
required:
- error
type: object
InternalServerResponse:
description: Internal Server Error - Unexpected server error
example:
error:
code: 500
message: Internal Server Error
properties:
error:
$ref: '#/components/schemas/InternalServerResponseErrorData'
openrouter_metadata:
additionalProperties: {}
type:
- object
- 'null'
user_id:
type:
- string
- 'null'
required:
- error
type: object
BadRequestResponseErrorData:
description: Error data for BadRequestResponse
example:
code: 400
message: Invalid request parameters
properties:
code:
type: integer
message:
type: string
metadata:
additionalProperties: {}
type:
- object
- 'null'
required:
- code
- message
type: object
UnauthorizedResponseErrorData:
description: Error data for UnauthorizedResponse
example:
code: 401
message: Missing Authentication header
properties:
code:
type: integer
message:
type: string
metadata:
additionalProperties: {}
type:
- object
- 'null'
required:
- code
- message
type: object
ForbiddenResponseErrorData:
description: Error data for ForbiddenResponse
example:
code: 403
message: Only management keys can perform this operation
properties:
code:
type: integer
message:
type: string
metadata:
additionalProperties: {}
type:
- object
- 'null'
required:
- code
- message
type: object
TooManyRequestsResponseErrorData:
description: Error data for TooManyRequestsResponse
example:
code: 429
message: Rate limit exceeded
properties:
code:
type: integer
message:
type: string
metadata:
additionalProperties: {}
type:
- object
- 'null'
required:
- code
- message
type: object
InternalServerResponseErrorData:
description: Error data for InternalServerResponse
example:
code: 500
message: Internal Server Error
properties:
code:
type: integer
message:
type: string
metadata:
additionalProperties: {}
type:
- object
- 'null'
required:
- code
- message
type: object
securitySchemes:
apiKey:
description: API key as bearer token in Authorization header
scheme: bearer
type: http