curl --request POST \
--url https://api.{environment}.corti.app/v2/agentic/agents/{agentId}/a2a/message:stream \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--header 'Tenant-Name: <api-key>' \
--data '
{
"message": {
"messageId": "msg.0192f4c8-5f8d-7e61-924d-6fb09b5ead73",
"role": "ROLE_USER",
"parts": [
{
"text": "What is the ICD-10 code for asthma?"
}
]
}
}
'import { CortiClient, CortiEnvironment } from "@corti/sdk";
const client = new CortiClient({
environment: CortiEnvironment.Eu,
auth: {
clientId: "YOUR_CLIENT_ID",
clientSecret: "YOUR_CLIENT_SECRET"
},
tenantName: "YOUR_TENANT_NAME"
});
const response = await client.agentic.agents.streamMessage("agt.0192f4c8-2c5a-7b3e-9f1a-3c8d6e2b7a40", {
message: {
messageId: "msg.0192f4c8-5f8d-7e61-924d-6fb09b5ead73",
role: "ROLE_USER",
parts: [{
text: "What is the ICD-10 code for asthma?"
}]
}
});
for await (const item of response) {
console.log(item);
}
using Corti;
var client = new CortiClient(
"TENANT_NAME",
CortiClientEnvironment.Eu,
new CortiClientAuth.ClientCredentials("client_id", "client_secret")
);
var items = client.Agentic.Agents.StreamMessageAsync(
"agt.0192f4c8-2c5a-7b3e-9f1a-3c8d6e2b7a40",
new AgenticAgentsSendMessageRequest
{
Message = new CommonMessage
{
MessageId = "msg.0192f4c8-5f8d-7e61-924d-6fb09b5ead73",
Role = CommonRole.RoleUser,
Parts = new List<CommonPart>()
{
new CommonPart { Text = "What is the ICD-10 code for asthma?" },
},
},
}
);
await foreach (var item in items)
{
// do something with item
}
import requests
url = "https://api.{environment}.corti.app/v2/agentic/agents/{agentId}/a2a/message:stream"
payload = { "message": {
"messageId": "msg.0192f4c8-5f8d-7e61-924d-6fb09b5ead73",
"role": "ROLE_USER",
"parts": [{ "text": "What is the ICD-10 code for asthma?" }]
} }
headers = {
"Authorization": "Bearer <token>",
"Tenant-Name": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.{environment}.corti.app/v2/agentic/agents/{agentId}/a2a/message: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([
'message' => [
'messageId' => 'msg.0192f4c8-5f8d-7e61-924d-6fb09b5ead73',
'role' => 'ROLE_USER',
'parts' => [
[
'text' => 'What is the ICD-10 code for asthma?'
]
]
]
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json",
"Tenant-Name: <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.{environment}.corti.app/v2/agentic/agents/{agentId}/a2a/message:stream"
payload := strings.NewReader("{\n \"message\": {\n \"messageId\": \"msg.0192f4c8-5f8d-7e61-924d-6fb09b5ead73\",\n \"role\": \"ROLE_USER\",\n \"parts\": [\n {\n \"text\": \"What is the ICD-10 code for asthma?\"\n }\n ]\n }\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Tenant-Name", "<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.{environment}.corti.app/v2/agentic/agents/{agentId}/a2a/message:stream")
.header("Authorization", "Bearer <token>")
.header("Tenant-Name", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"message\": {\n \"messageId\": \"msg.0192f4c8-5f8d-7e61-924d-6fb09b5ead73\",\n \"role\": \"ROLE_USER\",\n \"parts\": [\n {\n \"text\": \"What is the ICD-10 code for asthma?\"\n }\n ]\n }\n}")
.asString();{
"event": "message",
"data": "{\"task\":{\"id\":\"task.0192f4c8-4e7c-7d50-b13c-5eaf8a4d9c62\",\"contextId\":\"ctx.0192f4c8-3d6b-7c4f-a02b-4d9e7f3c8b51\",\"status\":{\"state\":\"TASK_STATE_WORKING\"}}}"
}{
"error": {
"code": 404,
"status": "NOT_FOUND",
"message": "Task not found.",
"details": [
{
"@type": "type.googleapis.com/google.rpc.ErrorInfo",
"reason": "TASK_NOT_FOUND",
"domain": "a2a-protocol.org",
"metadata": {
"taskId": "task.0192f4c8-4e7c-7d50-b13c-5eaf8a4d9c62"
}
}
]
}
}{
"error": {
"code": 404,
"status": "NOT_FOUND",
"message": "Task not found.",
"details": [
{
"@type": "type.googleapis.com/google.rpc.ErrorInfo",
"reason": "TASK_NOT_FOUND",
"domain": "a2a-protocol.org",
"metadata": {
"taskId": "task.0192f4c8-4e7c-7d50-b13c-5eaf8a4d9c62"
}
}
]
}
}{
"error": {
"code": 404,
"status": "NOT_FOUND",
"message": "Task not found.",
"details": [
{
"@type": "type.googleapis.com/google.rpc.ErrorInfo",
"reason": "TASK_NOT_FOUND",
"domain": "a2a-protocol.org",
"metadata": {
"taskId": "task.0192f4c8-4e7c-7d50-b13c-5eaf8a4d9c62"
}
}
]
}
}Stream a message (A2A REST)
The HTTP+JSON binding of A2A SendStreamingMessage. Responds with a
text/event-stream of Task, statusUpdate, and artifactUpdate events.
curl --request POST \
--url https://api.{environment}.corti.app/v2/agentic/agents/{agentId}/a2a/message:stream \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--header 'Tenant-Name: <api-key>' \
--data '
{
"message": {
"messageId": "msg.0192f4c8-5f8d-7e61-924d-6fb09b5ead73",
"role": "ROLE_USER",
"parts": [
{
"text": "What is the ICD-10 code for asthma?"
}
]
}
}
'import { CortiClient, CortiEnvironment } from "@corti/sdk";
const client = new CortiClient({
environment: CortiEnvironment.Eu,
auth: {
clientId: "YOUR_CLIENT_ID",
clientSecret: "YOUR_CLIENT_SECRET"
},
tenantName: "YOUR_TENANT_NAME"
});
const response = await client.agentic.agents.streamMessage("agt.0192f4c8-2c5a-7b3e-9f1a-3c8d6e2b7a40", {
message: {
messageId: "msg.0192f4c8-5f8d-7e61-924d-6fb09b5ead73",
role: "ROLE_USER",
parts: [{
text: "What is the ICD-10 code for asthma?"
}]
}
});
for await (const item of response) {
console.log(item);
}
using Corti;
var client = new CortiClient(
"TENANT_NAME",
CortiClientEnvironment.Eu,
new CortiClientAuth.ClientCredentials("client_id", "client_secret")
);
var items = client.Agentic.Agents.StreamMessageAsync(
"agt.0192f4c8-2c5a-7b3e-9f1a-3c8d6e2b7a40",
new AgenticAgentsSendMessageRequest
{
Message = new CommonMessage
{
MessageId = "msg.0192f4c8-5f8d-7e61-924d-6fb09b5ead73",
Role = CommonRole.RoleUser,
Parts = new List<CommonPart>()
{
new CommonPart { Text = "What is the ICD-10 code for asthma?" },
},
},
}
);
await foreach (var item in items)
{
// do something with item
}
import requests
url = "https://api.{environment}.corti.app/v2/agentic/agents/{agentId}/a2a/message:stream"
payload = { "message": {
"messageId": "msg.0192f4c8-5f8d-7e61-924d-6fb09b5ead73",
"role": "ROLE_USER",
"parts": [{ "text": "What is the ICD-10 code for asthma?" }]
} }
headers = {
"Authorization": "Bearer <token>",
"Tenant-Name": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.{environment}.corti.app/v2/agentic/agents/{agentId}/a2a/message: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([
'message' => [
'messageId' => 'msg.0192f4c8-5f8d-7e61-924d-6fb09b5ead73',
'role' => 'ROLE_USER',
'parts' => [
[
'text' => 'What is the ICD-10 code for asthma?'
]
]
]
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json",
"Tenant-Name: <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.{environment}.corti.app/v2/agentic/agents/{agentId}/a2a/message:stream"
payload := strings.NewReader("{\n \"message\": {\n \"messageId\": \"msg.0192f4c8-5f8d-7e61-924d-6fb09b5ead73\",\n \"role\": \"ROLE_USER\",\n \"parts\": [\n {\n \"text\": \"What is the ICD-10 code for asthma?\"\n }\n ]\n }\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Tenant-Name", "<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.{environment}.corti.app/v2/agentic/agents/{agentId}/a2a/message:stream")
.header("Authorization", "Bearer <token>")
.header("Tenant-Name", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"message\": {\n \"messageId\": \"msg.0192f4c8-5f8d-7e61-924d-6fb09b5ead73\",\n \"role\": \"ROLE_USER\",\n \"parts\": [\n {\n \"text\": \"What is the ICD-10 code for asthma?\"\n }\n ]\n }\n}")
.asString();{
"event": "message",
"data": "{\"task\":{\"id\":\"task.0192f4c8-4e7c-7d50-b13c-5eaf8a4d9c62\",\"contextId\":\"ctx.0192f4c8-3d6b-7c4f-a02b-4d9e7f3c8b51\",\"status\":{\"state\":\"TASK_STATE_WORKING\"}}}"
}{
"error": {
"code": 404,
"status": "NOT_FOUND",
"message": "Task not found.",
"details": [
{
"@type": "type.googleapis.com/google.rpc.ErrorInfo",
"reason": "TASK_NOT_FOUND",
"domain": "a2a-protocol.org",
"metadata": {
"taskId": "task.0192f4c8-4e7c-7d50-b13c-5eaf8a4d9c62"
}
}
]
}
}{
"error": {
"code": 404,
"status": "NOT_FOUND",
"message": "Task not found.",
"details": [
{
"@type": "type.googleapis.com/google.rpc.ErrorInfo",
"reason": "TASK_NOT_FOUND",
"domain": "a2a-protocol.org",
"metadata": {
"taskId": "task.0192f4c8-4e7c-7d50-b13c-5eaf8a4d9c62"
}
}
]
}
}{
"error": {
"code": 404,
"status": "NOT_FOUND",
"message": "Task not found.",
"details": [
{
"@type": "type.googleapis.com/google.rpc.ErrorInfo",
"reason": "TASK_NOT_FOUND",
"domain": "a2a-protocol.org",
"metadata": {
"taskId": "task.0192f4c8-4e7c-7d50-b13c-5eaf8a4d9c62"
}
}
]
}
}Authorizations
OAuth 2.0 / OIDC bearer token.
The tenant the request operates within.
Headers
A2A protocol version in Major.Minor form (A2A §3.6). Optional; defaults to 1.0 when absent. This surface implements 1.0 only. Patch versions MUST NOT be sent and are not considered during negotiation.
^\d+\.\d+$Path Parameters
Agent identifier (prefixed UUIDv7).
Agent identifier. Accepts agt.<uuidv7> or a bare UUIDv7 on input; always returned prefixed.
^(agt\.)?[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$"agt.0192f4c8-2c5a-7b3e-9f1a-3c8d6e2b7a40"
Body
The message to send to the agent.
Request body for sending a message to an agent.
An A2A message — an ordered list of content parts with a role.
Show child attributes
Show child attributes
Per-request options controlling how a message is processed.
Show child attributes
Show child attributes
Free-form request metadata.
{
"requestSource": "mobile",
"traceId": "trace.abc123"
}
Optional. Opaque routing identifier. Must match the tenant value from the selected AgentInterface in the Agent Card when that field is set.
Response
An SSE stream of streaming responses. Each event's data is a
JSON-encoded StreamResponse (Task, statusUpdate, or
artifactUpdate).
An SSE event carrying an A2A HTTP+JSON streaming response.
SSE payload: an A2A HTTP+JSON streaming response.
Event type. Absent for the default message event.
Opaque event id. Clients echo the most recent value in the
Last-Event-ID header to resume a dropped stream.
Reconnection time in milliseconds the client should use.
x >= 0Was this page helpful?