Skip to main content
The catalog endpoint. Returns the models in scope for your API key — the same set that model field accepts on /v1/messages, /v1/chat/completions, and /v1beta/models/{model}:generateContent. Calling it is free and never debits credits.

When to use

  • Verify key validity at boot — a 200 here proves the key is alive and in-scope
  • Discover capability tags before sending an image / video / audio block
  • Build a model picker in your own UI without hard-coding the catalog
  • Detect retired slugs — anything not in the list returns 400 unsupported_model on /messages / /chat/completions

Request

curl https://llm.bytespike.ai/v1/models \
  -H "Authorization: Bearer $BYTESPIKE_API_KEY"
x-api-key: $BYTESPIKE_API_KEY also works. No body.

Query parameters

ParamTypeNotes
capabilitystringFilter by capability tag, e.g. ?capability=vision or ?capability=tool_use. Multiple OK: ?capability=vision&capability=streaming.
familystringFilter by model family: anthropic / openai / google / deepseek / moonshot / zhipu / minimax / bytedance.

Response

{
  "object": "list",
  "data": [
    {
      "id": "claude-sonnet-4-6",
      "object": "model",
      "owned_by": "anthropic",
      "family": "claude",
      "capabilities": ["text", "vision", "tool_use", "streaming", "cache_control", "thinking"],
      "context_window": 200000,
      "max_output_tokens": 8192,
      "input_modalities": ["text", "image"],
      "output_modalities": ["text"],
      "pricing_url": "https://bytespike.ai/pricing#claude-sonnet-4-6",
      "created": 1714003200
    },
    {
      "id": "gpt-5-4",
      "object": "model",
      "owned_by": "openai",
      "family": "gpt",
      "capabilities": ["text", "vision", "tool_use", "streaming", "json_schema", "logprobs"],
      "context_window": 256000,
      "max_output_tokens": 16384,
      "input_modalities": ["text", "image"],
      "output_modalities": ["text"],
      "pricing_url": "https://bytespike.ai/pricing#gpt-5-4",
      "created": 1716393600
    }
    // …
  ]
}

Response fields

FieldTypeNotes
data[].idstringModel slug. Use this as the model value on inference endpoints.
data[].owned_bystringModel originator (anthropic, openai, google, etc.).
data[].familystringCoarser grouping for UI (claude, gpt, gemini, deepseek, kimi, glm, minimax, doubao).
data[].capabilitiesstring[]Feature tags (see Capability tags).
data[].context_windowintegerMax input context in tokens.
data[].max_output_tokensintegerHard cap on a single generation.
data[].input_modalitiesstring[]text, image, audio, video.
data[].output_modalitiesstring[]Same union; text-only models return ["text"].
data[].pricing_urlstringDeep link to the per-model pricing row.
data[].createdintegerUnix timestamp when the model entered the catalog.

Live pricing

The pricing_url deep-links to the row in bytespike.ai/pricing. We don’t ship per-token rates in this response on purpose — the rate card is refreshed nightly from the gateway and the docs page reflects whatever the gateway will actually bill you at, so reading it client-side stays canonical.

Capability tags

TagMeaning
textAccepts text input + emits text output. Present on every model.
visionAccepts image content blocks (image on /messages, image_url on /chat/completions, inlineData on Gemini).
audioAccepts audio input parts.
videoAccepts video input parts.
tool_useHonors tools / tool_choice.
streamingSupports stream: true SSE.
cache_controlSupports Anthropic-style prompt caching.
thinkingEmits thinking content blocks (Opus / Sonnet 4.x).
json_schemaSupports OpenAI response_format: {"type": "json_schema"}.
logprobsSupports OpenAI logprobs: true.
image_genImage generation endpoint (/v1/images/generations).
video_genVideo generation endpoint (/v1/videos/generations).

Errors

Statuserror.typeTrigger
401authentication_errorMissing / revoked key.
403permission_errorKey valid but no models granted (rare — usually means the key was created in a paused org).
GET /v1/models is free; no 402 path. Rate limits exist but are very loose — the only realistic 429 is a key-rotation hammer storm.

Example — boot-time validation

import os
import requests

r = requests.get(
    "https://llm.bytespike.ai/v1/models",
    headers={"Authorization": f"Bearer {os.environ['BYTESPIKE_API_KEY']}"},
    timeout=10,
)
if r.status_code == 401:
    raise SystemExit("BYTESPIKE_API_KEY missing or revoked")
catalog = {m["id"]: m for m in r.json()["data"]}
assert "vision" in catalog["claude-sonnet-4-6"]["capabilities"]

Example — capability filter

curl 'https://llm.bytespike.ai/v1/models?capability=vision&capability=tool_use' \
  -H "Authorization: Bearer $BYTESPIKE_API_KEY"
Returns only models that accept images AND can call tools — useful when wiring an agent that has to OCR a screenshot and then act on it.