Requesty API Keys API
Programmatically create, list, inspect, and delete API keys and manage their spending limits, labels, and expiration for governing gateway access.
Programmatically create, list, inspect, and delete API keys and manage their spending limits, labels, and expiration for governing gateway access.
openapi: 3.0.1
info:
title: Requesty Router API
description: >-
OpenAI-compatible LLM gateway that routes a single API across 300+ models
from providers such as OpenAI, Anthropic, DeepSeek, and Together AI, adding
intelligent routing, automatic fallbacks, response caching, spend controls,
and per-request cost observability. This specification covers the documented
inference (chat completions, embeddings, models) and management (API keys,
usage/analytics) endpoints of the Requesty Router.
termsOfService: https://www.requesty.ai/terms
contact:
name: Requesty Support
email: support@requesty.ai
version: '1.0'
servers:
- url: https://router.requesty.ai/v1
description: Global router
- url: https://router.eu.requesty.ai/v1
description: EU data residency router
security:
- bearerAuth: []
tags:
- name: Chat
description: OpenAI-compatible chat completions routed across providers.
- name: Embeddings
description: Vector embedding generation.
- name: Models
description: Catalog of routable models.
- name: API Keys
description: Programmatic management of Requesty API keys.
- name: Usage
description: Usage statistics and spend reporting.
paths:
/chat/completions:
post:
operationId: createChatCompletion
tags:
- Chat
summary: Create a chat completion
description: >-
Creates a model response for the given chat conversation. Requesty
routes the request to the best available provider for the requested
model, applying fallbacks and caching. OpenAI-compatible. Set
`stream: true` to receive the response as Server-Sent Events.
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/CreateChatCompletionRequest'
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/CreateChatCompletionResponse'
text/event-stream:
schema:
type: string
description: Server-Sent Events stream of chat completion chunks when stream=true.
'400':
description: Bad request
'401':
description: Unauthorized
'429':
description: Too many requests
/embeddings:
post:
operationId: createEmbedding
tags:
- Embeddings
summary: Create embeddings
description: Generates vector embeddings for the supplied input text using a routed embedding model.
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/CreateEmbeddingRequest'
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/CreateEmbeddingResponse'
/models:
get:
operationId: listModels
tags:
- Models
summary: List models
description: Lists the models available through the Requesty Router with metadata and pricing.
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/ListModelsResponse'
/api-keys:
get:
operationId: listApiKeys
tags:
- API Keys
summary: List API keys
description: Lists all API keys for the authenticated account.
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/ListApiKeysResponse'
post:
operationId: createApiKey
tags:
- API Keys
summary: Create an API key
description: Creates a new API key with optional spending limit, labels, and expiry.
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/CreateApiKeyRequest'
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/ApiKey'
/api-keys/{key_id}:
get:
operationId: getApiKey
tags:
- API Keys
summary: Get an API key
parameters:
- $ref: '#/components/parameters/KeyId'
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/ApiKey'
delete:
operationId: deleteApiKey
tags:
- API Keys
summary: Delete an API key
parameters:
- $ref: '#/components/parameters/KeyId'
responses:
'200':
description: OK
/api-keys/{key_id}/usage:
get:
operationId: getApiKeyUsage
tags:
- Usage
summary: Get API key usage
description: Retrieves usage statistics and spend for a specific API key.
parameters:
- $ref: '#/components/parameters/KeyId'
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/UsageReport'
/api-keys/{key_id}/limit:
patch:
operationId: updateApiKeyLimit
tags:
- API Keys
summary: Update API key spending limit
parameters:
- $ref: '#/components/parameters/KeyId'
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
limit:
type: number
description: Spending limit in USD.
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/ApiKey'
/organization/usage:
get:
operationId: getOrganizationUsage
tags:
- Usage
summary: Get organization usage
description: Retrieves aggregated usage statistics and spend across the organization.
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/UsageReport'
components:
securitySchemes:
bearerAuth:
type: http
scheme: bearer
description: Requesty API key passed as a Bearer token in the Authorization header.
parameters:
KeyId:
name: key_id
in: path
required: true
description: Identifier of the API key.
schema:
type: string
schemas:
CreateChatCompletionRequest:
type: object
required:
- messages
properties:
model:
type: string
description: Routed model identifier, e.g. `openai/gpt-4o-mini` or `anthropic/claude-sonnet-4-20250514`. Defaults to `openai/gpt-4o-mini`.
default: openai/gpt-4o-mini
messages:
type: array
description: A list of messages comprising the conversation so far.
items:
$ref: '#/components/schemas/ChatMessage'
max_tokens:
type: integer
description: Maximum number of tokens to generate.
temperature:
type: number
description: Sampling temperature between 0 and 2.
default: 1
top_p:
type: number
description: Nucleus sampling probability mass.
stream:
type: boolean
description: If true, partial deltas are streamed as Server-Sent Events.
default: false
tools:
type: array
description: A list of tools the model may call, such as custom functions or built-in web_search.
items:
type: object
tool_choice:
description: Controls which (if any) tool is called by the model.
oneOf:
- type: string
- type: object
response_format:
type: object
description: An object specifying the format the model must output (e.g. JSON / structured outputs), where supported by the routed model.
ChatMessage:
type: object
required:
- role
- content
properties:
role:
type: string
enum:
- system
- user
- assistant
- tool
content:
description: The contents of the message; string or array of content parts.
oneOf:
- type: string
- type: array
items:
type: object
CreateChatCompletionResponse:
type: object
properties:
id:
type: string
object:
type: string
example: chat.completion
created:
type: integer
model:
type: string
choices:
type: array
items:
type: object
properties:
index:
type: integer
message:
$ref: '#/components/schemas/ChatMessage'
finish_reason:
type: string
usage:
$ref: '#/components/schemas/Usage'
Usage:
type: object
properties:
prompt_tokens:
type: integer
completion_tokens:
type: integer
total_tokens:
type: integer
cost:
type: number
description: Requesty USD cost for the request.
CreateEmbeddingRequest:
type: object
required:
- model
- input
properties:
model:
type: string
input:
description: Input text or array of text to embed.
oneOf:
- type: string
- type: array
items:
type: string
CreateEmbeddingResponse:
type: object
properties:
object:
type: string
example: list
data:
type: array
items:
type: object
properties:
object:
type: string
example: embedding
index:
type: integer
embedding:
type: array
items:
type: number
model:
type: string
usage:
$ref: '#/components/schemas/Usage'
ListModelsResponse:
type: object
properties:
object:
type: string
example: list
data:
type: array
items:
$ref: '#/components/schemas/Model'
Model:
type: object
properties:
id:
type: string
description: Routed model identifier, e.g. `openai/gpt-4o`.
object:
type: string
example: model
owned_by:
type: string
description: Upstream provider.
context_window:
type: integer
description: Maximum context length supported.
input_price:
type: number
description: Input price per million tokens in USD.
output_price:
type: number
description: Output price per million tokens in USD.
ListApiKeysResponse:
type: object
properties:
data:
type: array
items:
$ref: '#/components/schemas/ApiKey'
CreateApiKeyRequest:
type: object
properties:
name:
type: string
limit:
type: number
description: Optional spending limit in USD.
labels:
type: array
items:
type: string
expiry:
type: string
format: date-time
ApiKey:
type: object
properties:
id:
type: string
name:
type: string
key:
type: string
description: The API key value, returned only on creation.
limit:
type: number
labels:
type: array
items:
type: string
expiry:
type: string
format: date-time
created_at:
type: string
format: date-time
UsageReport:
type: object
properties:
total_cost:
type: number
description: Total spend in USD over the reporting window.
total_requests:
type: integer
total_tokens:
type: integer
breakdown:
type: array
description: Per-model or per-key usage breakdown.
items:
type: object
properties:
model:
type: string
requests:
type: integer
tokens:
type: integer
cost:
type: number