Skip to main content
GET
/
models
List gateway models
const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};

fetch('https://api.phaseo.ai/v1/models', options)
  .then(res => res.json())
  .then(res => console.log(res))
  .catch(err => console.error(err));
import requests

url = "https://api.phaseo.ai/v1/models"

headers = {"Authorization": "Bearer <token>"}

response = requests.get(url, headers=headers)

print(response.text)
curl --request GET \
--url https://api.phaseo.ai/v1/models \
--header 'Authorization: Bearer <token>'
package main

import (
"fmt"
"net/http"
"io"
)

func main() {

url := "https://api.phaseo.ai/v1/models"

req, _ := http.NewRequest("GET", url, nil)

req.Header.Add("Authorization", "Bearer <token>")

res, _ := http.DefaultClient.Do(req)

defer res.Body.Close()
body, _ := io.ReadAll(res.Body)

fmt.Println(string(body))

}
HttpResponse<String> response = Unirest.get("https://api.phaseo.ai/v1/models")
.header("Authorization", "Bearer <token>")
.asString();
<?php

$curl = curl_init();

curl_setopt_array($curl, [
CURLOPT_URL => "https://api.phaseo.ai/v1/models",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);

$response = curl_exec($curl);
$err = curl_error($curl);

curl_close($curl);

if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}
require 'uri'
require 'net/http'

url = URI("https://api.phaseo.ai/v1/models")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'

response = http.request(request)
puts response.read_body
{
  "ok": true,
  "privacy_scope": "shared",
  "availability_mode": "active",
  "limit": 50,
  "offset": 0,
  "total": 128,
  "models": [
    {
      "id": "<string>",
      "canonical_slug": "<string>",
      "model_id": "<string>",
      "name": "<string>",
      "description": "<string>",
      "created": 123,
      "release_date": "<string>",
      "deprecation_date": "<string>",
      "retirement_date": "<string>",
      "status": "<string>",
      "availability": {
        "provider_count": 1,
        "active_provider_count": 1,
        "inactive_provider_count": 1
      },
      "lifecycle": {
        "deprecation_date": "<string>",
        "retirement_date": "<string>",
        "replacement_model_id": "<string>",
        "message": "<string>"
      },
      "organisation_id": "<string>",
      "organisation_name": "<string>",
      "organisation_colour": "<string>",
      "aliases": [
        "<string>"
      ],
      "endpoints": [
        "<string>"
      ],
      "input_types": [
        "<string>"
      ],
      "output_types": [
        "<string>"
      ],
      "providers": [
        {
          "api_provider_id": "<string>",
          "is_active_gateway": true,
          "endpoints": [
            "<string>"
          ],
          "params": [
            "<string>"
          ],
          "api_provider_name": "<string>",
          "effective_from": "<string>",
          "effective_to": "<string>",
          "supported_parameters": [
            "<string>"
          ],
          "params_detail": {},
          "supported_parameters_detail": {}
        }
      ],
      "supported_params": [
        "<string>"
      ],
      "supported_params_detail": {},
      "supported_parameters": [
        "<string>"
      ],
      "supported_parameters_detail": {},
      "architecture": {
        "modality": "<string>",
        "input_modalities": [
          "<string>"
        ],
        "output_modalities": [
          "<string>"
        ],
        "tokenizer": "<string>",
        "instruct_type": "<string>"
      },
      "top_provider_id": "<string>",
      "top_provider": {
        "context_length": 123,
        "max_completion_tokens": 123,
        "is_moderated": true
      },
      "pricing": {
        "prompt": "<string>",
        "completion": "<string>",
        "request": "<string>",
        "image": "<string>",
        "input_cache_read": "<string>",
        "input_cache_write": "<string>",
        "web_search": "<string>"
      },
      "pricing_detail": {
        "pricing_plan": "<string>",
        "meters": {}
      },
      "per_request_limits": {}
    }
  ]
}
{
"ok": false,
"error": "invalid_request",
"message": "Invalid request parameters.",
"max_offset": 1
}
{
"error": "error_type",
"ok": false,
"message": "Human-readable error message",
"description": "Additional error details.",
"generation_id": "G-abc123",
"status_code": 502,
"error_type": "system",
"error_origin": "upstream",
"reason": "all_candidates_failed",
"attempt_count": 2,
"failed_providers": [
"google-ai-studio",
"openai"
],
"failed_statuses": [
403,
429
],
"upstream_error": {
"code": "PERMISSION_DENIED",
"message": "The caller does not have permission.",
"description": "<string>",
"param": "<string>"
},
"failure_sample": [
{
"provider": "<string>",
"type": "<string>",
"status": 123,
"upstream_error_code": "<string>",
"upstream_error_message": "<string>",
"upstream_error_description": "<string>",
"upstream_error_param": "<string>",
"upstream_payload_preview": "<string>",
"retryable": true
}
],
"provider_failure_diagnostics": {
"hint": "<string>",
"provider": "<string>"
},
"routing_diagnostics": {
"filterStages": [
{
"stage": "<string>",
"beforeCount": 123,
"afterCount": 123,
"droppedProviders": [
{
"providerId": "<string>",
"reason": "<string>"
}
]
}
]
},
"provider_candidate_diagnostics": {
"totalProviders": 123,
"supportsEndpointCount": 123,
"candidateCount": 123,
"droppedUnsupportedEndpoint": [
"<string>"
],
"droppedMissingAdapter": [
{
"providerId": "<string>",
"endpoint": "<string>"
}
]
},
"provider_enablement": {
"capability": "<string>",
"providersBefore": [
"<string>"
],
"providersAfter": [
"<string>"
],
"dropped": [
{
"providerId": "<string>",
"reason": "<string>"
}
]
},
"missing_pricing_providers": [
"<string>"
],
"provider_payment_required_provider": "openai",
"provider_payment_required_support_notice": "Our upstream provider billing appears to be unavailable. If this persists, contact support.",
"details": [
{}
]
}
{
"error": "error_type",
"ok": false,
"message": "Human-readable error message",
"description": "Additional error details.",
"generation_id": "G-abc123",
"status_code": 502,
"error_type": "system",
"error_origin": "upstream",
"reason": "all_candidates_failed",
"attempt_count": 2,
"failed_providers": [
"google-ai-studio",
"openai"
],
"failed_statuses": [
403,
429
],
"upstream_error": {
"code": "PERMISSION_DENIED",
"message": "The caller does not have permission.",
"description": "<string>",
"param": "<string>"
},
"failure_sample": [
{
"provider": "<string>",
"type": "<string>",
"status": 123,
"upstream_error_code": "<string>",
"upstream_error_message": "<string>",
"upstream_error_description": "<string>",
"upstream_error_param": "<string>",
"upstream_payload_preview": "<string>",
"retryable": true
}
],
"provider_failure_diagnostics": {
"hint": "<string>",
"provider": "<string>"
},
"routing_diagnostics": {
"filterStages": [
{
"stage": "<string>",
"beforeCount": 123,
"afterCount": 123,
"droppedProviders": [
{
"providerId": "<string>",
"reason": "<string>"
}
]
}
]
},
"provider_candidate_diagnostics": {
"totalProviders": 123,
"supportsEndpointCount": 123,
"candidateCount": 123,
"droppedUnsupportedEndpoint": [
"<string>"
],
"droppedMissingAdapter": [
{
"providerId": "<string>",
"endpoint": "<string>"
}
]
},
"provider_enablement": {
"capability": "<string>",
"providersBefore": [
"<string>"
],
"providersAfter": [
"<string>"
],
"dropped": [
{
"providerId": "<string>",
"reason": "<string>"
}
]
},
"missing_pricing_providers": [
"<string>"
],
"provider_payment_required_provider": "openai",
"provider_payment_required_support_notice": "Our upstream provider billing appears to be unavailable. If this persists, contact support.",
"details": [
{}
]
}
By default, this endpoint only returns models that are currently routable. Set availability=all to include models that are known but not currently available. GET /models/me is reserved for future guardrail-aware filtering of models for the current caller. It currently returns 501 not implemented, so use GET /models for the shared gateway catalogue today.

