List models
curl --request GET \
--url https://api.siray.ai/v1/models \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.siray.ai/v1/models"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.siray.ai/v1/models', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.siray.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;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.siray.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.siray.ai/v1/models")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.siray.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{
"success": true,
"object": "list",
"data": [
{
"id": "openai/gpt-4o",
"object": "model",
"created": 1626777600,
"owned_by": "openai",
"supported_endpoint_types": [
"openai"
],
"status": "active"
},
{
"id": "openai/gpt-4",
"object": "model",
"created": 1626777600,
"owned_by": "openai",
"supported_endpoint_types": [
"openai"
],
"status": "deprecated",
"deprecated_at": 1710000000,
"replaced_by": "openai/gpt-4.1"
}
]
}API documentation
Models API
List available models, inspect supported endpoint types, and track model lifecycle metadata.
GET
/
v1
/
models
List models
curl --request GET \
--url https://api.siray.ai/v1/models \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.siray.ai/v1/models"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.siray.ai/v1/models', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.siray.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;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.siray.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.siray.ai/v1/models")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.siray.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{
"success": true,
"object": "list",
"data": [
{
"id": "openai/gpt-4o",
"object": "model",
"created": 1626777600,
"owned_by": "openai",
"supported_endpoint_types": [
"openai"
],
"status": "active"
},
{
"id": "openai/gpt-4",
"object": "model",
"created": 1626777600,
"owned_by": "openai",
"supported_endpoint_types": [
"openai"
],
"status": "deprecated",
"deprecated_at": 1710000000,
"replaced_by": "openai/gpt-4.1"
}
]
}Overview
Use the Models API to discover which models are available to you. Each model includes the endpoint families it supports and lifecycle metadata you can use to migrate away from deprecated or retired models.Use
supported_endpoint_types to choose the correct generation endpoint instead of relying only on model naming conventions.Endpoints
GET https://api.siray.ai/v1/modelsGET https://api.siray.ai/v1/models/{model}
Authorization: Bearer <SIRAY_API_TOKEN>
| Name | Description |
|---|---|
model | Model ID to retrieve, such as openai/gpt-4o or gpt-4o. |
List response structure
{
"success": true,
"object": "list",
"data": [
{
"id": "openai/gpt-4o",
"object": "model",
"created": 1626777600,
"owned_by": "openai",
"supported_endpoint_types": [
"openai"
],
"status": "active"
},
{
"id": "openai/gpt-4",
"object": "model",
"created": 1626777600,
"owned_by": "openai",
"supported_endpoint_types": [
"openai"
],
"status": "deprecated",
"deprecated_at": 1710000000,
"replaced_by": "openai/gpt-4.1"
}
]
}
Retrieve response structure
{
"id": "openai/gpt-4o",
"object": "model",
"created": 1626777600,
"owned_by": "openai",
"supported_endpoint_types": [
"openai"
],
"status": "active"
}
Fields
id: Model identifier used in request payloads.object: Alwaysmodelfor each model item.created: Unix timestamp attached to the model metadata.owned_by: Owner derived fromid. If the ID contains/, this is the part before the first/; otherwise it is the full model ID.supported_endpoint_types: Endpoint families supported by the model. Empty array means the API could not determine a supported endpoint type.status: Lifecycle state of the model. Values are listed below.deprecated_at: Unix timestamp when the model was deprecated. Omitted when empty.retired_at: Unix timestamp when the model was retired. Omitted when empty.replaced_by: Replacement model ID. Omitted when empty.
Supported endpoint types
| Type | Use case |
|---|---|
openai | OpenAI-compatible chat completions. |
openai-response | OpenAI-compatible Responses API. |
anthropic | Anthropic-compatible messages endpoint. |
gemini | Gemini-compatible content generation. |
jina-rerank | Rerank requests. |
embeddings | Embedding generation. |
image-generation | Text-to-image or image-to-image generation. |
video-generation | Video, text-to-video, image-to-video, or video-to-video generation. |
3d-generation | Text-to-3D or image-to-3D generation. |
openai-video | OpenAI-compatible video endpoint. |
Lifecycle status values
| Status | Meaning |
|---|---|
active | Model is currently available for normal use. |
deprecated | Model still works, but you should migrate to replaced_by when provided. |
retired | Model is no longer intended for use. Migrate before sending production traffic. |
Usage examples
List all models available to the token:curl -X GET "https://api.siray.ai/v1/models" \
-H "Authorization: Bearer ${SIRAY_API_TOKEN}"
curl -X GET "https://api.siray.ai/v1/models/openai/gpt-4o" \
-H "Authorization: Bearer ${SIRAY_API_TOKEN}"
For provider-qualified IDs that contain /, URL-encode the slash if your HTTP client does not preserve it in path parameters.
Authorizations
API token passed as a Bearer token in the Authorization header.
