---
title: "A2A SendMessage, HTTP+JSON binding. Returns a Message, never a Task."
method: POST
path: "/a2a/v1/message:send"
tags: ["Discovery"]
---

# A2A SendMessage, HTTP+JSON binding. Returns a Message, never a Task.

`POST /a2a/v1/message:send`

## Request

- Base URL: `https://api.fidren.net`
- URL: `https://api.fidren.net/a2a/v1/message:send`
- Auth: one of:
  - none
  - HTTP bearer
  - API key in header `X-API-Key`

The A2A door onto `POST /v1/decision`. Admission is identical — free allowance, then x402, and an Enterprise key when one is presented — because it is the same function underneath. There is no A2A variant of the engine.

**Send the request as a DataPart.** Free text is deliberately not parsed for an address or an amount: those are the two values where a misreading is expensive, and an agent with a payment to make already holds both as data.

The reply carries the decision twice — as a TextPart for clients that read prose, and as a DataPart carrying the exact `/v1/decision` payload, which is authoritative.

A `402` here is not an A2A error: x402 runs over HTTP, and the handshake is the one documented on `/v1/decision`.

## Request body

- object
  - `message` object, required
    - `messageId` string
    - `contextId` string: Echoed back on the reply, so a caller can correlate.
    - `role` 'ROLE_USER'
    - `parts` object[], required: At least one part whose `data` is a decision request object.
      - `text` string
      - `data` object
      - `mediaType` string

## Response `200`

An agent Message carrying the decision, or guidance.

- object
  - `message` object, required

## Other responses

- `400`: The decision request was malformed.
- `401`: No usable access path. Either a key was presented and is not valid, or no key was presented, the free allowance is spent, and x402 charging is off. A presented key never falls back to the free tier or to being charged.
- `402`: Payment required. Carries the x402 terms, exactly as `/v1/decision` does.
- `403`: The API key is valid, but its organization is not currently permitted to make this request. Do not rotate the key: it is not the problem.
- `429`: Rate limited.
- `503`: Decisions are not currently being served.

---

[API](https://skmtc.dev/fidren/apis/fidren-decision-api.md) · [All operations](https://skmtc.dev/fidren/apis/fidren-decision-api/llms.txt) · [OpenAPI document](https://skmtc.dev/fidren/apis/fidren-decision-api/revisions/d4b4dafcb345?raw)
