Send agent message (SSE stream)
Same body shape as the sync endpoint. Returns a Server-Sent Events stream. Inspect the conversation-id event for the conversation public ID, accumulate text-delta events for the reply text, and the debug-info event surfaces tokens, model and cost. Pre-flight failures (insufficient ops, agent not published, etc.) are emitted as a single error event with HTTP 200 — SSE clients should parse the body.
curl --request POST \
--url https://api.gennia.ai/public/api/v1/agents/{agentPublicId}/messages/stream \
--header 'Content-Type: application/json' \
--header 'X-Api-Key: <api-key>' \
--data '
{
"attachments": [
{
"base64": "<string>",
"filename": "<string>",
"mediaType": "<string>",
"url": "<string>"
}
],
"content": "Hi, can you summarize my latest invoices?",
"conversationId": "9c3a4d22-1a8d-4b3f-9b1e-7a0f0c4f3e21",
"externalUserId": "user_42",
"isTest": false,
"metadata": {},
"timeoutSeconds": 60
}
'import requests
url = "https://api.gennia.ai/public/api/v1/agents/{agentPublicId}/messages/stream"
payload = {
"attachments": [
{
"base64": "<string>",
"filename": "<string>",
"mediaType": "<string>",
"url": "<string>"
}
],
"content": "Hi, can you summarize my latest invoices?",
"conversationId": "9c3a4d22-1a8d-4b3f-9b1e-7a0f0c4f3e21",
"externalUserId": "user_42",
"isTest": False,
"metadata": {},
"timeoutSeconds": 60
}
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({
attachments: [
{
base64: '<string>',
filename: '<string>',
mediaType: '<string>',
url: '<string>'
}
],
content: 'Hi, can you summarize my latest invoices?',
conversationId: '9c3a4d22-1a8d-4b3f-9b1e-7a0f0c4f3e21',
externalUserId: 'user_42',
isTest: false,
metadata: {},
timeoutSeconds: 60
})
};
fetch('https://api.gennia.ai/public/api/v1/agents/{agentPublicId}/messages/stream', 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.gennia.ai/public/api/v1/agents/{agentPublicId}/messages/stream",
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([
'attachments' => [
[
'base64' => '<string>',
'filename' => '<string>',
'mediaType' => '<string>',
'url' => '<string>'
]
],
'content' => 'Hi, can you summarize my latest invoices?',
'conversationId' => '9c3a4d22-1a8d-4b3f-9b1e-7a0f0c4f3e21',
'externalUserId' => 'user_42',
'isTest' => false,
'metadata' => [
],
'timeoutSeconds' => 60
]),
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.gennia.ai/public/api/v1/agents/{agentPublicId}/messages/stream"
payload := strings.NewReader("{\n \"attachments\": [\n {\n \"base64\": \"<string>\",\n \"filename\": \"<string>\",\n \"mediaType\": \"<string>\",\n \"url\": \"<string>\"\n }\n ],\n \"content\": \"Hi, can you summarize my latest invoices?\",\n \"conversationId\": \"9c3a4d22-1a8d-4b3f-9b1e-7a0f0c4f3e21\",\n \"externalUserId\": \"user_42\",\n \"isTest\": false,\n \"metadata\": {},\n \"timeoutSeconds\": 60\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.gennia.ai/public/api/v1/agents/{agentPublicId}/messages/stream")
.header("X-Api-Key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"attachments\": [\n {\n \"base64\": \"<string>\",\n \"filename\": \"<string>\",\n \"mediaType\": \"<string>\",\n \"url\": \"<string>\"\n }\n ],\n \"content\": \"Hi, can you summarize my latest invoices?\",\n \"conversationId\": \"9c3a4d22-1a8d-4b3f-9b1e-7a0f0c4f3e21\",\n \"externalUserId\": \"user_42\",\n \"isTest\": false,\n \"metadata\": {},\n \"timeoutSeconds\": 60\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.gennia.ai/public/api/v1/agents/{agentPublicId}/messages/stream")
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 \"attachments\": [\n {\n \"base64\": \"<string>\",\n \"filename\": \"<string>\",\n \"mediaType\": \"<string>\",\n \"url\": \"<string>\"\n }\n ],\n \"content\": \"Hi, can you summarize my latest invoices?\",\n \"conversationId\": \"9c3a4d22-1a8d-4b3f-9b1e-7a0f0c4f3e21\",\n \"externalUserId\": \"user_42\",\n \"isTest\": false,\n \"metadata\": {},\n \"timeoutSeconds\": 60\n}"
response = http.request(request)
puts response.read_body[
{}
][
{}
][
{}
][
{}
]Autorizações
Parâmetros de caminho
Agent public ID
Corpo
Body for sending a message to an agent (sync or streaming).
Optional attachments to include with this message (max 10).
10Show child attributes
Show child attributes
Message text. May be empty when at least one attachment is provided.
32000"Hi, can you summarize my latest invoices?"
Continue this conversation. Omit to create a new conversation or reuse one for the externalUserId.
"9c3a4d22-1a8d-4b3f-9b1e-7a0f0c4f3e21"
Stable end-user identifier. Auto-generated UUID if omitted on a new conversation.
255"user_42"
Only honored when CREATING a new conversation. true excludes the conversation from the Studio inbox. Ignored when continuing an existing conversation.
false
Arbitrary JSON metadata; stored on the conversation (first message only).
Show child attributes
Show child attributes
Sync-only: max wall-clock seconds to block before returning 408. Ignored by the stream endpoint.
1 <= x <= 30060
Resposta
SSE stream begins
Esta página foi útil?
curl --request POST \
--url https://api.gennia.ai/public/api/v1/agents/{agentPublicId}/messages/stream \
--header 'Content-Type: application/json' \
--header 'X-Api-Key: <api-key>' \
--data '
{
"attachments": [
{
"base64": "<string>",
"filename": "<string>",
"mediaType": "<string>",
"url": "<string>"
}
],
"content": "Hi, can you summarize my latest invoices?",
"conversationId": "9c3a4d22-1a8d-4b3f-9b1e-7a0f0c4f3e21",
"externalUserId": "user_42",
"isTest": false,
"metadata": {},
"timeoutSeconds": 60
}
'import requests
url = "https://api.gennia.ai/public/api/v1/agents/{agentPublicId}/messages/stream"
payload = {
"attachments": [
{
"base64": "<string>",
"filename": "<string>",
"mediaType": "<string>",
"url": "<string>"
}
],
"content": "Hi, can you summarize my latest invoices?",
"conversationId": "9c3a4d22-1a8d-4b3f-9b1e-7a0f0c4f3e21",
"externalUserId": "user_42",
"isTest": False,
"metadata": {},
"timeoutSeconds": 60
}
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({
attachments: [
{
base64: '<string>',
filename: '<string>',
mediaType: '<string>',
url: '<string>'
}
],
content: 'Hi, can you summarize my latest invoices?',
conversationId: '9c3a4d22-1a8d-4b3f-9b1e-7a0f0c4f3e21',
externalUserId: 'user_42',
isTest: false,
metadata: {},
timeoutSeconds: 60
})
};
fetch('https://api.gennia.ai/public/api/v1/agents/{agentPublicId}/messages/stream', 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.gennia.ai/public/api/v1/agents/{agentPublicId}/messages/stream",
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([
'attachments' => [
[
'base64' => '<string>',
'filename' => '<string>',
'mediaType' => '<string>',
'url' => '<string>'
]
],
'content' => 'Hi, can you summarize my latest invoices?',
'conversationId' => '9c3a4d22-1a8d-4b3f-9b1e-7a0f0c4f3e21',
'externalUserId' => 'user_42',
'isTest' => false,
'metadata' => [
],
'timeoutSeconds' => 60
]),
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.gennia.ai/public/api/v1/agents/{agentPublicId}/messages/stream"
payload := strings.NewReader("{\n \"attachments\": [\n {\n \"base64\": \"<string>\",\n \"filename\": \"<string>\",\n \"mediaType\": \"<string>\",\n \"url\": \"<string>\"\n }\n ],\n \"content\": \"Hi, can you summarize my latest invoices?\",\n \"conversationId\": \"9c3a4d22-1a8d-4b3f-9b1e-7a0f0c4f3e21\",\n \"externalUserId\": \"user_42\",\n \"isTest\": false,\n \"metadata\": {},\n \"timeoutSeconds\": 60\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.gennia.ai/public/api/v1/agents/{agentPublicId}/messages/stream")
.header("X-Api-Key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"attachments\": [\n {\n \"base64\": \"<string>\",\n \"filename\": \"<string>\",\n \"mediaType\": \"<string>\",\n \"url\": \"<string>\"\n }\n ],\n \"content\": \"Hi, can you summarize my latest invoices?\",\n \"conversationId\": \"9c3a4d22-1a8d-4b3f-9b1e-7a0f0c4f3e21\",\n \"externalUserId\": \"user_42\",\n \"isTest\": false,\n \"metadata\": {},\n \"timeoutSeconds\": 60\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.gennia.ai/public/api/v1/agents/{agentPublicId}/messages/stream")
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 \"attachments\": [\n {\n \"base64\": \"<string>\",\n \"filename\": \"<string>\",\n \"mediaType\": \"<string>\",\n \"url\": \"<string>\"\n }\n ],\n \"content\": \"Hi, can you summarize my latest invoices?\",\n \"conversationId\": \"9c3a4d22-1a8d-4b3f-9b1e-7a0f0c4f3e21\",\n \"externalUserId\": \"user_42\",\n \"isTest\": false,\n \"metadata\": {},\n \"timeoutSeconds\": 60\n}"
response = http.request(request)
puts response.read_body[
{}
][
{}
][
{}
][
{}
]
