Requesty Models API
Lists the 300+ models routable through the Requesty gateway with their identifiers, provider, context length, and per-token pricing.
Lists the 300+ models routable through the Requesty gateway with their identifiers, provider, context length, and per-token pricing.
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