Jina AI Model List API
Every model this API serves, in OpenRouter-compatible form: identifiers, input and output modalities, context lengths and prices. Read it before hardcoding a model name — the catalogue moves.
Every model this API serves, in OpenRouter-compatible form: identifiers, input and output modalities, context lengths and prices. Read it before hardcoding a model name — the catalogue moves.
Every API here is available over the APIs.io API and to AI agents over MCP.
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
find_apisBrowse and filter every API in the catalog.get_api_artifactsOne API's artifacts, grouped by type.get_openapiThe primary OpenAPI for this API.find_similar_apisAPIs that look like this one.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.curl "https://apis.io/api/v1/apis/jina-ai:jina-ai-model-list-api"
curl "https://apis.io/api/v1/apis?limit=25"
Calls without X-API-Key need no key. Calls with it need a paid plan — get a key.
Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.
A second provider on the same verified email joins the account you already have.
openapi: 3.2.0
info:
title: Jina AI Model List API
description: 'Jina AI APIs on three hosts: Reader (`r.jina.ai`), Search (`s.jina.ai`) and the Search Foundation models (`api.jina.ai`). | I want to | Endpoint |
|---|---|
| Read a web page or PDF as LLM-friendly Markdown | GET r.jina.ai/{url} · POST r.jina.ai |
| Search the web and get the result pages as text | GET s.jina.ai/{q} · POST s.jina.ai/search |
| Embed text, images, audio, video or PDFs | POST /v1/embeddings |
| Rerank candidates against a query | POST /v1/rerank |
| Transcribe a document image (OCR) | POST /v1/chat/completions |
| Embed a large dataset asynchronously | POST /v1/batch/embeddings |
| See which models exist and what they cost | GET /v1/models |
**Authentication.** Send `Authorization: Bearer `. Get a key at https://jina.ai/?sui=apikey. Reader also answers without a key, at a lower rate limit; Search needs one. **EU.** `eu.r.jina.ai` and `eu.s.jina.ai` keep all processing inside the EU. **For LLMs.** `curl docs.jina.ai` returns the meta-prompt, a plain-text guide to these APIs written for coding agents. This reference as Markdown: `curl docs.jina.ai/api.md`. **Rate limits.** r.jina.ai 500 RPM (5k premium), s.jina.ai 100 RPM (1k premium). _Merged from https://api.jina.ai/openapi.json, https://r.jina.ai/openapi.json, https://s.jina.ai/openapi.json. Plain text: https://docs.jina.ai/api.md. Spec: https://docs.jina.ai/openapi.json._
Best-in-class embeddings, rerankers and document models for multilingual and multimodal search. ## Capabilities
- **Text embeddings** — dense vectors for semantic search, similarity, clustering and classification, in 100+ languages. - **Multimodal embeddings** — images, video, audio and PDFs embedded into the same space as text, so a query in one modality retrieves another. - **Reranking** — score a query against a candidate set and reorder it; more accurate than embedding similarity, and the usual second stage after it. - **Document OCR** — read a page image and return its content as text or markdown, with tables and layout preserved, over the OpenAI chat completions schema. - **Batch embeddings** — the same embedding models over JSONL, asynchronously, for workloads too large to send inline. ## Authentication
Every endpoint except `GET /v1/models` requires a key:
```
Authorization: Bearer jina_YOUR_API_KEY
```
Get one at jina.ai/api-dashboard/key-manager. ## Rate limits
Requests per minute and tokens per minute. Anything over a limit answers `429`. | Endpoint | Free | Paid | Premium |
|---|---|---|---|
| `/v1/embeddings` | 500 RPM · 1M TPM | 500 RPM · 10M TPM | 5,000 RPM · 100M TPM |
| `/v1/rerank` | 500 RPM · 1M TPM | 500 RPM · 10M TPM | 5,000 RPM · 100M TPM |
| `/v1/chat/completions` | 100 RPM · 500K TPM | 100 RPM · 5M TPM | 1,000 RPM · 50M TPM |
## Errors
Failures carry a `detail`, a `code` from the table below and the `request_id` to quote in a support request. `/v1/chat/completions` is the exception: it answers in OpenAI''s error envelope, with the same code inside it.'
version: 2026.10.13.1624
servers:
- url: https://api.jina.ai
tags:
- name: Model List
description: 'Every model this API serves, in OpenRouter-compatible form: identifiers, input and output modalities, context lengths and prices. Read it before hardcoding a model name — the catalogue moves.'
paths:
/v1/models:
get:
tags:
- Model List
summary: List Models
description: Every model in the catalogue, with its modalities, limits and price.
operationId: list_models_v1_models_get
responses:
'200':
description: Successful Response
content:
application/json:
schema:
$ref: '#/components/schemas/ModelListResponse'
'400':
description: 'Bad Request: `INPUT_INVALID_LABELS`, `INPUT_LABEL_LIMIT_EXCEEDED`, `INPUT_MODEL_NOT_FOUND`, `INPUT_TOKEN_LIMIT_EXCEEDED`'
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'401':
description: 'Unauthorized: `AUTH_INVALID_API_KEY`, `AUTH_INVALID_FORMAT`, `AUTH_MISSING_API_KEY`'
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'403':
description: 'Forbidden: `AUTHZ_INSUFFICIENT_BALANCE`, `AUTHZ_RESOURCE_LIMIT_EXCEEDED`'
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'404':
description: 'Not Found: `RESOURCE_NOT_FOUND`'
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'409':
description: 'Conflict: `CONFLICT_RESOURCE_BUSY`'
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'422':
description: The request body failed schema validation. `errors` names each field.
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'429':
description: 'Too Many Requests: `RATE_CONCURRENCY_LIMIT_EXCEEDED`, `RATE_IP_LIMIT_EXCEEDED`, `RATE_REQUEST_LIMIT_EXCEEDED`, `RATE_TOKEN_LIMIT_EXCEEDED`'
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'500':
description: 'Internal Server Error: `INTERNAL_ERROR`'
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'503':
description: 'Service Unavailable: `SERVICE_UNAVAILABLE`'
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'504':
description: 'Gateway Timeout: `SERVICE_TIMEOUT`'
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
/v1/models/{model_id}:
get:
tags:
- Model List
summary: Get Model
description: 'One model by id, in full (`jina-ai/jina-embeddings-v3`) or short
(`jina-embeddings-v3`) form.'
operationId: get_model_v1_models__model_id__get
parameters:
- name: model_id
in: path
required: true
schema:
type: string
title: Model Id
responses:
'200':
description: Successful Response
content:
application/json:
schema:
$ref: '#/components/schemas/ModelInfo'
'400':
description: 'Bad Request: `INPUT_INVALID_LABELS`, `INPUT_LABEL_LIMIT_EXCEEDED`, `INPUT_MODEL_NOT_FOUND`, `INPUT_TOKEN_LIMIT_EXCEEDED`'
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'401':
description: 'Unauthorized: `AUTH_INVALID_API_KEY`, `AUTH_INVALID_FORMAT`, `AUTH_MISSING_API_KEY`'
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'403':
description: 'Forbidden: `AUTHZ_INSUFFICIENT_BALANCE`, `AUTHZ_RESOURCE_LIMIT_EXCEEDED`'
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'404':
description: 'Not Found: `RESOURCE_NOT_FOUND`'
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'409':
description: 'Conflict: `CONFLICT_RESOURCE_BUSY`'
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'422':
description: The request body failed schema validation. `errors` names each field.
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'429':
description: 'Too Many Requests: `RATE_CONCURRENCY_LIMIT_EXCEEDED`, `RATE_IP_LIMIT_EXCEEDED`, `RATE_REQUEST_LIMIT_EXCEEDED`, `RATE_TOKEN_LIMIT_EXCEEDED`'
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'500':
description: 'Internal Server Error: `INTERNAL_ERROR`'
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'503':
description: 'Service Unavailable: `SERVICE_UNAVAILABLE`'
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'504':
description: 'Gateway Timeout: `SERVICE_TIMEOUT`'
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
components:
schemas:
ModelInfo:
properties:
id:
type: string
title: Id
description: Unique model identifier (e.g., `jina-ai/jina-embeddings-v3`).
hugging_face_id:
type: string
title: Hugging Face Id
description: HuggingFace model ID.
name:
type: string
title: Name
description: Human-readable model name.
created:
type: integer
title: Created
description: Unix timestamp when the model was released.
input_modalities:
items:
type: string
type: array
title: Input Modalities
description: 'Supported input modalities: `text`, `image`, `video`, `audio`.'
output_modalities:
items:
type: string
type: array
title: Output Modalities
description: 'Output types: `embeddings`, `text`.'
quantization:
type: string
title: Quantization
description: Quantization level, if any.
context_length:
type: integer
title: Context Length
description: Maximum context length in tokens.
max_output_length:
type: integer
title: Max Output Length
description: 'Largest output the model produces: embedding dimensions for an embedding model, tokens for a generative one. `0` where it does not apply.'
pricing:
$ref: '#/components/schemas/ModelPricing'
description: Pricing information.
supported_sampling_parameters:
items:
type: string
type: array
title: Supported Sampling Parameters
description: Supported sampling parameters.
supported_features:
items:
type: string
type: array
title: Supported Features
description: Supported features.
description:
type: string
title: Description
description: Model description.
datacenters:
items:
$ref: '#/components/schemas/ModelDatacenter'
type: array
title: Datacenters
description: Available datacenter locations.
type: object
required:
- id
- hugging_face_id
- name
- created
- input_modalities
- output_modalities
- quantization
- context_length
- max_output_length
- pricing
- supported_sampling_parameters
- supported_features
- description
- datacenters
title: ModelInfo
description: Information about a single model.
ErrorResponse:
properties:
detail:
type: string
title: Detail
description: Human-readable error message.
examples:
- Invalid API key. Verify your API key at https://jina.ai/api-dashboard/key-manager or generate a new one.
code:
anyOf:
- type: string
- type: 'null'
title: Code
description: Machine-readable error code, for programmatic handling.
examples:
- AUTH_INVALID_API_KEY
request_id:
anyOf:
- type: string
- type: 'null'
title: Request Id
description: Identifier for this request, quote it in support requests.
examples:
- 03f58cd9da22fabf
errors:
anyOf:
- items:
$ref: '#/components/schemas/FieldError'
type: array
- type: 'null'
title: Errors
description: Per-field detail. Present on 422 only; `detail` summarises it.
type: object
required:
- detail
title: ErrorResponse
description: Failure shape for every endpoint except `/v1/chat/completions`.
ModelListResponse:
properties:
data:
items:
$ref: '#/components/schemas/ModelInfo'
type: array
title: Data
description: List of available models.
type: object
required:
- data
title: ModelListResponse
description: Response containing list of available models.
example:
data:
- context_length: 8192
created: 1725840000
datacenters:
- country_code: US
description: jina-embeddings-v3 is a multilingual embedding model...
hugging_face_id: jinaai/jina-embeddings-v3
id: jina-ai/jina-embeddings-v3
input_modalities:
- text
max_output_length: 1024
name: 'Jina AI: Jina Embeddings v3'
output_modalities:
- embeddings
pricing:
completion: '0'
image: '0'
input_cache_read: '0'
input_cache_write: '0'
prompt: '0.00000005'
request: '0'
quantization: ''
supported_features: []
supported_sampling_parameters: []
ModelPricing:
properties:
prompt:
type: string
title: Prompt
description: USD per input token.
completion:
type: string
title: Completion
description: USD per output token.
image:
type: string
title: Image
description: USD per image.
request:
type: string
title: Request
description: USD per request.
input_cache_read:
type: string
title: Input Cache Read
description: USD per cached input token read.
input_cache_write:
type: string
title: Input Cache Write
description: USD per cached input token written.
type: object
required:
- prompt
- completion
- image
- request
- input_cache_read
- input_cache_write
title: ModelPricing
description: Pricing information for a model.
FieldError:
properties:
field:
type: string
title: Field
description: Path to the field, e.g. `body -> input -> 0`.
message:
type: string
title: Message
description: Why the value was rejected.
type:
type: string
title: Type
description: Validator that rejected it, e.g. `string_type`.
input:
anyOf:
- {}
- type: 'null'
title: Input
description: The rejected value. Long strings are truncated and containers dropped.
type: object
required:
- field
- message
- type
title: FieldError
description: One rejected field, as carried in a 422.
ModelDatacenter:
properties:
country_code:
type: string
title: Country Code
description: ISO country code of the datacenter.
type: object
required:
- country_code
title: ModelDatacenter
description: Datacenter location for a model.
securitySchemes:
HTTPBearer:
type: http
scheme: bearer
x-tagGroups:
- name: Reader API (r.jina.ai)
tags:
- Reader
- name: Search API (s.jina.ai)
tags:
- Search
- name: Search Foundation API (api.jina.ai)
tags:
- Model List
- Search Foundation Models
- Generative Models
- Batch Embeddings