Endpoints
Models
List available models and their metadata.
GET
/
v1
/
models
Models
curl --request GET \
--url https://api.example.com/v1/modelsimport requests
url = "https://api.example.com/v1/models"
response = requests.get(url)
print(response.text)const options = {method: 'GET'};
fetch('https://api.example.com/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.example.com/v1/models",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
]);
$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.example.com/v1/models"
req, _ := http.NewRequest("GET", url, nil)
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.example.com/v1/models")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.example.com/v1/models")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
response = http.request(request)
puts response.read_bodyList Models
Returns a list of all models available through ModelStack.Request
GET https://api.modelstack.cc/v1/models
Headers
| Header | Required | Description |
|---|---|---|
Authorization | Yes | Bearer your_api_key |
Example Request
curl https://api.modelstack.cc/v1/models \
-H "Authorization: Bearer your_api_key"
from openai import OpenAI
client = OpenAI(
api_key="your_api_key",
base_url="https://api.modelstack.cc/v1"
)
models = client.models.list()
for model in models.data:
print(model.id)
import OpenAI from "openai";
const client = new OpenAI({
apiKey: "your_api_key",
baseURL: "https://api.modelstack.cc/v1",
});
const models = await client.models.list();
models.data.forEach((model) => console.log(model.id));
Response
{
"object": "list",
"data": [
{
"id": "claude-sonnet-4-5",
"object": "model",
"created": 1699000000,
"owned_by": "anthropic"
},
{
"id": "gpt-4o",
"object": "model",
"created": 1699000000,
"owned_by": "openai"
},
{
"id": "gemini-2.5-pro",
"object": "model",
"created": 1699000000,
"owned_by": "google"
}
]
}
Supported Models
ModelStack supports 40+ models across three providers. Here’s a summary:Anthropic
| Model ID | Description |
|---|---|
claude-opus-4-6 | Latest Opus model |
claude-opus-4-5 | Claude Opus 4.5 |
claude-opus-4-1 | Claude Opus 4.1 |
claude-sonnet-4-5 | Claude Sonnet 4.5 |
claude-sonnet-4-0 | Claude Sonnet 4.0 |
claude-opus-4 | Claude Opus 4 |
claude-haiku-4-5 | Claude Haiku 4.5 |
claude-3-7-sonnet-20250219 | Claude 3.7 Sonnet |
claude-3-5-sonnet-20241022 | Claude 3.5 Sonnet |
claude-3-5-haiku-20241022 | Claude 3.5 Haiku |
claude-3-haiku-20240307 | Claude 3 Haiku |
OpenAI
| Model ID | Description |
|---|---|
gpt-4o | GPT-4o |
gpt-4o-mini | GPT-4o Mini |
gpt-4-turbo | GPT-4 Turbo |
o1 | OpenAI o1 |
o1-mini | OpenAI o1 Mini |
o3 | OpenAI o3 |
o3-mini | OpenAI o3 Mini |
o4-mini | OpenAI o4 Mini |
| Model ID | Description |
|---|---|
gemini-2.5-pro | Gemini 2.5 Pro |
gemini-2.5-flash | Gemini 2.5 Flash |
gemini-2.0-flash | Gemini 2.0 Flash |
gemini-2.0-flash-lite | Gemini 2.0 Flash Lite |
gemini-1.5-pro | Gemini 1.5 Pro |
gemini-1.5-flash | Gemini 1.5 Flash |
Versioned model variants (e.g.,
claude-sonnet-4-5-20250929, gpt-4o-2024-11-20) are also supported. Any model starting with a supported prefix (claude-, gpt-, o1-, o3-, o4-, gemini-) will be accepted.⌘I
Models
curl --request GET \
--url https://api.example.com/v1/modelsimport requests
url = "https://api.example.com/v1/models"
response = requests.get(url)
print(response.text)const options = {method: 'GET'};
fetch('https://api.example.com/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.example.com/v1/models",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
]);
$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.example.com/v1/models"
req, _ := http.NewRequest("GET", url, nil)
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.example.com/v1/models")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.example.com/v1/models")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
response = http.request(request)
puts response.read_body