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

Execution

Jobs

The verb plane. Dispatch capability verbs as jobs; poll or receive webhooks as they run.

POST/v1/jobsCreate job
GET/v1/jobsList jobs
GET/v1/jobs/{job_id}Retrieve job
POST/v1/jobs/{job_id}/cancelCancel 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
FieldType
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
ParameterType
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
ParameterType
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
ParameterType
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"
}