curl --request POST \
--url https://api.aurous-labs.com/v1/chat/completions \
--header 'Content-Type: application/json' \
--header 'X-Api-Key: <api-key>' \
--data '
{
"model": "aurous-grow-2.0-pro",
"messages": [
{
"content": "<string>",
"name": "<string>",
"tool_call_id": "<string>"
}
],
"max_tokens": 2,
"temperature": 1,
"top_p": 0.5,
"stream": true,
"stream_options": {},
"tools": [
{
"type": "function",
"function": {
"name": "get_weather",
"description": "Get current weather for a city.",
"parameters": {
"type": "object",
"properties": {
"city": {
"type": "string"
}
},
"required": [
"city"
]
}
}
}
],
"tool_choice": {},
"response_format": {},
"seed": 123,
"stop": {},
"presence_penalty": 0,
"frequency_penalty": 0,
"logprobs": true,
"top_logprobs": 10
}
'import requests
url = "https://api.aurous-labs.com/v1/chat/completions"
payload = {
"model": "aurous-grow-2.0-pro",
"messages": [
{
"content": "<string>",
"name": "<string>",
"tool_call_id": "<string>"
}
],
"max_tokens": 2,
"temperature": 1,
"top_p": 0.5,
"stream": True,
"stream_options": {},
"tools": [
{
"type": "function",
"function": {
"name": "get_weather",
"description": "Get current weather for a city.",
"parameters": {
"type": "object",
"properties": { "city": { "type": "string" } },
"required": ["city"]
}
}
}
],
"tool_choice": {},
"response_format": {},
"seed": 123,
"stop": {},
"presence_penalty": 0,
"frequency_penalty": 0,
"logprobs": True,
"top_logprobs": 10
}
headers = {
"X-Api-Key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'X-Api-Key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
model: 'aurous-grow-2.0-pro',
messages: [{content: '<string>', name: '<string>', tool_call_id: '<string>'}],
max_tokens: 2,
temperature: 1,
top_p: 0.5,
stream: true,
stream_options: {},
tools: [
{
type: 'function',
function: {
name: 'get_weather',
description: 'Get current weather for a city.',
parameters: {type: 'object', properties: {city: {type: 'string'}}, required: ['city']}
}
}
],
tool_choice: {},
response_format: {},
seed: 123,
stop: {},
presence_penalty: 0,
frequency_penalty: 0,
logprobs: true,
top_logprobs: 10
})
};
fetch('https://api.aurous-labs.com/v1/chat/completions', 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.aurous-labs.com/v1/chat/completions",
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' => 'aurous-grow-2.0-pro',
'messages' => [
[
'content' => '<string>',
'name' => '<string>',
'tool_call_id' => '<string>'
]
],
'max_tokens' => 2,
'temperature' => 1,
'top_p' => 0.5,
'stream' => true,
'stream_options' => [
],
'tools' => [
[
'type' => 'function',
'function' => [
'name' => 'get_weather',
'description' => 'Get current weather for a city.',
'parameters' => [
'type' => 'object',
'properties' => [
'city' => [
'type' => 'string'
]
],
'required' => [
'city'
]
]
]
]
],
'tool_choice' => [
],
'response_format' => [
],
'seed' => 123,
'stop' => [
],
'presence_penalty' => 0,
'frequency_penalty' => 0,
'logprobs' => true,
'top_logprobs' => 10
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"X-Api-Key: <api-key>"
],
]);
$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.aurous-labs.com/v1/chat/completions"
payload := strings.NewReader("{\n \"model\": \"aurous-grow-2.0-pro\",\n \"messages\": [\n {\n \"content\": \"<string>\",\n \"name\": \"<string>\",\n \"tool_call_id\": \"<string>\"\n }\n ],\n \"max_tokens\": 2,\n \"temperature\": 1,\n \"top_p\": 0.5,\n \"stream\": true,\n \"stream_options\": {},\n \"tools\": [\n {\n \"type\": \"function\",\n \"function\": {\n \"name\": \"get_weather\",\n \"description\": \"Get current weather for a city.\",\n \"parameters\": {\n \"type\": \"object\",\n \"properties\": {\n \"city\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"city\"\n ]\n }\n }\n }\n ],\n \"tool_choice\": {},\n \"response_format\": {},\n \"seed\": 123,\n \"stop\": {},\n \"presence_penalty\": 0,\n \"frequency_penalty\": 0,\n \"logprobs\": true,\n \"top_logprobs\": 10\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("X-Api-Key", "<api-key>")
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.aurous-labs.com/v1/chat/completions")
.header("X-Api-Key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"model\": \"aurous-grow-2.0-pro\",\n \"messages\": [\n {\n \"content\": \"<string>\",\n \"name\": \"<string>\",\n \"tool_call_id\": \"<string>\"\n }\n ],\n \"max_tokens\": 2,\n \"temperature\": 1,\n \"top_p\": 0.5,\n \"stream\": true,\n \"stream_options\": {},\n \"tools\": [\n {\n \"type\": \"function\",\n \"function\": {\n \"name\": \"get_weather\",\n \"description\": \"Get current weather for a city.\",\n \"parameters\": {\n \"type\": \"object\",\n \"properties\": {\n \"city\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"city\"\n ]\n }\n }\n }\n ],\n \"tool_choice\": {},\n \"response_format\": {},\n \"seed\": 123,\n \"stop\": {},\n \"presence_penalty\": 0,\n \"frequency_penalty\": 0,\n \"logprobs\": true,\n \"top_logprobs\": 10\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.aurous-labs.com/v1/chat/completions")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["X-Api-Key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"model\": \"aurous-grow-2.0-pro\",\n \"messages\": [\n {\n \"content\": \"<string>\",\n \"name\": \"<string>\",\n \"tool_call_id\": \"<string>\"\n }\n ],\n \"max_tokens\": 2,\n \"temperature\": 1,\n \"top_p\": 0.5,\n \"stream\": true,\n \"stream_options\": {},\n \"tools\": [\n {\n \"type\": \"function\",\n \"function\": {\n \"name\": \"get_weather\",\n \"description\": \"Get current weather for a city.\",\n \"parameters\": {\n \"type\": \"object\",\n \"properties\": {\n \"city\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"city\"\n ]\n }\n }\n }\n ],\n \"tool_choice\": {},\n \"response_format\": {},\n \"seed\": 123,\n \"stop\": {},\n \"presence_penalty\": 0,\n \"frequency_penalty\": 0,\n \"logprobs\": true,\n \"top_logprobs\": 10\n}"
response = http.request(request)
puts response.read_body{
"id": "cmp_01HXMQ7Z3K8Y2VNABCDEFGHJKM",
"object": "chat.completion",
"created": 1731948000,
"model": "aurous-grow-2.0-pro",
"choices": [
{
"index": 0,
"message": {
"role": "assistant",
"content": {},
"tool_calls": [
{
"id": "call_01HXM...",
"type": "function",
"function": {
"name": "get_weather",
"arguments": "{\"city\":\"Tokyo\"}"
}
}
]
},
"finish_reason": "stop"
}
],
"usage": {
"prompt_tokens": 200,
"completion_tokens": 600,
"total_tokens": 850,
"credits_charged": 0.2856,
"breakdown": {
"input_credits": 0.0006,
"output_credits": 0.27,
"model": "aurous-grow-2.0-pro",
"pricing_version": 7,
"reasoning_credits": 0.015
},
"reasoning_tokens": 50
},
"status": "completed",
"error": {
"code": "chat_provider_unavailable",
"type": "server_error",
"message": "Provider request failed."
}
}{
"error": {
"type": "invalid_request",
"code": "balance_too_low",
"message": "Team available balance is 1.5 credits, generation requires 2.0.",
"doc_url": "https://docs.aurous-labs.com/errors#balance_too_low",
"request_id": "req_01HXMQ7Z3K8Y2VNABCDEFGHJKM",
"param": "prompt"
}
}{
"error": {
"type": "invalid_request",
"code": "balance_too_low",
"message": "Team available balance is 1.5 credits, generation requires 2.0.",
"doc_url": "https://docs.aurous-labs.com/errors#balance_too_low",
"request_id": "req_01HXMQ7Z3K8Y2VNABCDEFGHJKM",
"param": "prompt"
}
}{
"error": {
"type": "invalid_request",
"code": "balance_too_low",
"message": "Team available balance is 1.5 credits, generation requires 2.0.",
"doc_url": "https://docs.aurous-labs.com/errors#balance_too_low",
"request_id": "req_01HXMQ7Z3K8Y2VNABCDEFGHJKM",
"param": "prompt"
}
}{
"error": {
"type": "invalid_request",
"code": "balance_too_low",
"message": "Team available balance is 1.5 credits, generation requires 2.0.",
"doc_url": "https://docs.aurous-labs.com/errors#balance_too_low",
"request_id": "req_01HXMQ7Z3K8Y2VNABCDEFGHJKM",
"param": "prompt"
}
}{
"error": {
"type": "invalid_request",
"code": "balance_too_low",
"message": "Team available balance is 1.5 credits, generation requires 2.0.",
"doc_url": "https://docs.aurous-labs.com/errors#balance_too_low",
"request_id": "req_01HXMQ7Z3K8Y2VNABCDEFGHJKM",
"param": "prompt"
}
}{
"error": {
"type": "invalid_request",
"code": "balance_too_low",
"message": "Team available balance is 1.5 credits, generation requires 2.0.",
"doc_url": "https://docs.aurous-labs.com/errors#balance_too_low",
"request_id": "req_01HXMQ7Z3K8Y2VNABCDEFGHJKM",
"param": "prompt"
}
}{
"error": {
"type": "invalid_request",
"code": "balance_too_low",
"message": "Team available balance is 1.5 credits, generation requires 2.0.",
"doc_url": "https://docs.aurous-labs.com/errors#balance_too_low",
"request_id": "req_01HXMQ7Z3K8Y2VNABCDEFGHJKM",
"param": "prompt"
}
}{
"error": {
"type": "invalid_request",
"code": "balance_too_low",
"message": "Team available balance is 1.5 credits, generation requires 2.0.",
"doc_url": "https://docs.aurous-labs.com/errors#balance_too_low",
"request_id": "req_01HXMQ7Z3K8Y2VNABCDEFGHJKM",
"param": "prompt"
}
}Create a chat completion
OpenAI-compatible chat completion. Supports streaming (stream: true returns text/event-stream SSE), function calling (tools / tool_choice), multimodal input (image_url / video_url content parts), reasoning_effort, and structured output (response_format). Pricing: credits are debited from team balance at completion, snapshotted to the per-model pricing version that was active when the credit hold was placed.
Idempotency-Key is honored on non-streamed requests only (24h replay window). Streamed requests echo Aurous-Idempotency-Status: ignored_streaming and emit a warning frame as the first SSE data line; use stream=false for at-most-once semantics.
Chat, embedding, image, and video rates are all NOT frozen per Aurous-Version — they track the most recently published rate version for each model, because provider economics and per-model markup are tuned more often than the API contract changes. The receipt echoed on every chat / embedding response (and the cost breakdown on every image / video generation) carries the exact rate that applied at dispatch or hold time, so audit trails remain stable even as the underlying rate card changes. Aurous-Version still governs request/response shapes — pin it for stable shapes, but call the relevant estimate or models endpoint for a current price immediately before you generate.
curl --request POST \
--url https://api.aurous-labs.com/v1/chat/completions \
--header 'Content-Type: application/json' \
--header 'X-Api-Key: <api-key>' \
--data '
{
"model": "aurous-grow-2.0-pro",
"messages": [
{
"content": "<string>",
"name": "<string>",
"tool_call_id": "<string>"
}
],
"max_tokens": 2,
"temperature": 1,
"top_p": 0.5,
"stream": true,
"stream_options": {},
"tools": [
{
"type": "function",
"function": {
"name": "get_weather",
"description": "Get current weather for a city.",
"parameters": {
"type": "object",
"properties": {
"city": {
"type": "string"
}
},
"required": [
"city"
]
}
}
}
],
"tool_choice": {},
"response_format": {},
"seed": 123,
"stop": {},
"presence_penalty": 0,
"frequency_penalty": 0,
"logprobs": true,
"top_logprobs": 10
}
'import requests
url = "https://api.aurous-labs.com/v1/chat/completions"
payload = {
"model": "aurous-grow-2.0-pro",
"messages": [
{
"content": "<string>",
"name": "<string>",
"tool_call_id": "<string>"
}
],
"max_tokens": 2,
"temperature": 1,
"top_p": 0.5,
"stream": True,
"stream_options": {},
"tools": [
{
"type": "function",
"function": {
"name": "get_weather",
"description": "Get current weather for a city.",
"parameters": {
"type": "object",
"properties": { "city": { "type": "string" } },
"required": ["city"]
}
}
}
],
"tool_choice": {},
"response_format": {},
"seed": 123,
"stop": {},
"presence_penalty": 0,
"frequency_penalty": 0,
"logprobs": True,
"top_logprobs": 10
}
headers = {
"X-Api-Key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'X-Api-Key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
model: 'aurous-grow-2.0-pro',
messages: [{content: '<string>', name: '<string>', tool_call_id: '<string>'}],
max_tokens: 2,
temperature: 1,
top_p: 0.5,
stream: true,
stream_options: {},
tools: [
{
type: 'function',
function: {
name: 'get_weather',
description: 'Get current weather for a city.',
parameters: {type: 'object', properties: {city: {type: 'string'}}, required: ['city']}
}
}
],
tool_choice: {},
response_format: {},
seed: 123,
stop: {},
presence_penalty: 0,
frequency_penalty: 0,
logprobs: true,
top_logprobs: 10
})
};
fetch('https://api.aurous-labs.com/v1/chat/completions', 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.aurous-labs.com/v1/chat/completions",
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' => 'aurous-grow-2.0-pro',
'messages' => [
[
'content' => '<string>',
'name' => '<string>',
'tool_call_id' => '<string>'
]
],
'max_tokens' => 2,
'temperature' => 1,
'top_p' => 0.5,
'stream' => true,
'stream_options' => [
],
'tools' => [
[
'type' => 'function',
'function' => [
'name' => 'get_weather',
'description' => 'Get current weather for a city.',
'parameters' => [
'type' => 'object',
'properties' => [
'city' => [
'type' => 'string'
]
],
'required' => [
'city'
]
]
]
]
],
'tool_choice' => [
],
'response_format' => [
],
'seed' => 123,
'stop' => [
],
'presence_penalty' => 0,
'frequency_penalty' => 0,
'logprobs' => true,
'top_logprobs' => 10
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"X-Api-Key: <api-key>"
],
]);
$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.aurous-labs.com/v1/chat/completions"
payload := strings.NewReader("{\n \"model\": \"aurous-grow-2.0-pro\",\n \"messages\": [\n {\n \"content\": \"<string>\",\n \"name\": \"<string>\",\n \"tool_call_id\": \"<string>\"\n }\n ],\n \"max_tokens\": 2,\n \"temperature\": 1,\n \"top_p\": 0.5,\n \"stream\": true,\n \"stream_options\": {},\n \"tools\": [\n {\n \"type\": \"function\",\n \"function\": {\n \"name\": \"get_weather\",\n \"description\": \"Get current weather for a city.\",\n \"parameters\": {\n \"type\": \"object\",\n \"properties\": {\n \"city\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"city\"\n ]\n }\n }\n }\n ],\n \"tool_choice\": {},\n \"response_format\": {},\n \"seed\": 123,\n \"stop\": {},\n \"presence_penalty\": 0,\n \"frequency_penalty\": 0,\n \"logprobs\": true,\n \"top_logprobs\": 10\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("X-Api-Key", "<api-key>")
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.aurous-labs.com/v1/chat/completions")
.header("X-Api-Key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"model\": \"aurous-grow-2.0-pro\",\n \"messages\": [\n {\n \"content\": \"<string>\",\n \"name\": \"<string>\",\n \"tool_call_id\": \"<string>\"\n }\n ],\n \"max_tokens\": 2,\n \"temperature\": 1,\n \"top_p\": 0.5,\n \"stream\": true,\n \"stream_options\": {},\n \"tools\": [\n {\n \"type\": \"function\",\n \"function\": {\n \"name\": \"get_weather\",\n \"description\": \"Get current weather for a city.\",\n \"parameters\": {\n \"type\": \"object\",\n \"properties\": {\n \"city\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"city\"\n ]\n }\n }\n }\n ],\n \"tool_choice\": {},\n \"response_format\": {},\n \"seed\": 123,\n \"stop\": {},\n \"presence_penalty\": 0,\n \"frequency_penalty\": 0,\n \"logprobs\": true,\n \"top_logprobs\": 10\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.aurous-labs.com/v1/chat/completions")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["X-Api-Key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"model\": \"aurous-grow-2.0-pro\",\n \"messages\": [\n {\n \"content\": \"<string>\",\n \"name\": \"<string>\",\n \"tool_call_id\": \"<string>\"\n }\n ],\n \"max_tokens\": 2,\n \"temperature\": 1,\n \"top_p\": 0.5,\n \"stream\": true,\n \"stream_options\": {},\n \"tools\": [\n {\n \"type\": \"function\",\n \"function\": {\n \"name\": \"get_weather\",\n \"description\": \"Get current weather for a city.\",\n \"parameters\": {\n \"type\": \"object\",\n \"properties\": {\n \"city\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"city\"\n ]\n }\n }\n }\n ],\n \"tool_choice\": {},\n \"response_format\": {},\n \"seed\": 123,\n \"stop\": {},\n \"presence_penalty\": 0,\n \"frequency_penalty\": 0,\n \"logprobs\": true,\n \"top_logprobs\": 10\n}"
response = http.request(request)
puts response.read_body{
"id": "cmp_01HXMQ7Z3K8Y2VNABCDEFGHJKM",
"object": "chat.completion",
"created": 1731948000,
"model": "aurous-grow-2.0-pro",
"choices": [
{
"index": 0,
"message": {
"role": "assistant",
"content": {},
"tool_calls": [
{
"id": "call_01HXM...",
"type": "function",
"function": {
"name": "get_weather",
"arguments": "{\"city\":\"Tokyo\"}"
}
}
]
},
"finish_reason": "stop"
}
],
"usage": {
"prompt_tokens": 200,
"completion_tokens": 600,
"total_tokens": 850,
"credits_charged": 0.2856,
"breakdown": {
"input_credits": 0.0006,
"output_credits": 0.27,
"model": "aurous-grow-2.0-pro",
"pricing_version": 7,
"reasoning_credits": 0.015
},
"reasoning_tokens": 50
},
"status": "completed",
"error": {
"code": "chat_provider_unavailable",
"type": "server_error",
"message": "Provider request failed."
}
}{
"error": {
"type": "invalid_request",
"code": "balance_too_low",
"message": "Team available balance is 1.5 credits, generation requires 2.0.",
"doc_url": "https://docs.aurous-labs.com/errors#balance_too_low",
"request_id": "req_01HXMQ7Z3K8Y2VNABCDEFGHJKM",
"param": "prompt"
}
}{
"error": {
"type": "invalid_request",
"code": "balance_too_low",
"message": "Team available balance is 1.5 credits, generation requires 2.0.",
"doc_url": "https://docs.aurous-labs.com/errors#balance_too_low",
"request_id": "req_01HXMQ7Z3K8Y2VNABCDEFGHJKM",
"param": "prompt"
}
}{
"error": {
"type": "invalid_request",
"code": "balance_too_low",
"message": "Team available balance is 1.5 credits, generation requires 2.0.",
"doc_url": "https://docs.aurous-labs.com/errors#balance_too_low",
"request_id": "req_01HXMQ7Z3K8Y2VNABCDEFGHJKM",
"param": "prompt"
}
}{
"error": {
"type": "invalid_request",
"code": "balance_too_low",
"message": "Team available balance is 1.5 credits, generation requires 2.0.",
"doc_url": "https://docs.aurous-labs.com/errors#balance_too_low",
"request_id": "req_01HXMQ7Z3K8Y2VNABCDEFGHJKM",
"param": "prompt"
}
}{
"error": {
"type": "invalid_request",
"code": "balance_too_low",
"message": "Team available balance is 1.5 credits, generation requires 2.0.",
"doc_url": "https://docs.aurous-labs.com/errors#balance_too_low",
"request_id": "req_01HXMQ7Z3K8Y2VNABCDEFGHJKM",
"param": "prompt"
}
}{
"error": {
"type": "invalid_request",
"code": "balance_too_low",
"message": "Team available balance is 1.5 credits, generation requires 2.0.",
"doc_url": "https://docs.aurous-labs.com/errors#balance_too_low",
"request_id": "req_01HXMQ7Z3K8Y2VNABCDEFGHJKM",
"param": "prompt"
}
}{
"error": {
"type": "invalid_request",
"code": "balance_too_low",
"message": "Team available balance is 1.5 credits, generation requires 2.0.",
"doc_url": "https://docs.aurous-labs.com/errors#balance_too_low",
"request_id": "req_01HXMQ7Z3K8Y2VNABCDEFGHJKM",
"param": "prompt"
}
}{
"error": {
"type": "invalid_request",
"code": "balance_too_low",
"message": "Team available balance is 1.5 credits, generation requires 2.0.",
"doc_url": "https://docs.aurous-labs.com/errors#balance_too_low",
"request_id": "req_01HXMQ7Z3K8Y2VNABCDEFGHJKM",
"param": "prompt"
}
}Authorizations
Your team API key (starts with al_live_).
Headers
Echoed on the response. ignored_streaming when stream=true (idempotency does not apply); otherwise reflects the interceptor decision.
Stripe-style idempotency key. Honored only when stream=false. Same key + same canonical-JSON body returns the cached response with Aurous-Idempotent-Replayed: true. Same key + different body returns 409 idempotency_key_in_use. Replay window is 24 hours.
Optional API version pin (YYYY-MM-DD). Omit the header to receive the platform default, currently 2026-08-26.
^\d{4}-\d{2}-\d{2}$"2026-08-26"
Body
Public model slug from GET /v1/models. Example: aurous-grow-2.0-pro.
128"aurous-grow-2.0-pro"
Conversation messages, ordered oldest → newest. 1-200 messages.
Show child attributes
Show child attributes
Maximum tokens to generate. Defaults to the model’s default_max_output_tokens. Requests with max_tokens > the model’s max_output_tokens_hard_cap return 400 max_tokens_exceeds_hard_cap.
x >= 10 <= x <= 20 <= x <= 1If true, response is text/event-stream (SSE) with OpenAI-shaped chunks. When streaming, Idempotency-Key is ignored and a warning frame is emitted in the first chunk; use stream=false for at-most-once semantics.
OpenAI-compatible stream options. When stream: true, include_usage: true (the default on Aurous Labs) causes the final non-[DONE] SSE frame to carry the usage block with token counts + credits_charged. Set include_usage: false to suppress (matches OpenAI behavior when the flag is omitted on their side). Ignored when stream: false.
Show child attributes
Show child attributes
Function-calling routing: auto | none | {type:"function", function:{name}}. required is NOT supported and returns 400 tool_choice_required_unsupported.
Structured output. {type:"text"|"json_object"|"json_schema", json_schema?:{...}}. For json_schema, the schema must be ≤10KB JSON-stringified and ≤5 levels deep, else 400 response_format_too_large / response_format_too_deep.
Reasoning depth for reasoning-capable models. Higher values increase latency + token cost (reasoning tokens billed separately at the model’s output rate).
minimal, low, medium, high Random seed for reproducibility (when supported by the model).
Up to 4 stop sequences (string or array of strings; each ≤200 chars).
-2 <= x <= 2-2 <= x <= 2Return log-probabilities for output tokens.
0 <= x <= 20Response
Chat completion. Content type depends on stream: application/json for stream:false (full response body); text/event-stream for stream:true (SSE).
Opaque chat-completion id.
"cmp_01HXMQ7Z3K8Y2VNABCDEFGHJKM"
chat.completion Unix timestamp (seconds).
1731948000
Aurous model slug used.
"aurous-grow-2.0-pro"
Always exactly 1 entry in v1.0.
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Aurous extension: terminal state of the chat completion. completed is the normal happy path. in_progress means the request is still being processed (only possible when polling GET /:id during a streamed request). failed means the provider or platform errored — see error for the typed reason. cancelled means a cancel was requested or the client disconnected.
completed, in_progress, failed, cancelled "completed"
Aurous extension: present only when status is failed or cancelled (in addition to the main error response when applicable). Echoes the typed error envelope shape so customers can branch on error.code without parsing string messages.
Show child attributes
Show child attributes
{
"code": "chat_provider_unavailable",
"type": "server_error",
"message": "Provider request failed."
}