Useful filters

  • endpoints uses public names like chat.completions, responses, and messages
  • status filters by model lifecycle, for example active, deprecated, or retired
  • provider filters by public provider ID, for example openai, anthropic, or google_vertex
  • provider_status filters the provider rollout tier, for example active, beta, alpha, or not_ready
  • provider_routing_status filters provider-level routing state
  • model_routing_status filters model-level routing state
  • capability_status filters provider capability state for the requested endpoint mapping
  • provider_availability_status filters provider-side availability, for example active, coming_soon, or inactive
  • provider_availability_reason filters provider-side availability reason, for example preview_only, provider_not_ready, gated, access_limited, or region_limited
  • organisation filters by the public model ID prefix, for example anthropic in anthropic/claude-3-haiku
  • availability=active is the default
  • availability=all includes models or providers that are coming_soon, inactive, or not yet publicly routable
Provider entries can also include:
  • availability_status
  • availability_reason
  • provider_status
  • provider_routing_status
  • model_routing_status
  • capability_status

Response

{
  "ok": true,
  "privacy_scope": "shared",
  "availability_mode": "all",
  "limit": 50,
  "offset": 0,
  "total": 99,
  "models": [
    {
      "id": "anthropic/claude-3-haiku",
      "canonical_slug": "anthropic/claude-3-haiku",
      "model_id": "anthropic/claude-3-haiku",
      "name": "anthropic/claude-3-haiku",
      "description": "anthropic/claude-3-haiku via Phaseo Gateway. Supports chat.completions, messages, responses.",
      "created": null,
      "release_date": null,
      "deprecation_date": null,
      "retirement_date": null,
      "status": "active",
      "availability": {
        "status": "coming_soon",
        "provider_count": 1,
        "active_provider_count": 0,
        "inactive_provider_count": 0
      },
      "organisation_id": "anthropic",
      "organisation_name": null,
      "organisation_colour": null,
      "aliases": [],
      "endpoints": ["chat.completions", "messages", "responses"],
      "input_types": ["text"],
      "output_types": ["text"],
      "architecture": {
        "modality": "text->text",
        "input_modalities": ["text"],
        "output_modalities": ["text"],
        "tokenizer": null,
        "instruct_type": "chat"
      },
      "providers": [
        {
          "api_provider_id": "anthropic",
          "api_provider_name": "Anthropic",
          "is_active_gateway": false,
          "availability_status": "coming_soon",
          "availability_reason": "preview_only",
          "provider_status": "beta",
          "provider_routing_status": "active",
          "model_routing_status": "active",
          "capability_status": "coming_soon",
          "effective_from": "2026-06-01T00:00:00Z",
          "effective_to": null,
          "endpoints": ["responses"],
          "params": [
            "max_tokens",
            "response_format",
            "stop",
            "structured_outputs",
            "temperature",
            "tool_choice",
            "tools",
            "top_k",
            "top_p"
          ],
          "supported_parameters": [
            "max_tokens",
            "response_format",
            "stop",
            "structured_outputs",
            "temperature",
            "tool_choice",
            "tools",
            "top_k",
            "top_p"
          ],
          "supported_parameters_detail": {
            "temperature": {
              "supported": true,
              "type": "number",
              "minimum": 0,
              "maximum": 2
            }
          }
        }
      ],
      "supported_params": [
        "max_tokens",
        "response_format",
        "stop",
        "structured_outputs",
        "temperature",
        "tool_choice",
        "tools",
        "top_k",
        "top_p"
      ],
      "supported_params_detail": {
        "temperature": {
          "supported": true,
          "type": "number",
          "minimum": 0,
          "maximum": 2,
          "providers": ["openai"]
        }
      },
      "supported_parameters": [
        "max_tokens",
        "response_format",
        "stop",
        "structured_outputs",
        "temperature",
        "tool_choice",
        "tools",
        "top_k",
        "top_p"
      ],
      "supported_parameters_detail": {
        "temperature": {
          "supported": true,
          "type": "number",
          "minimum": 0,
          "maximum": 2,
          "providers": ["openai"]
        }
      },
      "top_provider_id": null,
      "top_provider": {
        "context_length": null,
        "max_completion_tokens": null,
        "is_moderated": false
      },
      "pricing": {
        "prompt": null,
        "completion": null,
        "request": null,
        "image": null,
        "input_cache_read": null,
        "input_cache_write": null,
        "web_search": null
      },
      "pricing_detail": {
        "pricing_plan": "standard",
        "meters": {}
      },
      "per_request_limits": null
    }
  ]
}
availability_reason is the single-field explanation for why a provider entry is active, preview-only, or inactive.

