Batch Create Messages
curl --request POST \
--url https://api.example.com/messages/batch \
--header 'Content-Type: application/json' \
--data '
{
"task_id": "<string>",
"contents": [
{
"content": "<string>",
"type": "text",
"style": "static",
"format": "plain",
"attachments": [
{
"file_id": "<string>",
"name": "<string>",
"size": 123,
"type": "<string>"
}
]
}
],
"created_at": "2023-11-07T05:31:56Z"
}
'import requests
url = "https://api.example.com/messages/batch"
payload = {
"task_id": "<string>",
"contents": [
{
"content": "<string>",
"type": "text",
"style": "static",
"format": "plain",
"attachments": [
{
"file_id": "<string>",
"name": "<string>",
"size": 123,
"type": "<string>"
}
]
}
],
"created_at": "2023-11-07T05:31:56Z"
}
headers = {"Content-Type": "application/json"}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'Content-Type': 'application/json'},
body: JSON.stringify({
task_id: '<string>',
contents: [
{
content: '<string>',
type: 'text',
style: 'static',
format: 'plain',
attachments: [{file_id: '<string>', name: '<string>', size: 123, type: '<string>'}]
}
],
created_at: '2023-11-07T05:31:56Z'
})
};
fetch('https://api.example.com/messages/batch', 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/messages/batch",
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([
'task_id' => '<string>',
'contents' => [
[
'content' => '<string>',
'type' => 'text',
'style' => 'static',
'format' => 'plain',
'attachments' => [
[
'file_id' => '<string>',
'name' => '<string>',
'size' => 123,
'type' => '<string>'
]
]
]
],
'created_at' => '2023-11-07T05:31:56Z'
]),
CURLOPT_HTTPHEADER => [
"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.example.com/messages/batch"
payload := strings.NewReader("{\n \"task_id\": \"<string>\",\n \"contents\": [\n {\n \"content\": \"<string>\",\n \"type\": \"text\",\n \"style\": \"static\",\n \"format\": \"plain\",\n \"attachments\": [\n {\n \"file_id\": \"<string>\",\n \"name\": \"<string>\",\n \"size\": 123,\n \"type\": \"<string>\"\n }\n ]\n }\n ],\n \"created_at\": \"2023-11-07T05:31:56Z\"\n}")
req, _ := http.NewRequest("POST", url, payload)
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.example.com/messages/batch")
.header("Content-Type", "application/json")
.body("{\n \"task_id\": \"<string>\",\n \"contents\": [\n {\n \"content\": \"<string>\",\n \"type\": \"text\",\n \"style\": \"static\",\n \"format\": \"plain\",\n \"attachments\": [\n {\n \"file_id\": \"<string>\",\n \"name\": \"<string>\",\n \"size\": 123,\n \"type\": \"<string>\"\n }\n ]\n }\n ],\n \"created_at\": \"2023-11-07T05:31:56Z\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.example.com/messages/batch")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Content-Type"] = 'application/json'
request.body = "{\n \"task_id\": \"<string>\",\n \"contents\": [\n {\n \"content\": \"<string>\",\n \"type\": \"text\",\n \"style\": \"static\",\n \"format\": \"plain\",\n \"attachments\": [\n {\n \"file_id\": \"<string>\",\n \"name\": \"<string>\",\n \"size\": 123,\n \"type\": \"<string>\"\n }\n ]\n }\n ],\n \"created_at\": \"2023-11-07T05:31:56Z\"\n}"
response = http.request(request)
puts response.read_body[
{
"task_id": "<string>",
"content": {
"content": "<string>",
"type": "text",
"style": "static",
"format": "plain",
"attachments": [
{
"file_id": "<string>",
"name": "<string>",
"size": 123,
"type": "<string>"
}
]
},
"id": "<string>",
"created_at": "2023-11-07T05:31:56Z",
"updated_at": "2023-11-07T05:31:56Z"
}
]{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>",
"input": "<unknown>",
"ctx": {}
}
]
}Messages
Batch Create Messages
POST
/
messages
/
batch
Batch Create Messages
curl --request POST \
--url https://api.example.com/messages/batch \
--header 'Content-Type: application/json' \
--data '
{
"task_id": "<string>",
"contents": [
{
"content": "<string>",
"type": "text",
"style": "static",
"format": "plain",
"attachments": [
{
"file_id": "<string>",
"name": "<string>",
"size": 123,
"type": "<string>"
}
]
}
],
"created_at": "2023-11-07T05:31:56Z"
}
'import requests
url = "https://api.example.com/messages/batch"
payload = {
"task_id": "<string>",
"contents": [
{
"content": "<string>",
"type": "text",
"style": "static",
"format": "plain",
"attachments": [
{
"file_id": "<string>",
"name": "<string>",
"size": 123,
"type": "<string>"
}
]
}
],
"created_at": "2023-11-07T05:31:56Z"
}
headers = {"Content-Type": "application/json"}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'Content-Type': 'application/json'},
body: JSON.stringify({
task_id: '<string>',
contents: [
{
content: '<string>',
type: 'text',
style: 'static',
format: 'plain',
attachments: [{file_id: '<string>', name: '<string>', size: 123, type: '<string>'}]
}
],
created_at: '2023-11-07T05:31:56Z'
})
};
fetch('https://api.example.com/messages/batch', 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/messages/batch",
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([
'task_id' => '<string>',
'contents' => [
[
'content' => '<string>',
'type' => 'text',
'style' => 'static',
'format' => 'plain',
'attachments' => [
[
'file_id' => '<string>',
'name' => '<string>',
'size' => 123,
'type' => '<string>'
]
]
]
],
'created_at' => '2023-11-07T05:31:56Z'
]),
CURLOPT_HTTPHEADER => [
"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.example.com/messages/batch"
payload := strings.NewReader("{\n \"task_id\": \"<string>\",\n \"contents\": [\n {\n \"content\": \"<string>\",\n \"type\": \"text\",\n \"style\": \"static\",\n \"format\": \"plain\",\n \"attachments\": [\n {\n \"file_id\": \"<string>\",\n \"name\": \"<string>\",\n \"size\": 123,\n \"type\": \"<string>\"\n }\n ]\n }\n ],\n \"created_at\": \"2023-11-07T05:31:56Z\"\n}")
req, _ := http.NewRequest("POST", url, payload)
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.example.com/messages/batch")
.header("Content-Type", "application/json")
.body("{\n \"task_id\": \"<string>\",\n \"contents\": [\n {\n \"content\": \"<string>\",\n \"type\": \"text\",\n \"style\": \"static\",\n \"format\": \"plain\",\n \"attachments\": [\n {\n \"file_id\": \"<string>\",\n \"name\": \"<string>\",\n \"size\": 123,\n \"type\": \"<string>\"\n }\n ]\n }\n ],\n \"created_at\": \"2023-11-07T05:31:56Z\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.example.com/messages/batch")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Content-Type"] = 'application/json'
request.body = "{\n \"task_id\": \"<string>\",\n \"contents\": [\n {\n \"content\": \"<string>\",\n \"type\": \"text\",\n \"style\": \"static\",\n \"format\": \"plain\",\n \"attachments\": [\n {\n \"file_id\": \"<string>\",\n \"name\": \"<string>\",\n \"size\": 123,\n \"type\": \"<string>\"\n }\n ]\n }\n ],\n \"created_at\": \"2023-11-07T05:31:56Z\"\n}"
response = http.request(request)
puts response.read_body[
{
"task_id": "<string>",
"content": {
"content": "<string>",
"type": "text",
"style": "static",
"format": "plain",
"attachments": [
{
"file_id": "<string>",
"name": "<string>",
"size": 123,
"type": "<string>"
}
]
},
"id": "<string>",
"created_at": "2023-11-07T05:31:56Z",
"updated_at": "2023-11-07T05:31:56Z"
}
]{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>",
"input": "<unknown>",
"ctx": {}
}
]
}Body
application/json
contents
(TextContent · object | ReasoningContent · object | DataContent · object | ToolRequestContent · object | ToolResponseContent · object)[]
required
- TextContent
- ReasoningContent
- DataContent
- ToolRequestContent
- ToolResponseContent
Show child attributes
Show child attributes
Optional base timestamp. Each message in the batch is stamped with base + i milliseconds to guarantee unique, monotonic ordering. If omitted, the server stamps datetime.now(UTC) at insert time.
Response
Successful Response
ID of the task this message belongs to
The content of the message. This content is not OpenAI compatible. These are messages that are meant to be displayed to the user.
- TextContent
- ReasoningContent
- DataContent
- ToolRequestContent
- ToolResponseContent
Show child attributes
Show child attributes
The task message's unique id
Available options:
IN_PROGRESS, DONE The timestamp when the message was created
The timestamp when the message was last updated
⌘I

