curl --request POST \
--url https://api.{env}.corti.app/v2/agentic/agents/{agentId}/a2a/message:send \
--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?"
}
]
}
}
'const options = {
method: 'POST',
headers: {
Authorization: 'Bearer <token>',
'Tenant-Name': '<api-key>',
'Content-Type': 'application/json'
},
body: JSON.stringify({
message: {
messageId: 'msg.0192f4c8-5f8d-7e61-924d-6fb09b5ead73',
role: 'ROLE_USER',
parts: [{text: 'What is the ICD-10 code for asthma?'}]
}
})
};
fetch('https://api.{env}.corti.app/v2/agentic/agents/{agentId}/a2a/message:send', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));using RestSharp;
var options = new RestClientOptions("https://api.{env}.corti.app/v2/agentic/agents/{agentId}/a2a/message:send");
var client = new RestClient(options);
var request = new RestRequest("");
request.AddHeader("Authorization", "Bearer <token>");
request.AddHeader("Tenant-Name", "<api-key>");
request.AddJsonBody("{\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}", false);
var response = await client.PostAsync(request);
Console.WriteLine("{0}", response.Content);import requests
url = "https://api.{env}.corti.app/v2/agentic/agents/{agentId}/a2a/message:send"
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.{env}.corti.app/v2/agentic/agents/{agentId}/a2a/message:send",
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.{env}.corti.app/v2/agentic/agents/{agentId}/a2a/message:send"
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.{env}.corti.app/v2/agentic/agents/{agentId}/a2a/message:send")
.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();{
"task": {
"id": "task.0192f4c8-4e7c-7d50-b13c-5eaf8a4d9c62",
"contextId": "ctx.0192f4c8-3d6b-7c4f-a02b-4d9e7f3c8b51",
"status": {
"state": "TASK_STATE_COMPLETED",
"timestamp": "2026-05-19T12:00:01Z",
"message": {
"messageId": "msg.0192f4c8-5f8d-7e61-924d-6fb09b5ead73",
"contextId": "ctx.0192f4c8-3d6b-7c4f-a02b-4d9e7f3c8b51",
"taskId": "task.0192f4c8-4e7c-7d50-b13c-5eaf8a4d9c62",
"role": "ROLE_AGENT",
"parts": [
{
"text": "J45.909"
}
]
}
},
"artifacts": [
{
"artifactId": "art.0192f4c8-6a9e-7f72-a35e-70c1ac6fbe84",
"parts": [
{
"text": "J45.909"
}
]
}
],
"metadata": {
"$usage": {
"model": "corti-default",
"inputTokens": 100,
"outputTokens": 20,
"cachedInputTokens": 64,
"cacheCreationInputTokens": 0,
"totalTokens": 120,
"credits": 1.2
}
}
}
}{
"error": {
"code": 123,
"status": "<string>",
"message": "<string>",
"details": [
{}
]
}
}{
"error": {
"code": 123,
"status": "<string>",
"message": "<string>",
"details": [
{}
]
}
}{
"error": {
"code": 123,
"status": "<string>",
"message": "<string>",
"details": [
{}
]
}
}Send a message (A2A REST)
The HTTP+JSON binding of A2A SendMessage.
curl --request POST \
--url https://api.{env}.corti.app/v2/agentic/agents/{agentId}/a2a/message:send \
--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?"
}
]
}
}
'const options = {
method: 'POST',
headers: {
Authorization: 'Bearer <token>',
'Tenant-Name': '<api-key>',
'Content-Type': 'application/json'
},
body: JSON.stringify({
message: {
messageId: 'msg.0192f4c8-5f8d-7e61-924d-6fb09b5ead73',
role: 'ROLE_USER',
parts: [{text: 'What is the ICD-10 code for asthma?'}]
}
})
};
fetch('https://api.{env}.corti.app/v2/agentic/agents/{agentId}/a2a/message:send', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));using RestSharp;
var options = new RestClientOptions("https://api.{env}.corti.app/v2/agentic/agents/{agentId}/a2a/message:send");
var client = new RestClient(options);
var request = new RestRequest("");
request.AddHeader("Authorization", "Bearer <token>");
request.AddHeader("Tenant-Name", "<api-key>");
request.AddJsonBody("{\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}", false);
var response = await client.PostAsync(request);
Console.WriteLine("{0}", response.Content);import requests
url = "https://api.{env}.corti.app/v2/agentic/agents/{agentId}/a2a/message:send"
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.{env}.corti.app/v2/agentic/agents/{agentId}/a2a/message:send",
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.{env}.corti.app/v2/agentic/agents/{agentId}/a2a/message:send"
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.{env}.corti.app/v2/agentic/agents/{agentId}/a2a/message:send")
.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();{
"task": {
"id": "task.0192f4c8-4e7c-7d50-b13c-5eaf8a4d9c62",
"contextId": "ctx.0192f4c8-3d6b-7c4f-a02b-4d9e7f3c8b51",
"status": {
"state": "TASK_STATE_COMPLETED",
"timestamp": "2026-05-19T12:00:01Z",
"message": {
"messageId": "msg.0192f4c8-5f8d-7e61-924d-6fb09b5ead73",
"contextId": "ctx.0192f4c8-3d6b-7c4f-a02b-4d9e7f3c8b51",
"taskId": "task.0192f4c8-4e7c-7d50-b13c-5eaf8a4d9c62",
"role": "ROLE_AGENT",
"parts": [
{
"text": "J45.909"
}
]
}
},
"artifacts": [
{
"artifactId": "art.0192f4c8-6a9e-7f72-a35e-70c1ac6fbe84",
"parts": [
{
"text": "J45.909"
}
]
}
],
"metadata": {
"$usage": {
"model": "corti-default",
"inputTokens": 100,
"outputTokens": 20,
"cachedInputTokens": 64,
"cacheCreationInputTokens": 0,
"totalTokens": 120,
"credits": 1.2
}
}
}
}{
"error": {
"code": 123,
"status": "<string>",
"message": "<string>",
"details": [
{}
]
}
}{
"error": {
"code": 123,
"status": "<string>",
"message": "<string>",
"details": [
{}
]
}
}{
"error": {
"code": 123,
"status": "<string>",
"message": "<string>",
"details": [
{}
]
}
}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
The resulting task or agent message.
Was this page helpful?