Authorizations

Authorization
string
header
required

Bearer token authentication

Query Parameters

endpoints
string[]

Filter by endpoints

organisation

Filter by organisation Organisation identifier.

Available options:
ai21,
aion-labs,
allenai,
amazon,
anthropic,
arcee-ai,
baidu,
black-forest-labs,
bytedance,
cohere,
cursor,
deepseek,
eleven-labs,
essential-ai,
github,
google,
ibm,
inception,
inclusionai,
kwaipilot,
lg,
liquid-ai,
meituan,
meta,
microsoft,
minimax,
mistral,
moonshotai,
naver-hyperclova,
nex-agi,
nous,
nvidia,
openai,
perplexity,
poe,
poolside,
prime-intellect,
qwen,
relace,
sourceful,
spacex-ai,
stepfun,
suno,
tencent,
upstage,
vercel,
voyage,
windsurf,
xiaomi,
z-ai
provider
string[]

Filter by provider id

provider_status
string[]

Filter by provider rollout status

provider_routing_status
string[]

Filter by provider routing status

model_routing_status
string[]

Filter by model routing status

capability_status
string[]

Filter by provider capability status

provider_availability_status
string[]

Filter by provider availability status

provider_availability_reason
string[]

Filter by provider availability reason

status
string[]

Filter by model status

input_types
string[]

Filter by input types

output_types
string[]

Filter by output types

params
string[]

Filter by params

availability
enum<string>
default:active

Availability filter. active returns publicly routable models only; all includes non-routable availability records.

Available options:
active,
all
limit
integer
default:50

Limit the number of results

Required range: 1 <= x <= 250
offset
integer
default:0

Offset for pagination

Required range: 0 <= x <= 5000
format
enum<string>
default:json

Response format. Defaults to json.

Available options:
json,
rss,
atom
feed
enum<string>

Alias for format. Accepts json, rss, or atom.

Available options:
json,
rss,
atom

Response

List of models

ok
boolean
required
Example:

true

privacy_scope
enum<string>
required
Available options:
shared,
team
Example:

"shared"

availability_mode
enum<string>
required
Available options:
active,
all
Example:

"active"

limit
integer
required
Required range: 1 <= x <= 250
Example:

50

offset
integer
required
Required range: 0 <= x <= 5000
Example:

0

total
integer
required
Required range: x >= 0
Example:

128

models
object[]
required
Last modified on July 9, 2026