Skip to content

Models

The Arbitex Gateway exposes two OpenAI-compatible model listing endpoints. Both require a valid API key and return only the models that are active and that your organization is permitted to use.

Base URL: https://api.arbitex.ai/v1


Every model is addressed using a provider/model-id compound string:

anthropic/claude-sonnet-4-20250514
openai/gpt-4o
google/gemini-2.0-flash

Pass this string in the model field of a chat completions request. The provider prefix routes the request to the correct upstream; the model-id is forwarded verbatim.

If you omit the provider prefix and send only a bare model-id (e.g. gpt-4o), the gateway attempts resolution against your configured provider list. This works for compatibility with existing integrations, but the provider/model-id format is preferred — it is unambiguous and avoids accidental routing mismatches when the same model-id exists on multiple providers.

A 404 model_not_found is returned when the resolved model is not recognized or is not available for your organization. See error codes for the full error body format.


Both listing endpoints return arrays of ModelInfo objects with the following fields:

Field Type Description
model_id string Provider-assigned model identifier (e.g. gpt-4o, claude-sonnet-4-20250514)
display_name string Human-readable model name
provider string Provider name (e.g. openai, anthropic, google)
max_tokens integer Maximum output tokens supported by this model
supports_streaming boolean Whether the model supports server-sent event streaming
context_window integer | null Provider-reported maximum context window in tokens; null when not exposed by the provider’s catalog
capabilities array of string Capability tags — values include chat, vision, tool_use, streaming

The grouped endpoint adds three computed fields per model entry (see List models grouped):

Field Type Description
tier string Model tier inferred from the model-id naming convention (e.g. opus, sonnet, pro)
version_score array of integer Extracted version digits used for ordering (e.g. [4, 6] for claude-sonnet-4-6)
is_latest_in_tier boolean Whether this is the highest-version model in its (provider, tier) bucket

GET /v1/models

Returns a flat array of all active models available to the calling user. Provider model listings are cached for up to one hour; admin-managed availability flags are checked fresh on every request. Only text-chat-capable models are included — image, audio, TTS, and embedding models are excluded.

Access control is applied: if your organization has model access rules configured (allowlists or denylists by provider or model pattern), only models the calling user is permitted to use are returned. See model access rules for configuration details.

Request

Terminal window
curl https://api.arbitex.ai/v1/models \
-H "Authorization: Bearer $ARBITEX_API_KEY"

Response 200 OK

Cache-Control: public, max-age=3600

[
{
"model_id": "claude-sonnet-4-20250514",
"display_name": "Claude Sonnet 4",
"provider": "anthropic",
"max_tokens": 8192,
"supports_streaming": true,
"context_window": 200000,
"capabilities": ["chat", "vision", "tool_use", "streaming"]
},
{
"model_id": "gpt-4o",
"display_name": "GPT-4o",
"provider": "openai",
"max_tokens": 16384,
"supports_streaming": true,
"context_window": 128000,
"capabilities": ["chat", "vision", "tool_use", "streaming"]
},
{
"model_id": "gemini-2.0-flash",
"display_name": "Gemini 2.0 Flash",
"provider": "google",
"max_tokens": 8192,
"supports_streaming": true,
"context_window": 1048576,
"capabilities": ["chat", "vision", "streaming"]
}
]

GET /v1/models/grouped

Returns the same model set as GET /v1/models but reshaped for a model picker UI. The highest-version model per (provider, tier) is placed in current; older versions appear in legacy. Tier is inferred from the model-id naming convention — for example, claude-sonnet-4-20250514 is tier sonnet, gpt-4o is tier gpt-4o, gemini-2.5-pro is tier pro.

All the same access control filtering and activity-flag filtering as the flat endpoint applies.

Request

Terminal window
curl https://api.arbitex.ai/v1/models/grouped \
-H "Authorization: Bearer $ARBITEX_API_KEY"

Response 200 OK

Cache-Control: private, max-age=60

{
"current": [
{
"provider": "anthropic",
"models": [
{
"model_id": "claude-opus-4-5",
"display_name": "Claude Opus 4.5",
"provider": "anthropic",
"max_tokens": 8192,
"supports_streaming": true,
"context_window": 200000,
"capabilities": ["chat", "vision", "tool_use", "streaming"],
"tier": "opus",
"version_score": [4, 5],
"is_latest_in_tier": true
},
{
"model_id": "claude-sonnet-4-20250514",
"display_name": "Claude Sonnet 4",
"provider": "anthropic",
"max_tokens": 8192,
"supports_streaming": true,
"context_window": 200000,
"capabilities": ["chat", "vision", "tool_use", "streaming"],
"tier": "sonnet",
"version_score": [4, 0],
"is_latest_in_tier": true
}
]
},
{
"provider": "openai",
"models": [
{
"model_id": "gpt-4o",
"display_name": "GPT-4o",
"provider": "openai",
"max_tokens": 16384,
"supports_streaming": true,
"context_window": 128000,
"capabilities": ["chat", "vision", "tool_use", "streaming"],
"tier": "gpt-4o",
"version_score": [4, 0],
"is_latest_in_tier": true
}
]
}
],
"legacy": [
{
"provider": "anthropic",
"models": [
{
"model_id": "claude-sonnet-4-5",
"display_name": "Claude Sonnet 4.5",
"provider": "anthropic",
"max_tokens": 8192,
"supports_streaming": true,
"context_window": 200000,
"capabilities": ["chat", "vision", "tool_use", "streaming"],
"tier": "sonnet",
"version_score": [4, 5],
"is_latest_in_tier": false
}
]
}
],
"pinned_legacy": []
}

Response structure

Field Type Description
current array Provider groups containing the latest model per tier; sorted alphabetically by provider name
current[].provider string Provider name
current[].models array ModelInfo objects (with tier, version_score, is_latest_in_tier), sorted alphabetically by tier name
legacy array Provider groups for older model versions; models sorted version-score descending (newest first)
pinned_legacy array Flat list of tenant-pinned legacy models; these also appear in current with is_latest_in_tier: true

When the gateway receives a chat completions request it resolves the provider from the provider/model-id string, then forwards the request to the upstream API using the provider credentials configured for your organization.

If multiple provider credentials are configured for the same provider (for example, two Anthropic keys with different rate limits), the gateway selects among them according to your routing policy. If the selected upstream is unavailable, the gateway follows your configured failover chain. A 503 provider_unavailable is returned only when all providers in the chain are exhausted.


Status Code Description
401 invalid_api_key API key not found, revoked, or malformed
404 model_not_found The requested provider/model-id is not recognized or not available for your organization

  • Chat completions — using a model identifier in POST /v1/chat/completions
  • Model access rules — admin configuration for org-level and group-level model allowlists and denylists (admin only)
  • Model catalog management — registering and deactivating models for your organization (admin only)