● Execution
Jobs
The verb plane. Dispatch capability verbs as jobs; poll or receive webhooks as they run.
| POST | /v1/jobs | Create job |
| GET | /v1/jobs | List jobs |
| GET | /v1/jobs/{job_id} | Retrieve job |
| POST | /v1/jobs/{job_id}/cancel | Cancel job |
POST/v1/jobs
Create job
Dispatches an asynchronous job to the protocol. A worker claims the job, runs it, and writes a result; subscribe to job.completed / job.failed to react.
scope · jobs:write
§ Body
| Field | Type |
|---|---|
| type required | string · The kind of work to perform, e.g. crypto.trace. |
| input optional | object |
| matter_id optional | string · Optional matter to associate the job and its result with. |
# sandbox: full surface, no production data curl -X POST https://api.kineticanvil.com/v1/jobs \ -H "Authorization: Bearer kx_test_xxxxxxxxxxxxxxxx" \ -H "Anvil-Version: 2026-07-05" \ -H "Content-Type: application/json" \ -d '{"type":"string","input":{},"matter_id":"string"}'
import requests
resp = requests.post(
"https://api.kineticanvil.com/v1/jobs",
headers={
"Authorization": "Bearer kx_test_xxxxxxxxxxxxxxxx",
"Anvil-Version": "2026-07-05",
},
json={"type":"string","input":{},"matter_id":"string"},
)
print(resp.json())const resp = await fetch("https://api.kineticanvil.com/v1/jobs", { method: "POST", headers: { "Authorization": "Bearer kx_test_xxxxxxxxxxxxxxxx", "Anvil-Version": "2026-07-05", "Content-Type": "application/json", }, body: JSON.stringify({"type":"string","input":{},"matter_id":"string"}), }); console.log(await resp.json());
● 201Anvil-Request-Id: req_01J…
201 Response
{
"job_id": "string",
"object": "job",
"type": "string",
"status": "queued",
"input": {},
"result": {},
"error": {},
"matter_id": "string",
"attempts": 0,
"created_at": "2026-07-05T00:00:00Z",
"updated_at": "2026-07-05T00:00:00Z"
}GET/v1/jobs
List jobs
Lists jobs on your account, most recent first.
scope · jobs:read
§ Query parameters
| Parameter | Type |
|---|---|
| limit optional · query | integer |
| status optional · query | string · queued | running | succeeded | failed | canceled |
# sandbox: full surface, no production data curl https://api.kineticanvil.com/v1/jobs \ -H "Authorization: Bearer kx_test_xxxxxxxxxxxxxxxx" \ -H "Anvil-Version: 2026-07-05"
import requests
resp = requests.get(
"https://api.kineticanvil.com/v1/jobs",
headers={
"Authorization": "Bearer kx_test_xxxxxxxxxxxxxxxx",
"Anvil-Version": "2026-07-05",
},
)
print(resp.json())const resp = await fetch("https://api.kineticanvil.com/v1/jobs", { method: "GET", headers: { "Authorization": "Bearer kx_test_xxxxxxxxxxxxxxxx", "Anvil-Version": "2026-07-05", }, }); console.log(await resp.json());
● 200Anvil-Request-Id: req_01J…
200 Response
{
"object": "list",
"data": [
{
"job_id": "string",
"object": "job",
"type": "string",
"status": "queued",
"input": {},
"result": {},
"error": {},
"matter_id": "string",
"attempts": 0,
"created_at": "2026-07-05T00:00:00Z",
"updated_at": "2026-07-05T00:00:00Z"
}
],
"has_more": true
}GET/v1/jobs/{job_id}
Retrieve job
Retrieves a job by id, including its current status and (when finished) its result.
scope · jobs:read
§ Path parameters
| Parameter | Type |
|---|---|
| job_id required · path | string |
# sandbox: full surface, no production data curl https://api.kineticanvil.com/v1/jobs/{job_id} \ -H "Authorization: Bearer kx_test_xxxxxxxxxxxxxxxx" \ -H "Anvil-Version: 2026-07-05"
import requests
resp = requests.get(
"https://api.kineticanvil.com/v1/jobs/{job_id}",
headers={
"Authorization": "Bearer kx_test_xxxxxxxxxxxxxxxx",
"Anvil-Version": "2026-07-05",
},
)
print(resp.json())const resp = await fetch("https://api.kineticanvil.com/v1/jobs/{job_id}", { method: "GET", headers: { "Authorization": "Bearer kx_test_xxxxxxxxxxxxxxxx", "Anvil-Version": "2026-07-05", }, }); console.log(await resp.json());
● 200Anvil-Request-Id: req_01J…
200 Response
{
"job_id": "string",
"object": "job",
"type": "string",
"status": "queued",
"input": {},
"result": {},
"error": {},
"matter_id": "string",
"attempts": 0,
"created_at": "2026-07-05T00:00:00Z",
"updated_at": "2026-07-05T00:00:00Z"
}POST/v1/jobs/{job_id}/cancel
Cancel job
Cancels a queued or running job. Terminal jobs are returned unchanged.
scope · jobs:write
§ Path parameters
| Parameter | Type |
|---|---|
| job_id required · path | string |
# sandbox: full surface, no production data curl -X POST https://api.kineticanvil.com/v1/jobs/{job_id}/cancel \ -H "Authorization: Bearer kx_test_xxxxxxxxxxxxxxxx" \ -H "Anvil-Version: 2026-07-05"
import requests
resp = requests.post(
"https://api.kineticanvil.com/v1/jobs/{job_id}/cancel",
headers={
"Authorization": "Bearer kx_test_xxxxxxxxxxxxxxxx",
"Anvil-Version": "2026-07-05",
},
)
print(resp.json())const resp = await fetch("https://api.kineticanvil.com/v1/jobs/{job_id}/cancel", { method: "POST", headers: { "Authorization": "Bearer kx_test_xxxxxxxxxxxxxxxx", "Anvil-Version": "2026-07-05", }, }); console.log(await resp.json());
● 200Anvil-Request-Id: req_01J…
200 Response
{
"job_id": "string",
"object": "job",
"type": "string",
"status": "queued",
"input": {},
"result": {},
"error": {},
"matter_id": "string",
"attempts": 0,
"created_at": "2026-07-05T00:00:00Z",
"updated_at": "2026-07-05T00:00:00Z"
}