KINETIC
KINETIC ANVILProtocol · API reference
Anvil-Version 2026-07-05 Start in the sandbox

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-VersionDate-pinned API version. Pinned at first call if omitted; breaking changes only ship under a new date.
Idempotency-KeySafe 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-IdReturned on every response. Include it in support and audit queries.
Anvil-SignatureHMAC-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
limitPage size, 1–100. Defaults to 20.
starting_afterCursor: the id of the last item on the page you have. Returns the page after it.
ending_beforeCursor: 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 →