Skip to Content
Models

Models

GET /v1/models

List available models with their capabilities.

Response

Returns available models grouped by provider. Each entry includes a capabilities object describing what the model supports end-to-end through PickLayer’s request pipeline.

{ "data": { "providers": { "openai": [{ "provider": "openai", "model": "gpt-4o-2024-11-20", "modelString": "openai/gpt-4o-2024-11-20", "canonical_slug": "gpt-4o-2024-11-20", "model_kind": "chat", "capabilities": { "token_unit": "tokens", "supports_text": true, "supports_tools": true, "supports_vision": true, "supports_web_search": true, "supports_web_search_native": false, "web_search": { "mode": "platform_tool", "source": "derived", "supported": true }, "supports_file_upload": true, "supports_json_mode": true, "supports_reasoning": false, "supports_system_prompt": true, "max_output_tokens": 16384, "context_window_tokens": 128000, "tokenization_hint": "openrouter:openai/gpt-4o-2024-11-20", "accepted_extensions": ["txt","md","csv","tsv","json","yaml","yml","xml","html","pdf","docx","xlsx","jpg","jpeg","png","gif","webp"], "accepted_mime_prefixes": ["text/","application/pdf","application/json","application/vnd.openxmlformats-officedocument.","image/"] } }] } } }

Capabilities

FieldTypeDescription
supports_textbooleanModel accepts and returns text content.
supports_visionbooleanModel accepts image inputs (image_url/input_image).
supports_toolsbooleanModel supports function/tool calling.
supports_json_modebooleanModel honors response_format: { type: "json" }.
supports_reasoningbooleanModel produces reasoning traces (e.g., o1/o3, Claude extended thinking).
supports_system_promptbooleanModel accepts a system role / system instruction.
supports_web_searchbooleanWeb search is available — either via PickLayer’s platform-tool implementation (any tool-capable model) or a provider-native search backend. Frontends should read this field directly to decide whether to surface a “Web Search” toggle.
supports_web_search_nativebooleanProvider exposes a native web-search tool (Anthropic Brave, Gemini Google Search, xAI Live Search, OpenAI native).
web_searchobjectDetailed web-search metadata: { "mode": "native" | "platform_tool", "source": "openrouter_api" | "provider_table" | "derived", "supported": true }.
supports_file_uploadbooleanModel accepts file attachments (input_file, image_url, input_audio).
accepted_extensionsstring[]File extensions (no leading dot) the request pipeline can route end-to-end. Derived from runtime capability — not aspirational.
accepted_mime_prefixesstring[]MIME prefixes the request pipeline can route end-to-end.
context_window_tokensnumberMaximum input context size.
max_output_tokensnumberMaximum output length the gateway will accept (capped against provider limits).
tokenization_hintstringHint for token counting (e.g., "openrouter:openai/gpt-4o-2024-11-20"); used by /v1/messages/count_tokens and the embedded tokenizer.
token_unitstring"tokens" for chat models; "seconds" for STT/TTS.

supports_web_search derivation

Canonical-additive change. supports_web_search and the 11 sibling capability fields described here live on PickLayer’s extended capabilities object. The OpenAI-compatible flat-shape OpenAIModelObjectSchema exposed at the canonical OpenAI catalog surface is untouched — clients reading the canonical OpenAI shape see no change.

PickLayer’s platform web search works via tool-calling on any tool-capable model. The synthesis rule is:

// Explicit value wins; only derive when the field is undefined. if (capabilities.supports_web_search === undefined) { capabilities.supports_web_search = canUsePlatformWebSearch(capabilities); // canUsePlatformWebSearch returns supports_tools === true }

If a per-provider capability table sets supports_web_search: false explicitly for cost or policy reasons, that value is preserved. If a provider’s enrichment (e.g., OpenRouter’s API) reports supports_web_search: true directly, that wins. Only when the field is otherwise undefined does the gateway fall back to deriving from supports_tools.

This means native-vendor entries that don’t pass through OpenRouter enrichment (e.g., openai/gpt-4o-2024-11-20) now correctly advertise supports_web_search: true instead of leaving the field undefined.

Truthfulness invariant

accepted_extensions and accepted_mime_prefixes are derived from the runtime capability — i.e., the advertised list reflects what the request pipeline can actually process end-to-end. A request with an input_file whose MIME is not in the model’s advertised list returns 400 with a precise param path; no aspirational entries appear in the public list.

Backwards-compatibility note

Until clients ship a supports_web_search read path, they may infer it from supports_tools. Once they pick up the new field, prefer reading it directly: it preserves explicit per-model overrides that a supports_tools-only inference would miss.

Query parameters

ParameterDescription
providerComma-separated filter (e.g., provider=openai,anthropic).

/v1/models/available is an alias for the same response.

Last updated on