Docs

GET /v1/models — live catalog with deployment status, pricing, and architecture.

Models

GET /v1/models
GET /v1/models/:model

GET /v1/models lists every model the gateway will advertise for this key: platform providers, org-scoped custom deployments, and BYOK adapters. Rows are enriched with catalog status and list prices when those exist in Postgres.

bash
export OPENDOOR_API_KEY=opd_… export OPENDOOR_BASE_URL=https://opendoor-gcp.web.app curl "$OPENDOOR_BASE_URL/v1/models" \ -H "Authorization: Bearer $OPENDOOR_API_KEY"
json
{ "object": "list", "data": [ { "id": "gemma-4-26b-a4b-it", "object": "model", "owned_by": "google", "provider": "vertex", "deployment_status": "live", "display_name": "Gemma 4 26B", "context_window": 128000, "supports_vision": false, "supports_tools": true, "supports_json_mode": true, "pricing": { "prompt": 0.15, "completion": 0.6 }, "architecture": { "modality": "text", "input_modalities": ["text"], "output_modalities": ["text"] }, "supported_parameters": ["temperature", "max_tokens", "top_p", "stream", "tools", "tool_choice"], "top_provider": { "slug": "vertex" }, "serverless": true } ] }

Pricing numbers are catalog list rates (per 1M tokens in prompt / completion when present). Always treat GET /v1/models as source of truth for your workspace.

Hosted Vertex MaaS ids

These catalog ids are the serverless wholesale set the gateway advertises when Vertex (or Together overflow) is configured:

gemma-4-26b-a4b-it, qwen3-next-80b-instruct, qwen3-next-80b-thinking, qwen3-coder-480b-a35b-instruct, deepseek-v3.2, deepseek-r1, kimi-k2-thinking, minimax-m2, glm-4.7, glm-5, gpt-oss-120b, gpt-oss-20b.

Image / video ids (when Vertex media is configured): gemini-2.5-flash-image, gemini-3.1-flash-image, gemini-3-pro-image, veo-3.1-fast-generate-001, veo-3.1-generate-001.

Deployment status

StatusMeaningChat
liveCallable now200
warmingListed; not serving yet503
dedicatedNeeds a GPU from Dashboard → Deployments400
available_on_requestClosed / marketplace only (open-weight is not blocked on this flag)400 for closed
coming_soonNot callable yet400

Filter to live models:

bash
curl "$OPENDOOR_BASE_URL/v1/models" \ -H "Authorization: Bearer $OPENDOOR_API_KEY" \ | jq '.data | map(select(.deployment_status == "live"))'

One model

bash
curl "$OPENDOOR_BASE_URL/v1/models/gemma-4-26b-a4b-it" \ -H "Authorization: Bearer $OPENDOOR_API_KEY"

Returns { id, object, created, owned_by } for a routed id, or 404 { "error": "Model not found" }.

SDKs

ts
const models = await client.models.list();
python
print(client.models.list())
bash
bun run od -- models