curl --request POST \
--url https://api.parallellabs.app/api/v0/claude/v1/messages \
--header 'Content-Type: application/json' \
--header 'X-API-Key: <api-key>' \
--data '
{
"model": "<string>",
"messages": [
{
"role": "<string>",
"content": "<string>"
}
],
"max_tokens": 123,
"system": "<string>",
"stream": false,
"temperature": 123,
"top_p": 123,
"top_k": 123,
"stop_sequences": [
"<string>"
],
"tools": [
{}
],
"tool_choice": {},
"metadata": {}
}
'import requests
url = "https://api.parallellabs.app/api/v0/claude/v1/messages"
payload = {
"model": "<string>",
"messages": [
{
"role": "<string>",
"content": "<string>"
}
],
"max_tokens": 123,
"system": "<string>",
"stream": False,
"temperature": 123,
"top_p": 123,
"top_k": 123,
"stop_sequences": ["<string>"],
"tools": [{}],
"tool_choice": {},
"metadata": {}
}
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: '<string>',
messages: [{role: '<string>', content: '<string>'}],
max_tokens: 123,
system: '<string>',
stream: false,
temperature: 123,
top_p: 123,
top_k: 123,
stop_sequences: ['<string>'],
tools: [{}],
tool_choice: {},
metadata: {}
})
};
fetch('https://api.parallellabs.app/api/v0/claude/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.parallellabs.app/api/v0/claude/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' => '<string>',
'messages' => [
[
'role' => '<string>',
'content' => '<string>'
]
],
'max_tokens' => 123,
'system' => '<string>',
'stream' => false,
'temperature' => 123,
'top_p' => 123,
'top_k' => 123,
'stop_sequences' => [
'<string>'
],
'tools' => [
[
]
],
'tool_choice' => [
],
'metadata' => [
]
]),
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.parallellabs.app/api/v0/claude/v1/messages"
payload := strings.NewReader("{\n \"model\": \"<string>\",\n \"messages\": [\n {\n \"role\": \"<string>\",\n \"content\": \"<string>\"\n }\n ],\n \"max_tokens\": 123,\n \"system\": \"<string>\",\n \"stream\": false,\n \"temperature\": 123,\n \"top_p\": 123,\n \"top_k\": 123,\n \"stop_sequences\": [\n \"<string>\"\n ],\n \"tools\": [\n {}\n ],\n \"tool_choice\": {},\n \"metadata\": {}\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.parallellabs.app/api/v0/claude/v1/messages")
.header("X-API-Key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"model\": \"<string>\",\n \"messages\": [\n {\n \"role\": \"<string>\",\n \"content\": \"<string>\"\n }\n ],\n \"max_tokens\": 123,\n \"system\": \"<string>\",\n \"stream\": false,\n \"temperature\": 123,\n \"top_p\": 123,\n \"top_k\": 123,\n \"stop_sequences\": [\n \"<string>\"\n ],\n \"tools\": [\n {}\n ],\n \"tool_choice\": {},\n \"metadata\": {}\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.parallellabs.app/api/v0/claude/v1/messages")
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\": \"<string>\",\n \"messages\": [\n {\n \"role\": \"<string>\",\n \"content\": \"<string>\"\n }\n ],\n \"max_tokens\": 123,\n \"system\": \"<string>\",\n \"stream\": false,\n \"temperature\": 123,\n \"top_p\": 123,\n \"top_k\": 123,\n \"stop_sequences\": [\n \"<string>\"\n ],\n \"tools\": [\n {}\n ],\n \"tool_choice\": {},\n \"metadata\": {}\n}"
response = http.request(request)
puts response.read_body{
"id": "<string>",
"type": "<string>",
"role": "<string>",
"model": "<string>",
"content": [
{}
],
"stop_reason": "<string>",
"stop_sequence": "<string>",
"usage": {
"input_tokens": 123,
"output_tokens": 123
}
}{
"error": "<string>"
}{
"error": "<string>"
}{
"error": "<string>"
}{
"error": "<string>"
}{
"error": "<string>"
}Create a message (Anthropic Messages API compatible).
curl --request POST \
--url https://api.parallellabs.app/api/v0/claude/v1/messages \
--header 'Content-Type: application/json' \
--header 'X-API-Key: <api-key>' \
--data '
{
"model": "<string>",
"messages": [
{
"role": "<string>",
"content": "<string>"
}
],
"max_tokens": 123,
"system": "<string>",
"stream": false,
"temperature": 123,
"top_p": 123,
"top_k": 123,
"stop_sequences": [
"<string>"
],
"tools": [
{}
],
"tool_choice": {},
"metadata": {}
}
'import requests
url = "https://api.parallellabs.app/api/v0/claude/v1/messages"
payload = {
"model": "<string>",
"messages": [
{
"role": "<string>",
"content": "<string>"
}
],
"max_tokens": 123,
"system": "<string>",
"stream": False,
"temperature": 123,
"top_p": 123,
"top_k": 123,
"stop_sequences": ["<string>"],
"tools": [{}],
"tool_choice": {},
"metadata": {}
}
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: '<string>',
messages: [{role: '<string>', content: '<string>'}],
max_tokens: 123,
system: '<string>',
stream: false,
temperature: 123,
top_p: 123,
top_k: 123,
stop_sequences: ['<string>'],
tools: [{}],
tool_choice: {},
metadata: {}
})
};
fetch('https://api.parallellabs.app/api/v0/claude/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.parallellabs.app/api/v0/claude/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' => '<string>',
'messages' => [
[
'role' => '<string>',
'content' => '<string>'
]
],
'max_tokens' => 123,
'system' => '<string>',
'stream' => false,
'temperature' => 123,
'top_p' => 123,
'top_k' => 123,
'stop_sequences' => [
'<string>'
],
'tools' => [
[
]
],
'tool_choice' => [
],
'metadata' => [
]
]),
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.parallellabs.app/api/v0/claude/v1/messages"
payload := strings.NewReader("{\n \"model\": \"<string>\",\n \"messages\": [\n {\n \"role\": \"<string>\",\n \"content\": \"<string>\"\n }\n ],\n \"max_tokens\": 123,\n \"system\": \"<string>\",\n \"stream\": false,\n \"temperature\": 123,\n \"top_p\": 123,\n \"top_k\": 123,\n \"stop_sequences\": [\n \"<string>\"\n ],\n \"tools\": [\n {}\n ],\n \"tool_choice\": {},\n \"metadata\": {}\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.parallellabs.app/api/v0/claude/v1/messages")
.header("X-API-Key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"model\": \"<string>\",\n \"messages\": [\n {\n \"role\": \"<string>\",\n \"content\": \"<string>\"\n }\n ],\n \"max_tokens\": 123,\n \"system\": \"<string>\",\n \"stream\": false,\n \"temperature\": 123,\n \"top_p\": 123,\n \"top_k\": 123,\n \"stop_sequences\": [\n \"<string>\"\n ],\n \"tools\": [\n {}\n ],\n \"tool_choice\": {},\n \"metadata\": {}\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.parallellabs.app/api/v0/claude/v1/messages")
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\": \"<string>\",\n \"messages\": [\n {\n \"role\": \"<string>\",\n \"content\": \"<string>\"\n }\n ],\n \"max_tokens\": 123,\n \"system\": \"<string>\",\n \"stream\": false,\n \"temperature\": 123,\n \"top_p\": 123,\n \"top_k\": 123,\n \"stop_sequences\": [\n \"<string>\"\n ],\n \"tools\": [\n {}\n ],\n \"tool_choice\": {},\n \"metadata\": {}\n}"
response = http.request(request)
puts response.read_body{
"id": "<string>",
"type": "<string>",
"role": "<string>",
"model": "<string>",
"content": [
{}
],
"stop_reason": "<string>",
"stop_sequence": "<string>",
"usage": {
"input_tokens": 123,
"output_tokens": 123
}
}{
"error": "<string>"
}{
"error": "<string>"
}{
"error": "<string>"
}{
"error": "<string>"
}{
"error": "<string>"
}Authorizations
Company API key - scoped to a specific company. Generate from the Integrations page in your dashboard.
Body
Message request (Anthropic Messages API compatible)
Request body for creating a message (Anthropic Messages API compatible)
Model ID — any platform model name, or an Anthropic model ID (routed by tier)
Array of input messages
Show child attributes
Show child attributes
Maximum tokens to generate
System prompt: string or array of text blocks
Enable server-sent event streaming
Sampling temperature (0-1)
Nucleus sampling parameter
Top-k sampling parameter
Custom stop sequences
Tool definitions (Anthropic tool format)
Tool choice specification
Request metadata
Response
Message response
Message response (Anthropic Messages API compatible)
Message ID
Object type (message)
Message role (assistant)
Model used (as requested)
Array of content blocks (text and tool_use)
Why generation stopped: end_turn, max_tokens, or tool_use
Stop sequence hit, if any
Token usage
Show child attributes
Show child attributes

