Juno

A2A concepts

Understand A2A authentication, messages, task artifacts, and durable sessions.

4 topics4 min read

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:run

Sending 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" }
      ]
    }
  }
}
Open the A2A reference The agent card, JSON-RPC methods, and message examples generated from the live A2A contract.

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" }
      ]
    }
  }
}