● Getting started
Authentication
Authenticate with a bearer key. Keys are organization-bound and scoped per operation (22 scopes, e.g. judgments:validate, packets:export).
Authorization: Bearer kx_live_xxxxxxxxxxxxxxxx Anvil-Version: 2026-07-05 Idempotency-Key: 4f8a-bd31 # all write operations, 24h replay window
Envelope headers
| Header | |
|---|---|
| Anvil-Version | Date-pinned API version. Pinned at first call if omitted; breaking changes only ship under a new date. |
| Idempotency-Key | Safe retries on every write. Any string up to 255 characters. A UUID v4 is recommended. Same key + same body inside the 24-hour replay window returns the original result; same key + a different body returns 409 conflict. |
| Anvil-Request-Id | Returned on every response. Include it in support and audit queries. |
| Anvil-Signature | HMAC-SHA256 signature on every webhook delivery: t=<ts>,v1=<sig>. |
Pagination
Every list operation returns one envelope and accepts the same three query parameters. Pass the last id as starting_after; stop when has_more is false.
{
"object": "list",
"data": [ { "matter_id": "mtr_4Fa1...", ... } ],
"has_more": true
}
| Parameter | |
|---|---|
| limit | Page size, 1–100. Defaults to 20. |
| starting_after | Cursor: the id of the last item on the page you have. Returns the page after it. |
| ending_before | Cursor: the id of the first item on the page you have. Returns the page before it. |
curl "https://api.kineticanvil.com/v1/matters?limit=20&starting_after=mtr_4Fa1xxxxxxxx" \ -H "Authorization: Bearer kx_test_xxxxxxxxxxxxxxxx" \ -H "Anvil-Version: 2026-07-05"
Domain gates
Three domain gates sit above scopes and never soft-pass: authority_required, sanctions_gate, stay_in_effect. See errors →