curl --request POST \
--url https://api.{environment}.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?"
}
]
}
}
'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"
});
await client.agentic.agents.sendMessage("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?"
}]
}
});
using Corti;
var client = new CortiClient(
"TENANT_NAME",
CortiClientEnvironment.Eu,
new CortiClientAuth.ClientCredentials("client_id", "client_secret")
);
await client.Agentic.Agents.SendMessageAsync(
"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?" },
},
},
}
);
import requests
url = "https://api.{environment}.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.{environment}.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.{environment}.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.{environment}.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": 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"
}
}
]
}
}Send a message (A2A REST)
The HTTP+JSON binding of A2A SendMessage.
curl --request POST \
--url https://api.{environment}.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?"
}
]
}
}
'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"
});
await client.agentic.agents.sendMessage("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?"
}]
}
});
using Corti;
var client = new CortiClient(
"TENANT_NAME",
CortiClientEnvironment.Eu,
new CortiClientAuth.ClientCredentials("client_id", "client_secret")
);
await client.Agentic.Agents.SendMessageAsync(
"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?" },
},
},
}
);
import requests
url = "https://api.{environment}.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.{environment}.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.{environment}.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.{environment}.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": 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
The resulting task or agent message.
Was this page helpful?