A2A JSON-RPC endpoint
A2A Protocol v1.0 JSON-RPC 2.0 transport endpoint. The request body is a JSON-RPC 2.0 envelope { jsonrpc: "2.0", id?, method, params } dispatched on method. Method names are the 1.0 PascalCase forms; the legacy 0.3 slash-strings are still accepted as tolerant aliases:
SendMessage(aliasmessage/send) — params:{ message, configuration?, metadata? }; returns an envelope whoseresultis{ task }.SendStreamingMessage(aliasmessage/stream) — params: same; returns atext/event-streamof A2A 1.0 StreamResponse events.GetTask(aliastasks/get) — params:{ id | taskId, historyLength? }; returns a Task envelope.ListTasks— params:{ pageSize?, pageToken?, status?, includeArtifacts? }; returns{ tasks, nextPageToken, pageSize, totalSize }(cursor-paginated).CancelTask(aliastasks/cancel) — params:{ id | taskId }; returns a Task envelope.SubscribeToTask(aliastasks/resubscribe) — params:{ id }; returns atext/event-streamof A2A 1.0 StreamResponse events. Each streamingdata:line is a JSON-RPC response carrying aStreamResponseoneof (statusUpdate/artifactUpdate); errors stream as a JSON-RPC error envelope (google.rpc.Statusform). The body is validated by the handler (not by request-schema middleware) so JSON-RPC error envelopes (-32700, METHOD_NOT_FOUND, INVALID_PARAMS) are preserved. Authentication is an A2A surface key (Authorization: Bearer a2a_xxx or X-API-Key header) or a Clerk JWT (dashboard testing).
Authentication
Authorizationstring
A2A surface key sent as Authorization: Bearer a2a_... or X-API-Key: a2a_....
Path parameters
productId
surfaceId
Response
JSON-RPC response envelope (unary methods) or an SSE event stream (SendStreamingMessage, SubscribeToTask).
OR
OR
Errors
500
Internal Server Error