curl --request POST \
--url https://api.aisa.one/v1/messages \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"model": "claude-sonnet-4-6",
"max_tokens": 1024,
"messages": [
{
"role": "user",
"content": "Hello, Claude"
}
],
"system": "<string>",
"temperature": 1,
"top_p": 123,
"top_k": 123,
"stop_sequences": [
"<string>"
],
"stream": false,
"tools": [
{
"name": "<string>",
"input_schema": {},
"description": "<string>",
"type": "custom"
}
],
"tool_choice": {
"name": "<string>",
"disable_parallel_tool_use": false
},
"thinking": {
"type": "enabled",
"budget_tokens": 10000
},
"metadata": {
"user_id": "<string>"
},
"service_tier": "auto"
}
'import requests
url = "https://api.aisa.one/v1/messages"
payload = {
"model": "claude-sonnet-4-6",
"max_tokens": 1024,
"messages": [
{
"role": "user",
"content": "Hello, Claude"
}
],
"system": "<string>",
"temperature": 1,
"top_p": 123,
"top_k": 123,
"stop_sequences": ["<string>"],
"stream": False,
"tools": [
{
"name": "<string>",
"input_schema": {},
"description": "<string>",
"type": "custom"
}
],
"tool_choice": {
"name": "<string>",
"disable_parallel_tool_use": False
},
"thinking": {
"type": "enabled",
"budget_tokens": 10000
},
"metadata": { "user_id": "<string>" },
"service_tier": "auto"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
model: 'claude-sonnet-4-6',
max_tokens: 1024,
messages: [{role: 'user', content: 'Hello, Claude'}],
system: '<string>',
temperature: 1,
top_p: 123,
top_k: 123,
stop_sequences: ['<string>'],
stream: false,
tools: [{name: '<string>', input_schema: {}, description: '<string>', type: 'custom'}],
tool_choice: {name: '<string>', disable_parallel_tool_use: false},
thinking: {type: 'enabled', budget_tokens: 10000},
metadata: {user_id: '<string>'},
service_tier: 'auto'
})
};
fetch('https://api.aisa.one/v1/messages', 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.aisa.one/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' => 'claude-sonnet-4-6',
'max_tokens' => 1024,
'messages' => [
[
'role' => 'user',
'content' => 'Hello, Claude'
]
],
'system' => '<string>',
'temperature' => 1,
'top_p' => 123,
'top_k' => 123,
'stop_sequences' => [
'<string>'
],
'stream' => false,
'tools' => [
[
'name' => '<string>',
'input_schema' => [
],
'description' => '<string>',
'type' => 'custom'
]
],
'tool_choice' => [
'name' => '<string>',
'disable_parallel_tool_use' => false
],
'thinking' => [
'type' => 'enabled',
'budget_tokens' => 10000
],
'metadata' => [
'user_id' => '<string>'
],
'service_tier' => 'auto'
]),
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;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.aisa.one/v1/messages"
payload := strings.NewReader("{\n \"model\": \"claude-sonnet-4-6\",\n \"max_tokens\": 1024,\n \"messages\": [\n {\n \"role\": \"user\",\n \"content\": \"Hello, Claude\"\n }\n ],\n \"system\": \"<string>\",\n \"temperature\": 1,\n \"top_p\": 123,\n \"top_k\": 123,\n \"stop_sequences\": [\n \"<string>\"\n ],\n \"stream\": false,\n \"tools\": [\n {\n \"name\": \"<string>\",\n \"input_schema\": {},\n \"description\": \"<string>\",\n \"type\": \"custom\"\n }\n ],\n \"tool_choice\": {\n \"name\": \"<string>\",\n \"disable_parallel_tool_use\": false\n },\n \"thinking\": {\n \"type\": \"enabled\",\n \"budget_tokens\": 10000\n },\n \"metadata\": {\n \"user_id\": \"<string>\"\n },\n \"service_tier\": \"auto\"\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://api.aisa.one/v1/messages")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"model\": \"claude-sonnet-4-6\",\n \"max_tokens\": 1024,\n \"messages\": [\n {\n \"role\": \"user\",\n \"content\": \"Hello, Claude\"\n }\n ],\n \"system\": \"<string>\",\n \"temperature\": 1,\n \"top_p\": 123,\n \"top_k\": 123,\n \"stop_sequences\": [\n \"<string>\"\n ],\n \"stream\": false,\n \"tools\": [\n {\n \"name\": \"<string>\",\n \"input_schema\": {},\n \"description\": \"<string>\",\n \"type\": \"custom\"\n }\n ],\n \"tool_choice\": {\n \"name\": \"<string>\",\n \"disable_parallel_tool_use\": false\n },\n \"thinking\": {\n \"type\": \"enabled\",\n \"budget_tokens\": 10000\n },\n \"metadata\": {\n \"user_id\": \"<string>\"\n },\n \"service_tier\": \"auto\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.aisa.one/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\": \"claude-sonnet-4-6\",\n \"max_tokens\": 1024,\n \"messages\": [\n {\n \"role\": \"user\",\n \"content\": \"Hello, Claude\"\n }\n ],\n \"system\": \"<string>\",\n \"temperature\": 1,\n \"top_p\": 123,\n \"top_k\": 123,\n \"stop_sequences\": [\n \"<string>\"\n ],\n \"stream\": false,\n \"tools\": [\n {\n \"name\": \"<string>\",\n \"input_schema\": {},\n \"description\": \"<string>\",\n \"type\": \"custom\"\n }\n ],\n \"tool_choice\": {\n \"name\": \"<string>\",\n \"disable_parallel_tool_use\": false\n },\n \"thinking\": {\n \"type\": \"enabled\",\n \"budget_tokens\": 10000\n },\n \"metadata\": {\n \"user_id\": \"<string>\"\n },\n \"service_tier\": \"auto\"\n}"
response = http.request(request)
puts response.read_body{
"id": "msg_024e7cf42f5d47cfa6982b5ff8b55642",
"type": "message",
"role": "assistant",
"content": [
{}
],
"model": "claude-sonnet-4-6",
"stop_sequence": "<string>",
"usage": {
"input_tokens": 123,
"output_tokens": 123,
"cache_creation_input_tokens": 123,
"cache_read_input_tokens": 123
}
}Claude Messages
Create a message
curl --request POST \
--url https://api.aisa.one/v1/messages \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"model": "claude-sonnet-4-6",
"max_tokens": 1024,
"messages": [
{
"role": "user",
"content": "Hello, Claude"
}
],
"system": "<string>",
"temperature": 1,
"top_p": 123,
"top_k": 123,
"stop_sequences": [
"<string>"
],
"stream": false,
"tools": [
{
"name": "<string>",
"input_schema": {},
"description": "<string>",
"type": "custom"
}
],
"tool_choice": {
"name": "<string>",
"disable_parallel_tool_use": false
},
"thinking": {
"type": "enabled",
"budget_tokens": 10000
},
"metadata": {
"user_id": "<string>"
},
"service_tier": "auto"
}
'import requests
url = "https://api.aisa.one/v1/messages"
payload = {
"model": "claude-sonnet-4-6",
"max_tokens": 1024,
"messages": [
{
"role": "user",
"content": "Hello, Claude"
}
],
"system": "<string>",
"temperature": 1,
"top_p": 123,
"top_k": 123,
"stop_sequences": ["<string>"],
"stream": False,
"tools": [
{
"name": "<string>",
"input_schema": {},
"description": "<string>",
"type": "custom"
}
],
"tool_choice": {
"name": "<string>",
"disable_parallel_tool_use": False
},
"thinking": {
"type": "enabled",
"budget_tokens": 10000
},
"metadata": { "user_id": "<string>" },
"service_tier": "auto"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
model: 'claude-sonnet-4-6',
max_tokens: 1024,
messages: [{role: 'user', content: 'Hello, Claude'}],
system: '<string>',
temperature: 1,
top_p: 123,
top_k: 123,
stop_sequences: ['<string>'],
stream: false,
tools: [{name: '<string>', input_schema: {}, description: '<string>', type: 'custom'}],
tool_choice: {name: '<string>', disable_parallel_tool_use: false},
thinking: {type: 'enabled', budget_tokens: 10000},
metadata: {user_id: '<string>'},
service_tier: 'auto'
})
};
fetch('https://api.aisa.one/v1/messages', 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.aisa.one/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' => 'claude-sonnet-4-6',
'max_tokens' => 1024,
'messages' => [
[
'role' => 'user',
'content' => 'Hello, Claude'
]
],
'system' => '<string>',
'temperature' => 1,
'top_p' => 123,
'top_k' => 123,
'stop_sequences' => [
'<string>'
],
'stream' => false,
'tools' => [
[
'name' => '<string>',
'input_schema' => [
],
'description' => '<string>',
'type' => 'custom'
]
],
'tool_choice' => [
'name' => '<string>',
'disable_parallel_tool_use' => false
],
'thinking' => [
'type' => 'enabled',
'budget_tokens' => 10000
],
'metadata' => [
'user_id' => '<string>'
],
'service_tier' => 'auto'
]),
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;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.aisa.one/v1/messages"
payload := strings.NewReader("{\n \"model\": \"claude-sonnet-4-6\",\n \"max_tokens\": 1024,\n \"messages\": [\n {\n \"role\": \"user\",\n \"content\": \"Hello, Claude\"\n }\n ],\n \"system\": \"<string>\",\n \"temperature\": 1,\n \"top_p\": 123,\n \"top_k\": 123,\n \"stop_sequences\": [\n \"<string>\"\n ],\n \"stream\": false,\n \"tools\": [\n {\n \"name\": \"<string>\",\n \"input_schema\": {},\n \"description\": \"<string>\",\n \"type\": \"custom\"\n }\n ],\n \"tool_choice\": {\n \"name\": \"<string>\",\n \"disable_parallel_tool_use\": false\n },\n \"thinking\": {\n \"type\": \"enabled\",\n \"budget_tokens\": 10000\n },\n \"metadata\": {\n \"user_id\": \"<string>\"\n },\n \"service_tier\": \"auto\"\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://api.aisa.one/v1/messages")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"model\": \"claude-sonnet-4-6\",\n \"max_tokens\": 1024,\n \"messages\": [\n {\n \"role\": \"user\",\n \"content\": \"Hello, Claude\"\n }\n ],\n \"system\": \"<string>\",\n \"temperature\": 1,\n \"top_p\": 123,\n \"top_k\": 123,\n \"stop_sequences\": [\n \"<string>\"\n ],\n \"stream\": false,\n \"tools\": [\n {\n \"name\": \"<string>\",\n \"input_schema\": {},\n \"description\": \"<string>\",\n \"type\": \"custom\"\n }\n ],\n \"tool_choice\": {\n \"name\": \"<string>\",\n \"disable_parallel_tool_use\": false\n },\n \"thinking\": {\n \"type\": \"enabled\",\n \"budget_tokens\": 10000\n },\n \"metadata\": {\n \"user_id\": \"<string>\"\n },\n \"service_tier\": \"auto\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.aisa.one/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\": \"claude-sonnet-4-6\",\n \"max_tokens\": 1024,\n \"messages\": [\n {\n \"role\": \"user\",\n \"content\": \"Hello, Claude\"\n }\n ],\n \"system\": \"<string>\",\n \"temperature\": 1,\n \"top_p\": 123,\n \"top_k\": 123,\n \"stop_sequences\": [\n \"<string>\"\n ],\n \"stream\": false,\n \"tools\": [\n {\n \"name\": \"<string>\",\n \"input_schema\": {},\n \"description\": \"<string>\",\n \"type\": \"custom\"\n }\n ],\n \"tool_choice\": {\n \"name\": \"<string>\",\n \"disable_parallel_tool_use\": false\n },\n \"thinking\": {\n \"type\": \"enabled\",\n \"budget_tokens\": 10000\n },\n \"metadata\": {\n \"user_id\": \"<string>\"\n },\n \"service_tier\": \"auto\"\n}"
response = http.request(request)
puts response.read_body{
"id": "msg_024e7cf42f5d47cfa6982b5ff8b55642",
"type": "message",
"role": "assistant",
"content": [
{}
],
"model": "claude-sonnet-4-6",
"stop_sequence": "<string>",
"usage": {
"input_tokens": 123,
"output_tokens": 123,
"cache_creation_input_tokens": 123,
"cache_read_input_tokens": 123
}
}/v1/messages specification, routed through the AIsa gateway at https://api.aisa.one/v1/messages.
Use this endpoint when you want to call Claude models (claude-opus-4-7, claude-sonnet-4-6, claude-haiku-4-5-20251001, etc.) with Anthropic’s native request format — including extended thinking, tool use, and prompt caching. If you prefer OpenAI-style chat completions, the same Claude models are also available via the OpenAI Chat endpoint.
Authentication uses your AIsa API key as a Bearer token. See the model catalog for the full list of supported Claude variants and context windows, and pricing for per-token rates.Authorizations
Your AIsa API key as a Bearer token.
Body
Claude model identifier. Examples: claude-opus-4-7, claude-sonnet-4-6, claude-haiku-4-5-20251001.
"claude-sonnet-4-6"
Maximum number of tokens to generate before stopping.
1024
Conversation turns.
Show child attributes
Show child attributes
[
{
"role": "user",
"content": "Hello, Claude"
}
]System prompt. String or array of text blocks.
Randomness. 0 = deterministic, 1 = creative.
0 <= x <= 1Nucleus sampling. Use instead of temperature.
Only sample from the top K options for each token.
Custom sequences that stop generation.
Enable SSE streaming.
Tools the model may use.
Show child attributes
Show child attributes
How the model uses tools.
Show child attributes
Show child attributes
Enable extended thinking for complex reasoning.
Show child attributes
Show child attributes
Show child attributes
Show child attributes
auto, standard_only Response
Successful response
"msg_024e7cf42f5d47cfa6982b5ff8b55642"
"message"
"assistant"
Response content blocks (text, tool_use, thinking, etc.).
"claude-sonnet-4-6"
end_turn, stop_sequence, max_tokens, tool_use Show child attributes
Show child attributes