curl --request POST \
--url https://llm.modellix.ai/v1/messages \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"model": "anthropic/claude-sonnet-5",
"max_tokens": 256,
"messages": [
{
"role": "user",
"content": "ping"
}
]
}
'const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
model: 'anthropic/claude-sonnet-5',
max_tokens: 256,
messages: [{role: 'user', content: 'ping'}]
})
};
fetch('https://llm.modellix.ai/v1/messages', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://llm.modellix.ai/v1/messages"
payload = {
"model": "anthropic/claude-sonnet-5",
"max_tokens": 256,
"messages": [
{
"role": "user",
"content": "ping"
}
]
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://llm.modellix.ai/v1/messages"
payload := strings.NewReader("{\n \"model\": \"anthropic/claude-sonnet-5\",\n \"max_tokens\": 256,\n \"messages\": [\n {\n \"role\": \"user\",\n \"content\": \"ping\"\n }\n ]\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://llm.modellix.ai/v1/messages")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"model\": \"anthropic/claude-sonnet-5\",\n \"max_tokens\": 256,\n \"messages\": [\n {\n \"role\": \"user\",\n \"content\": \"ping\"\n }\n ]\n}")
.asString();const url = 'https://llm.modellix.ai/v1/messages';
const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
model: 'anthropic/claude-sonnet-5',
max_tokens: 256,
messages: [{role: 'user', content: 'ping'}]
})
};
fetch(url, options)
.then(res => res.json())
.then(json => console.log(json))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://llm.modellix.ai/v1/messages",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'model' => 'anthropic/claude-sonnet-5',
'max_tokens' => 256,
'messages' => [
[
'role' => 'user',
'content' => 'ping'
]
]
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$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://llm.modellix.ai/v1/messages")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"model\": \"anthropic/claude-sonnet-5\",\n \"max_tokens\": 256,\n \"messages\": [\n {\n \"role\": \"user\",\n \"content\": \"ping\"\n }\n ]\n}"
response = http.request(request)
puts response.read_bodyimport Foundation
let parameters = [
"model": "anthropic/claude-sonnet-5",
"max_tokens": 256,
"messages": [
[
"role": "user",
"content": "ping"
]
]
] as [String : Any?]
let postData = try JSONSerialization.data(withJSONObject: parameters, options: [])
let url = URL(string: "https://llm.modellix.ai/v1/messages")!
var request = URLRequest(url: url)
request.httpMethod = "POST"
request.timeoutInterval = 10
request.allHTTPHeaderFields = [
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
]
request.httpBody = postData
let (data, _) = try await URLSession.shared.data(for: request)
print(String(decoding: data, as: UTF8.self))$headers=@{}
$headers.Add("Authorization", "Bearer <token>")
$headers.Add("Content-Type", "application/json")
$response = Invoke-WebRequest -Uri 'https://llm.modellix.ai/v1/messages' -Method POST -Headers $headers -ContentType 'application/json' -Body '{
"model": "anthropic/claude-sonnet-5",
"max_tokens": 256,
"messages": [
{
"role": "user",
"content": "ping"
}
]
}'{
"id": "<string>",
"type": "message",
"role": "assistant",
"model": "<string>",
"content": [
{}
],
"stop_reason": "<string>",
"usage": {}
}Messages
Anthropic Messages–compatible endpoint on the Modellix LLM gateway. Accepts a synchronous request with model (provider/name, use anthropic/...), Anthropic-style messages, and required max_tokens; optional system prompt is supported. Returns a Messages JSON object by default, or SSE (text/event-stream) when stream=true. Auth accepts Authorization: Bearer or x-api-key (same Modellix API Key). Use this path for the Anthropic SDK, Claude Code, and other Anthropic-native clients; optional anthropic-version header is forwarded when present. Do not send google/... (Gemini) or OpenAI field shapes on this endpoint—use /chat/completions or /responses. Optional fields follow Anthropic Messages; support depends on the selected model.
curl --request POST \
--url https://llm.modellix.ai/v1/messages \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"model": "anthropic/claude-sonnet-5",
"max_tokens": 256,
"messages": [
{
"role": "user",
"content": "ping"
}
]
}
'const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
model: 'anthropic/claude-sonnet-5',
max_tokens: 256,
messages: [{role: 'user', content: 'ping'}]
})
};
fetch('https://llm.modellix.ai/v1/messages', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://llm.modellix.ai/v1/messages"
payload = {
"model": "anthropic/claude-sonnet-5",
"max_tokens": 256,
"messages": [
{
"role": "user",
"content": "ping"
}
]
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://llm.modellix.ai/v1/messages"
payload := strings.NewReader("{\n \"model\": \"anthropic/claude-sonnet-5\",\n \"max_tokens\": 256,\n \"messages\": [\n {\n \"role\": \"user\",\n \"content\": \"ping\"\n }\n ]\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://llm.modellix.ai/v1/messages")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"model\": \"anthropic/claude-sonnet-5\",\n \"max_tokens\": 256,\n \"messages\": [\n {\n \"role\": \"user\",\n \"content\": \"ping\"\n }\n ]\n}")
.asString();const url = 'https://llm.modellix.ai/v1/messages';
const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
model: 'anthropic/claude-sonnet-5',
max_tokens: 256,
messages: [{role: 'user', content: 'ping'}]
})
};
fetch(url, options)
.then(res => res.json())
.then(json => console.log(json))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://llm.modellix.ai/v1/messages",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'model' => 'anthropic/claude-sonnet-5',
'max_tokens' => 256,
'messages' => [
[
'role' => 'user',
'content' => 'ping'
]
]
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$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://llm.modellix.ai/v1/messages")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"model\": \"anthropic/claude-sonnet-5\",\n \"max_tokens\": 256,\n \"messages\": [\n {\n \"role\": \"user\",\n \"content\": \"ping\"\n }\n ]\n}"
response = http.request(request)
puts response.read_bodyimport Foundation
let parameters = [
"model": "anthropic/claude-sonnet-5",
"max_tokens": 256,
"messages": [
[
"role": "user",
"content": "ping"
]
]
] as [String : Any?]
let postData = try JSONSerialization.data(withJSONObject: parameters, options: [])
let url = URL(string: "https://llm.modellix.ai/v1/messages")!
var request = URLRequest(url: url)
request.httpMethod = "POST"
request.timeoutInterval = 10
request.allHTTPHeaderFields = [
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
]
request.httpBody = postData
let (data, _) = try await URLSession.shared.data(for: request)
print(String(decoding: data, as: UTF8.self))$headers=@{}
$headers.Add("Authorization", "Bearer <token>")
$headers.Add("Content-Type", "application/json")
$response = Invoke-WebRequest -Uri 'https://llm.modellix.ai/v1/messages' -Method POST -Headers $headers -ContentType 'application/json' -Body '{
"model": "anthropic/claude-sonnet-5",
"max_tokens": 256,
"messages": [
{
"role": "user",
"content": "ping"
}
]
}'{
"id": "<string>",
"type": "message",
"role": "assistant",
"model": "<string>",
"content": [
{}
],
"stop_reason": "<string>",
"usage": {}
}Authorizations
Authorization: Bearer (OpenAI SDK, Codex, OpenCode, etc.)
Headers
Optional session affinity header. Length 8–128; alphanumeric, -, and _ only.
8 - 128^[A-Za-z0-9_-]+$"my-conversation-001"
Anthropic API version header (optional; often set automatically by native Anthropic clients; forwarded upstream when present)
"2023-06-01"
Optional end-user id for filtering request logs later. Length 8–128; ASCII letters, digits, -, and _ only. Invalid values return 400.
8 - 128^[A-Za-z0-9_-]+$"end_user_01"
Body
Anthropic Messages request body. Requires model, messages, and max_tokens; optional system, stream, thinking, and output_config. Message roles are user or assistant only.
Core fields below; other fields follow Anthropic Messages.
Model ID in provider/name form
"openai/gpt-5.5"
"openai/gpt-5.6-sol"
"anthropic/claude-sonnet-5"
"google/gemini-3.6-flash"
Anthropic Messages list (min 1). Roles are user or assistant only; put system text in system, not as a message role.
1Show child attributes
Show child attributes
Required. Maximum number of tokens to generate.
x >= 1Default false. When true, returns an Anthropic Messages SSE event stream.
System prompt (string or content-block array)
Optional extended thinking. Follows Anthropic Messages. Support depends on the model.
Optional output config, including thinking effort. Follows Anthropic Messages. Support and allowed values depend on the model.
Show child attributes
Show child attributes
Response
Success. Non-streaming returns JSON; streaming returns SSE.
Shape follows Anthropic message
Unique identifier for this Anthropic message.
Object type. Typically message for Anthropic Messages.
"message"
Role of the response message. Typically assistant.
"assistant"
Model ID that produced this Anthropic message.
Array of Anthropic content blocks in the assistant reply.
Why generation stopped, or null.
Token usage object for the Anthropic Messages API. Shape follows Anthropic usage (for example input and output tokens), not Chat Completions prompt_tokens fields.