---
title: "A2A Task Event"
method: POST
path: "/a2a"
tags: ["Webhooks"]
---

# A2A Task Event

`POST /a2a` (webhook)

Fired for A2A task-ledger events on an agent identity with an active A2A subscription. Target identities receive `a2a.task.created`, `a2a.task.message`, and `a2a.task.canceled`; caller identities receive `a2a.sent_task.updated`. Automatic delivery retries are bounded and may deliver an event more than once, so consumers should deduplicate with the stable event `id`.

If your organization has a signing key, every webhook includes three headers:
- `X-Inkbox-Request-ID` — UUID for deduplication.
- `X-Inkbox-Timestamp` — Unix timestamp in seconds.
- `X-Inkbox-Signature` — `sha256={HMAC-SHA256 hex digest}` over `{request_id}.{timestamp}.{raw_body}`.

## Payload

- A2AWebhookPayload
  - `id` string, required — Stable per-event id (evt_...); idempotency key across retries.
  - `event_type` 'a2a.task.created' | 'a2a.task.message' | 'a2a.task.canceled' | 'a2a.sent_task.updated', required
  - `timestamp` string, date-time, required
  - `data` A2AWebhookData, required
    - `task_id` string, uuid, required
    - `context_id` string, uuid, required
    - `state` 'submitted' | 'working' | 'input_required' | 'completed' | 'failed' | 'canceled', required
    - `caller` A2AWebhookCaller, required
      - `identity_id` string, uuid, required
      - `organization_id` string, required
      - `handle` string, nullable
    - `message_id` string, nullable
    - `parts` object[], nullable

## Acknowledgement `200`

Successful Response

- unknown

## Other responses

- `422` — Validation Error

---

[API](https://skmtc.dev/inkbox/apis/inkbox-api.md) · [All operations](https://skmtc.dev/inkbox/apis/inkbox-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/inkbox/inkbox-api/revisions/31f357e7e6f8/schema)
