understudydocs

control plane api

Captures

Read access to the evidence: list capture objects under a project (optionally narrowed to one workload), then fetch any single envelope by request id.

Endpoints

method & pathdoes
GET /customer/v1/orgs/:org_id/projects/:project_id/capturesList capture objects for the whole project, newest pages first. Cursor-paginated (limit 1–100, default 25).
GET .../projects/:project_id/workloads/:workload_id/capturesSame, narrowed to one workload. Pages can come back sparse — the filter applies within each storage page, so keep walking the cursor.
GET .../projects/:project_id/captures/:request_idFetch one full capture envelope by request id.

List item shape

list response (shape)
{
  "captures": [
    {
      "key": "org_.../proj_.../api_key_.../2026/06/12/0190....jsonl",
      "request_id": "0190a7c2-7e11-7cc3-a312-9f1b22d40e88",
      "uploaded": "2026-06-12T00:00:12Z",
      "size": 4821,
      "workos_org_id": "org_...",
      "workos_api_key_id": "api_key_..."   // which key sent it — your env discriminator
    }
  ],
  "truncated": true,
  "cursor": "opaque — pass back to get the next page"
}

The storage key encodes the partition scheme — org, project, key, date — which is also your mental model for how capture volume is organized. The request_id matches the x-understudy-request-id the original response carried.

Detail

The single-capture endpoint returns the full envelope — raw bodies, resolution metadata, your tags. The field-by-field tour lives in Capture.