Getting started
Models & pricing
Select callable model IDs and compare current reference metadata.
On this page
This page is for developers choosing a callable model and estimating the likely cost before integration.
OpenAI-compatible endpoints accept either a complete author/model ID or a bare model name. The gateway resolves exact matches from its alias table. For example, gpt-5.4-nano resolves to openai/gpt-5.4-nano, deepseek-v4-flash to deepseek/deepseek-v4-flash, qwen3.5-flash to qwen/qwen3.5-flash-02-23, and claude-haiku-4.5 to anthropic/claude-haiku-4.5. A bare name absent from the alias table is treated as openai/<name>.
Prefer the complete ID in production and inspect the response model field to confirm the resolved ID. Variants are not bare aliases: always write the complete author/model:free or author/model:batch value.
Anthropic and Gemini native endpoints use different namespaces. Anthropic Messages uses native hyphenated names, such as the verified claude-haiku-4-5. The gateway maps a few dotted aliases (claude-opus-4.8 resolves to claude-opus-4-8), but coverage is partial: claude-haiku-4.5 returns 404. OpenAI-compatible IDs such as anthropic/claude-haiku-4.5 are never valid there. Use public GET /anthropic/v1/models for its current list. Gemini accepts Google-native names, such as the verified gemini-3.1-flash-lite; use public GET /v1beta/models for that protocol.
Base URLs and primary endpoints#
| Purpose | Method and endpoint |
|---|---|
| OpenAI-compatible model list (public) | GET https://api.clssai.com/v1/models |
| Single model record (public) | GET https://api.clssai.com/v1/models/{author}/{slug} |
| Model count (public) | GET https://api.clssai.com/v1/models/count |
| Embedding model list (public) | GET https://api.clssai.com/v1/embeddings/models |
| Image model list (public) | GET https://api.clssai.com/v1/images/models |
| Video model list (public) | GET https://api.clssai.com/v1/videos/models |
| Chat Completions | POST https://api.clssai.com/v1/chat/completions |
Responses API (verified; data-only SSE, dispatch on JSON type) | POST https://api.clssai.com/v1/responses |
| Legacy Completions (text models; wrong-modality models are rejected) | POST https://api.clssai.com/v1/completions |
| Embeddings | POST https://api.clssai.com/v1/embeddings |
| Reranking | POST https://api.clssai.com/v1/rerank |
| Image generation | POST https://api.clssai.com/v1/images |
Image edits (multipart translated to JSON; no mask; 8 MB total; always b64_json) | POST https://api.clssai.com/v1/images/edits |
| Speech synthesis | POST https://api.clssai.com/v1/audio/speech |
| Transcription | POST https://api.clssai.com/v1/audio/transcriptions |
| Video pass-through (lightly tested) | POST https://api.clssai.com/v1/videos |
| Key balance | GET https://api.clssai.com/v1/balance |
| Key record | GET https://api.clssai.com/v1/key |
| Credits summary | GET https://api.clssai.com/v1/credits |
| Generation lookup | GET https://api.clssai.com/v1/generation |
| Anthropic Messages | POST https://api.clssai.com/v1/messages |
| Anthropic token count (not billed) | POST https://api.clssai.com/v1/messages/count_tokens |
| Anthropic model list (public) | GET https://api.clssai.com/anthropic/v1/models |
| Gemini generation | POST https://api.clssai.com/v1beta/models/{model}:generateContent |
| Gemini streaming | POST https://api.clssai.com/v1beta/models/{model}:streamGenerateContent |
| Gemini model list (public) | GET https://api.clssai.com/v1beta/models |
| Request logs | GET https://api.clssai.com/key/<key>/logs.json |
OpenAI-compatible calls use the base URL https://api.clssai.com/v1 and accept Bearer, x-api-key, or a ?key= query parameter. Prefer a header: a key in the URL leaks through referrers, proxy logs, and browser history. The Anthropic SDK base URL is https://api.clssai.com without /v1; calls accept x-api-key or Bearer and require anthropic-version: 2023-06-01. Gemini uses https://api.clssai.com/v1beta with x-goog-api-key or ?key= and does not accept Bearer authentication.
List callable model IDs#
GET /v1/models is public (no API key), supports ETag and If-None-Match, and returns the full reference record for every callable model. Catalog routes answer locally and are never forwarded upstream.
curl "https://api.clssai.com/v1/models?limit=1&q=gpt-5.4-nano"{
"object": "list",
"data": [
{
"id": "openai/gpt-5.4-nano",
"object": "model",
"created": 1773748187,
"owned_by": "openai",
"canonical_slug": "openai/gpt-5.4-nano-20260317",
"hugging_face_id": "",
"name": "OpenAI: GPT-5.4 Nano",
"description": "GPT-5.4 nano is the most lightweight and cost-efficient variant of the GPT-5.4 family, optimized for speed-critical and high-volume tasks. It supports text and image inputs and is designed for low-latency...",
"context_length": 400000,
"architecture": {
"modality": "text+image+file->text",
"input_modalities": ["file", "image", "text"],
"output_modalities": ["text"],
"tokenizer": "GPT",
"instruct_type": null
},
"pricing": {
"prompt": "0.0000002",
"completion": "0.00000125",
"web_search": "0.01",
"input_cache_read": "0.00000002"
},
"top_provider": {
"context_length": 400000,
"max_completion_tokens": 128000,
"is_moderated": true
},
"per_request_limits": null,
"supported_parameters": [
"include_reasoning",
"max_completion_tokens",
"max_tokens",
"reasoning",
"reasoning_effort",
"response_format",
"seed",
"structured_outputs",
"tool_choice",
"tools"
],
"default_parameters": {
"temperature": null,
"top_p": null,
"top_k": null,
"frequency_penalty": null,
"presence_penalty": null,
"repetition_penalty": null
},
"supported_voices": null,
"knowledge_cutoff": "2025-08-31",
"expiration_date": null,
"links": {
"details": "/v1/models/openai/gpt-5.4-nano"
}
}
],
"total_count": 2,
"links": {
"next": "/v1/models?limit=1&q=gpt-5.4-nano&offset=1"
}
}The API directory is the authority for callable IDs. Reference context and token prices below are server-rendered from the same catalog snapshot used by the full model browser. Non-token-priced models show an em dash instead of a token price.
Response fields#
Each record in data carries the four OpenAI list fields plus the full reference metadata:
| Field | Meaning |
|---|---|
id | Callable author/model ID, including any :free or :batch suffix. |
object | Always model. |
created | Unix timestamp (seconds) when the record was published. |
owned_by | Author namespace that owns the ID (the author segment). |
canonical_slug | Stable catalog slug, usually author/slug-YYYYMMDD. |
hugging_face_id | Hugging Face model id when known, otherwise "" or null. |
name | Human-readable display name. |
description | Short public description; may be truncated with a trailing .... |
context_length | Maximum total context tokens the model accepts. |
architecture | Object describing modality and tokenizer (see below). |
pricing | Object of decimal strings in USD (see below). |
top_provider | Serving limits for the primary route (see below). |
per_request_limits | Optional per-request cap object, or null. |
supported_parameters | Request parameters this model accepts. |
default_parameters | Optional default overrides; null means the client default applies. |
supported_voices | Voice names for speech models, otherwise null. |
knowledge_cutoff | Training data cutoff as YYYY-MM-DD, or null. |
expiration_date | Catalog retirement date as YYYY-MM-DD, or null. |
links | Related catalog URLs; details is the single-model path. |
architecture contains modality (a input->output summary string), input_modalities, output_modalities, tokenizer, and instruct_type. Modalities are chosen from text, image, file, audio, video, embeddings, rerank, speech, transcription, and decisions.
Every pricing value is a decimal string in USD. prompt and completion are prices per token; keys such as web_search, input_cache_read, input_cache_write, and input_cache_write_1h are prices per action or per token of that class. A free model reports "0" for prompt and completion. Do not treat catalog prices as a final invoice; see Usage & billing.
top_provider contains context_length, max_completion_tokens, and is_moderated. Use top_provider.context_length and top_provider.max_completion_tokens when you need the serving route's limits rather than the catalog headline.
Query the directory#
All catalog list routes accept the same query parameters. Omitting every parameter returns the full list; pass limit to page.
| Parameter | Values | Meaning |
|---|---|---|
offset | integer ≥ 0 | Records to skip before the page. |
limit | integer 1–1000 | Maximum records in the page. Out-of-range values return 400. |
output_modalities | comma-separated modality names, or all | Keep models whose output_modalities intersect the list. all disables the filter. |
input_modalities | comma-separated modality names, or all | Keep models whose input_modalities intersect the list. all disables the filter. |
supported_parameters | comma-separated parameter names | Keep models whose supported_parameters include every listed name. |
q | free text | Case-insensitive search over id, name, and description. |
context | integer ≥ 1 | Keep models with context_length at least this value. |
min_price | number ≥ 0 | Keep models whose pricing.prompt is at least this USD-per-token value. |
max_price | number ≥ 0 | Keep models whose pricing.prompt is at most this USD-per-token value. |
sort | created, name, price, context | Server-side ordering. Invalid values return 400. |
Unknown names in output_modalities, input_modalities, or supported_parameters match nothing and return an empty data array with total_count: 0. Invalid limit, min_price, max_price, or sort values return 400 invalid_parameter and name the offending parameter.
curl "https://api.clssai.com/v1/models?limit=2&output_modalities=image&sort=name"Top-level response fields are object (list), data, total_count, and links. total_count is the number of records matching the filter, not the page size. links.next is the path for the following page, or null when the page is the last one.
{
"object": "list",
"data": [],
"total_count": 55,
"links": {
"next": "/v1/models?limit=2&output_modalities=image&sort=name&offset=2"
}
}Fetch one model#
GET /v1/models/{author}/{slug} returns one model object (the same fields as a data entry above) without a list wrapper. slug is the final ID segment and keeps any :free or :batch suffix. Unknown IDs return 404 not_found.
curl https://api.clssai.com/v1/models/openai/gpt-5.4-nano{
"id": "openai/gpt-5.4-nano",
"object": "model",
"created": 1773748187,
"owned_by": "openai",
"canonical_slug": "openai/gpt-5.4-nano-20260317",
"name": "OpenAI: GPT-5.4 Nano",
"context_length": 400000,
"links": {
"details": "/v1/models/openai/gpt-5.4-nano"
}
}Count models#
GET /v1/models/count returns the number of models matching no filter. It is the cheap way to detect a catalog change before downloading the list.
curl https://api.clssai.com/v1/models/count{"data":{"count":622}}Filter by output modality#
Three public shortcuts return the same rich records, pre-filtered by output modality. They accept every query parameter above.
| Endpoint | Keeps models whose output includes |
|---|---|
GET /v1/embeddings/models | embeddings |
GET /v1/images/models | image |
GET /v1/videos/models | video |
curl "https://api.clssai.com/v1/embeddings/models?limit=1"{
"object": "list",
"data": [
{
"id": "liquid/lfm-2.5-embedding-350m:free",
"object": "model",
"created": 1787077908,
"owned_by": "liquid",
"architecture": {
"modality": "text->embeddings",
"input_modalities": ["text"],
"output_modalities": ["embeddings"]
},
"pricing": {
"prompt": "0",
"completion": "0"
},
"links": {
"details": "/v1/models/liquid/lfm-2.5-embedding-350m:free"
}
}
],
"total_count": 37,
"links": {
"next": "/v1/embeddings/models?limit=1&offset=1"
}
}Models by modality#
Reference prices; you are billed by upstream-reported usage.cost — see Usage & billing.
Chat
| Model ID | Context | Input | Output |
|---|---|---|---|
recursive/flint-v1.0:free | 262.14K | $0/M | $0/M |
xingchen-agi/xing4.0-29b-a4b:free | 262.14K | $0/M | $0/M |
nvidia/nemotron-3.5-super-vl:free | 1M | $0/M | $0/M |
dots-studio/dots-3-note-preview:free | 512K | $0/M | $0/M |
liquid/lfm-2.5-2.6b:free | 65.54K | $0/M | $0/M |
nvidia/nemotron-3.5-lightning:free | 1M | $0/M | $0/M |
thinkingmachines/inkling-small:free | 1.05M | $0/M | $0/M |
thinkingmachines/inkling:free | 1.05M | $0/M | $0/M |
cohere/north-mini-code:free | 256K | $0/M | $0/M |
nvidia/nemotron-3.5-content-safety:free | 128K | $0/M | $0/M |
nvidia/nemotron-3-ultra-550b-a55b:free | 1M | $0/M | $0/M |
nvidia/nemotron-3-nano-omni-30b-a3b-reasoning:free | 256K | $0/M | $0/M |
google/gemma-4-26b-a4b-it:free | 262.14K | $0/M | $0/M |
google/gemma-4-31b-it:free | 262.14K | $0/M | $0/M |
z-ai/glm-5.2 | 1.05M | $0.006/M | $6.8/M |
~z-ai/glm-flash-latest | 1.05M | $0.0093/M | $0.1702/M |
z-ai/glm-5.3-flash | 1.05M | $0.0093/M | $0.1702/M |
inclusionai/ling-3.0-flash | 262.14K | $0.021/M | $0.063/M |
openai/gpt-oss-20b:batch | 131.07K | $0.024/M | $0.112/M |
nex-agi/nex-n2.5-mini | 262.14K | $0.025/M | $0.1/M |
Vision
| Model ID | Context | Input | Output |
|---|---|---|---|
nvidia/nemotron-3.5-super-vl:free | 1M | $0/M | $0/M |
dots-studio/dots-3-note-preview:free | 512K | $0/M | $0/M |
thinkingmachines/inkling-small:free | 1.05M | $0/M | $0/M |
thinkingmachines/inkling:free | 1.05M | $0/M | $0/M |
nvidia/nemotron-3.5-content-safety:free | 128K | $0/M | $0/M |
nvidia/nemotron-3-nano-omni-30b-a3b-reasoning:free | 256K | $0/M | $0/M |
google/gemma-4-26b-a4b-it:free | 262.14K | $0/M | $0/M |
google/gemma-4-31b-it:free | 262.14K | $0/M | $0/M |
Image generation
| Model ID | Context | Input | Output |
|---|---|---|---|
amazon/titan-embed-image-v1 | 128 | $0.8/M | $0/M |
sourceful/riverflow-v2.6-pro | 32.77K | — | — |
qwen/qwen-image-2.1-turbo | 65.54K | — | — |
qwen/qwen-image-2.1-pro | 65.54K | — | — |
krea/k3-edit | 65.54K | — | — |
black-forest-labs/flux-3-image-klein | 46.86K | — | — |
google/gemini-nano-banana-2.1 | 65.54K | — | — |
tencent/hy-image-v3.5-preview | 100K | — | — |
Embeddings
| Model ID | Context | Input | Output |
|---|---|---|---|
nvidia/nemotron-3.5-embed-1b:free | 32.77K | $0/M | $0/M |
nvidia/nemotron-3.5-embed-8b:free | 32.77K | $0/M | $0/M |
liquid/lfm-2.5-embedding-350m:free | 512 | $0/M | $0/M |
nvidia/nemotron-3-embed-1b:free | 32.77K | $0/M | $0/M |
nvidia/llama-nemotron-embed-vl-1b-v2:free | 131.07K | $0/M | $0/M |
perplexity/pplx-embed-v1-0.6b | 32K | $0.004/M | $0/M |
thenlper/gte-base | 512 | $0.005/M | $0/M |
intfloat/e5-base-v2 | 512 | $0.005/M | $0/M |
TTS
| Model ID | Context | Input | Output |
|---|---|---|---|
assemblyai/assemblyai-tts-1 | N/A | — | — |
heygen/heygen-voice-1-turbo | N/A | — | — |
heygen/heygen-voice-1-turbo:free | N/A | — | — |
mistralai/voxtral-mini-tts-3-0 | 4.1K | — | — |
heygen/heygen-voice-1 | N/A | — | — |
fish-audio/drama-3 | N/A | — | — |
elevenlabs/eleven-v4 | N/A | — | — |
elevenlabs/eleven-v4-turbo | N/A | — | — |
STT
| Model ID | Context | Input | Output |
|---|---|---|---|
thinkingmachines/inkling-small:free | 1.05M | $0/M | $0/M |
thinkingmachines/inkling:free | 1.05M | $0/M | $0/M |
nvidia/nemotron-3-nano-omni-30b-a3b-reasoning:free | 256K | $0/M | $0/M |
mistralai/voxtral-small-24b-2507 | 32.77K | $0.1/M | $0.3/M |
google/gemini-2.5-flash-lite | 1.05M | $0.1/M | $0.4/M |
google/gemini-3.1-flash-lite:batch | 1.05M | $0.125/M | $0.75/M |
xiaomi/mimo-v2.6-flash | 1.05M | $0.14/M | $0.28/M |
perceptron/perceptron-mk1.5 | 36.86K | $0.15/M | $1.5/M |
Rerank
| Model ID | Context | Input | Output |
|---|---|---|---|
voyageai/rerank-3-lite | 32K | $0/M | $0/M |
voyageai/rerank-3 | 32K | $0/M | $0/M |
qwen/qwen3-reranker-8b | 40.96K | $0/M | $0/M |
voyageai/rerank-2.5-lite | 32K | $0/M | $0/M |
voyageai/rerank-2.5 | 32K | $0/M | $0/M |
nvidia/llama-nemotron-rerank-vl-1b-v2:free | 10.24K | $0/M | $0/M |
cohere/rerank-4-pro | 32.77K | $0/M | $0/M |
cohere/rerank-4-fast | 32.77K | $0/M | $0/M |
Video
| Model ID | Context | Input | Output |
|---|---|---|---|
tbc/mischief-1 | N/A | — | — |
x-ai/grok-imagine-video-1.5-lite | N/A | — | — |
heygen/heygen-video-1 | N/A | — | — |
black-forest-labs/flux-video-edit | N/A | — | — |
minimax/hailuo-3-max | N/A | — | — |
alibaba/wan-3.0-prime | N/A | — | — |
alibaba/wan-3.0 | N/A | — | — |
heygen/avatar-iv | N/A | — | — |
Common mistakes#
- Include
/v1in the OpenAI SDK base URL. - Do not infer availability from a model detail URL; use
GET /v1/models. - Prefer a complete
author/modelID in production, use the responsemodelfield to audit bare-name resolution, and keep:freeor:batchin the complete ID. - Do not send OpenAI-compatible IDs to native Anthropic or Gemini endpoints; use each protocol's public model list.
- Do not treat a displayed reference price as the final charge; see Usage & billing.
- Do not call inference endpoints from browser JavaScript.
- Use the Anthropic SDK base URL without
/v1. - Use
cf-raywhen tracing inference requests. - Do not assume
limitis optional for pagination; without it a request can return the entire directory. - Treat
pricingstrings as decimal USD values and convert them explicitly; they are not floating-point JSON numbers.
Find answers to common questions or diagnose a failed request.
Frequently asked questions →Troubleshoot errors →