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
Model identifier format
Section titled “Model identifier format”Every model is addressed using a provider/model-id compound string:
anthropic/claude-sonnet-4-20250514openai/gpt-4ogoogle/gemini-2.0-flashPass 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.
ModelInfo object
Section titled “ModelInfo object”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 |
List models
Section titled “List models”GET /v1/modelsReturns 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
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"] }]List models grouped
Section titled “List models grouped”GET /v1/models/groupedReturns 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
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 |
Provider routing
Section titled “Provider routing”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.
Error responses
Section titled “Error responses”| 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 |
See also
Section titled “See also”- 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)