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#

PurposeMethod 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 CompletionsPOST 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
EmbeddingsPOST https://api.clssai.com/v1/embeddings
RerankingPOST https://api.clssai.com/v1/rerank
Image generationPOST 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 synthesisPOST https://api.clssai.com/v1/audio/speech
TranscriptionPOST https://api.clssai.com/v1/audio/transcriptions
Video pass-through (lightly tested)POST https://api.clssai.com/v1/videos
Key balanceGET https://api.clssai.com/v1/balance
Key recordGET https://api.clssai.com/v1/key
Credits summaryGET https://api.clssai.com/v1/credits
Generation lookupGET https://api.clssai.com/v1/generation
Anthropic MessagesPOST 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 generationPOST https://api.clssai.com/v1beta/models/{model}:generateContent
Gemini streamingPOST https://api.clssai.com/v1beta/models/{model}:streamGenerateContent
Gemini model list (public)GET https://api.clssai.com/v1beta/models
Request logsGET 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.

BashSyntax highlighted
curl "https://api.clssai.com/v1/models?limit=1&q=gpt-5.4-nano"
JSONSyntax highlighted
{
  "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:

FieldMeaning
idCallable author/model ID, including any :free or :batch suffix.
objectAlways model.
createdUnix timestamp (seconds) when the record was published.
owned_byAuthor namespace that owns the ID (the author segment).
canonical_slugStable catalog slug, usually author/slug-YYYYMMDD.
hugging_face_idHugging Face model id when known, otherwise "" or null.
nameHuman-readable display name.
descriptionShort public description; may be truncated with a trailing ....
context_lengthMaximum total context tokens the model accepts.
architectureObject describing modality and tokenizer (see below).
pricingObject of decimal strings in USD (see below).
top_providerServing limits for the primary route (see below).
per_request_limitsOptional per-request cap object, or null.
supported_parametersRequest parameters this model accepts.
default_parametersOptional default overrides; null means the client default applies.
supported_voicesVoice names for speech models, otherwise null.
knowledge_cutoffTraining data cutoff as YYYY-MM-DD, or null.
expiration_dateCatalog retirement date as YYYY-MM-DD, or null.
linksRelated 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.

ParameterValuesMeaning
offsetinteger ≥ 0Records to skip before the page.
limitinteger 1–1000Maximum records in the page. Out-of-range values return 400.
output_modalitiescomma-separated modality names, or allKeep models whose output_modalities intersect the list. all disables the filter.
input_modalitiescomma-separated modality names, or allKeep models whose input_modalities intersect the list. all disables the filter.
supported_parameterscomma-separated parameter namesKeep models whose supported_parameters include every listed name.
qfree textCase-insensitive search over id, name, and description.
contextinteger ≥ 1Keep models with context_length at least this value.
min_pricenumber ≥ 0Keep models whose pricing.prompt is at least this USD-per-token value.
max_pricenumber ≥ 0Keep models whose pricing.prompt is at most this USD-per-token value.
sortcreated, name, price, contextServer-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.

BashSyntax highlighted
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.

JSONSyntax highlighted
{
  "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.

BashSyntax highlighted
curl https://api.clssai.com/v1/models/openai/gpt-5.4-nano
JSONSyntax highlighted
{
  "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.

BashSyntax highlighted
curl https://api.clssai.com/v1/models/count
JSONSyntax highlighted
{"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.

EndpointKeeps models whose output includes
GET /v1/embeddings/modelsembeddings
GET /v1/images/modelsimage
GET /v1/videos/modelsvideo
BashSyntax highlighted
curl "https://api.clssai.com/v1/embeddings/models?limit=1"
JSONSyntax highlighted
{
  "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 IDContextInputOutput
recursive/flint-v1.0:free262.14K$0/M$0/M
xingchen-agi/xing4.0-29b-a4b:free262.14K$0/M$0/M
nvidia/nemotron-3.5-super-vl:free1M$0/M$0/M
dots-studio/dots-3-note-preview:free512K$0/M$0/M
liquid/lfm-2.5-2.6b:free65.54K$0/M$0/M
nvidia/nemotron-3.5-lightning:free1M$0/M$0/M
thinkingmachines/inkling-small:free1.05M$0/M$0/M
thinkingmachines/inkling:free1.05M$0/M$0/M
cohere/north-mini-code:free256K$0/M$0/M
nvidia/nemotron-3.5-content-safety:free128K$0/M$0/M
nvidia/nemotron-3-ultra-550b-a55b:free1M$0/M$0/M
nvidia/nemotron-3-nano-omni-30b-a3b-reasoning:free256K$0/M$0/M
google/gemma-4-26b-a4b-it:free262.14K$0/M$0/M
google/gemma-4-31b-it:free262.14K$0/M$0/M
z-ai/glm-5.21.05M$0.006/M$6.8/M
~z-ai/glm-flash-latest1.05M$0.0093/M$0.1702/M
z-ai/glm-5.3-flash1.05M$0.0093/M$0.1702/M
inclusionai/ling-3.0-flash262.14K$0.021/M$0.063/M
openai/gpt-oss-20b:batch131.07K$0.024/M$0.112/M
nex-agi/nex-n2.5-mini262.14K$0.025/M$0.1/M

Vision

Model IDContextInputOutput
nvidia/nemotron-3.5-super-vl:free1M$0/M$0/M
dots-studio/dots-3-note-preview:free512K$0/M$0/M
thinkingmachines/inkling-small:free1.05M$0/M$0/M
thinkingmachines/inkling:free1.05M$0/M$0/M
nvidia/nemotron-3.5-content-safety:free128K$0/M$0/M
nvidia/nemotron-3-nano-omni-30b-a3b-reasoning:free256K$0/M$0/M
google/gemma-4-26b-a4b-it:free262.14K$0/M$0/M
google/gemma-4-31b-it:free262.14K$0/M$0/M

Image generation

Model IDContextInputOutput
amazon/titan-embed-image-v1128$0.8/M$0/M
sourceful/riverflow-v2.6-pro32.77K——
qwen/qwen-image-2.1-turbo65.54K——
qwen/qwen-image-2.1-pro65.54K——
krea/k3-edit65.54K——
black-forest-labs/flux-3-image-klein46.86K——
google/gemini-nano-banana-2.165.54K——
tencent/hy-image-v3.5-preview100K——

Embeddings

Model IDContextInputOutput
nvidia/nemotron-3.5-embed-1b:free32.77K$0/M$0/M
nvidia/nemotron-3.5-embed-8b:free32.77K$0/M$0/M
liquid/lfm-2.5-embedding-350m:free512$0/M$0/M
nvidia/nemotron-3-embed-1b:free32.77K$0/M$0/M
nvidia/llama-nemotron-embed-vl-1b-v2:free131.07K$0/M$0/M
perplexity/pplx-embed-v1-0.6b32K$0.004/M$0/M
thenlper/gte-base512$0.005/M$0/M
intfloat/e5-base-v2512$0.005/M$0/M

TTS

Model IDContextInputOutput
assemblyai/assemblyai-tts-1N/A——
heygen/heygen-voice-1-turboN/A——
heygen/heygen-voice-1-turbo:freeN/A——
mistralai/voxtral-mini-tts-3-04.1K——
heygen/heygen-voice-1N/A——
fish-audio/drama-3N/A——
elevenlabs/eleven-v4N/A——
elevenlabs/eleven-v4-turboN/A——

STT

Model IDContextInputOutput
thinkingmachines/inkling-small:free1.05M$0/M$0/M
thinkingmachines/inkling:free1.05M$0/M$0/M
nvidia/nemotron-3-nano-omni-30b-a3b-reasoning:free256K$0/M$0/M
mistralai/voxtral-small-24b-250732.77K$0.1/M$0.3/M
google/gemini-2.5-flash-lite1.05M$0.1/M$0.4/M
google/gemini-3.1-flash-lite:batch1.05M$0.125/M$0.75/M
xiaomi/mimo-v2.6-flash1.05M$0.14/M$0.28/M
perceptron/perceptron-mk1.536.86K$0.15/M$1.5/M

Rerank

Model IDContextInputOutput
voyageai/rerank-3-lite32K$0/M$0/M
voyageai/rerank-332K$0/M$0/M
qwen/qwen3-reranker-8b40.96K$0/M$0/M
voyageai/rerank-2.5-lite32K$0/M$0/M
voyageai/rerank-2.532K$0/M$0/M
nvidia/llama-nemotron-rerank-vl-1b-v2:free10.24K$0/M$0/M
cohere/rerank-4-pro32.77K$0/M$0/M
cohere/rerank-4-fast32.77K$0/M$0/M

Video

Model IDContextInputOutput
tbc/mischief-1N/A——
x-ai/grok-imagine-video-1.5-liteN/A——
heygen/heygen-video-1N/A——
black-forest-labs/flux-video-editN/A——
minimax/hailuo-3-maxN/A——
alibaba/wan-3.0-primeN/A——
alibaba/wan-3.0N/A——
heygen/avatar-ivN/A——
Browse all 681 models →

Common mistakes#

  • Include /v1 in the OpenAI SDK base URL.
  • Do not infer availability from a model detail URL; use GET /v1/models.
  • Prefer a complete author/model ID in production, use the response model field to audit bare-name resolution, and keep :free or :batch in 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-ray when tracing inference requests.
  • Do not assume limit is optional for pagination; without it a request can return the entire directory.
  • Treat pricing strings as decimal USD values and convert them explicitly; they are not floating-point JSON numbers.
Need a hand?

Find answers to common questions or diagnose a failed request.

Frequently asked questions →Troubleshoot errors →