A2A concepts
Understand A2A authentication, messages, task artifacts, and durable sessions.
Authenticating
Private-beta A2A callers authenticate with an API key issued by Juno that carries agent:run, or with a Juno-issued service JWT when that route is explicitly provisioned. Credentials are not self-service.
agent:runSending a message
Send a plain-language instruction with SendMessage. Ask Juno to create or update the study, set its mode to live, get its invite link, or return analysis from Live-mode research.
Files support Create study or Update study. A2A messages are text-only. Upload files over REST first, then refer to them in the instruction.
/v1/a2a SendMessage{
"jsonrpc": "2.0",
"id": 1,
"method": "SendMessage",
"params": {
"message": {
"role": "user",
"parts": [
{ "kind": "text", "text": "Create a study interviewing churned customers" }
]
}
}
}Artifacts
Juno's completed answer arrives in a task artifact with one text part. Streaming sends that artifact over message/stream with last_chunk.
Sessions
A session is the contextId. Omit it on your first SendMessage and Juno creates a durable conversation thread, returning its id as contextId. Echo that contextId on later messages to continue the same conversation with full history.
Messages persist server-side and threads are scoped to the key's organisation. GetTask can replay a completed task's answer.
Use historyLength to return recent context messages when rebuilding a transcript.
{
"jsonrpc": "2.0",
"id": 2,
"method": "SendMessage",
"params": {
"message": {
"role": "user",
"contextId": "0b6a2f3e-9d41-4e6b-8a3f-2f6c1d9e4b7a",
"parts": [
{ "kind": "text", "text": "Use Go live, then give me the invite link" }
]
}
}
}