Skip to main content
Start and continue Atlas investigations, and read everything they produce. Use this API when you want the investigation itself: to start one without a struct, list your investigations, or read their findings, graph, files and report. To get a structured_data answer from the same research, use People Intelligence with tier: "xhigh".

Endpoint

All paths are under https://api.sixtyfour.ai/v1/atlas. Authenticate with your x-api-key header, as on every other endpoint.

Checking access

GET /access works for every org. It returns whether your org has Atlas and, when it does, the engines it can run, the default first, each priced for your org:
Without access the response is {"has_atlas": false, "engines": []}.

Starting an investigation

POST /investigations returns 202 with the run’s task_id and the new investigation:
Poll the run with GET /job-status/{task_id}, or open workspace_url to watch it in the Atlas section of the Sixtyfour app.

Continuing an investigation

POST /investigations/{investigation_id}/runs starts another run on the same workspace and graph. It takes the same body as starting one, without lead_info, name and private, and returns the same 202 response. Continuing needs editor access to the investigation.

Listing and reading investigations

GET /investigations returns investigations, the page limit and a next_cursor: Each investigation, also returned by GET /investigations/{investigation_id}, looks like this:
shared is null when your team owns the investigation. Otherwise it names the team that shared it and your tier on it: a viewer can read and export, an editor can also run and edit.

Reading the graph and workspace

Field confidence on an Atlas run lists, for each value, the nodes in this graph that support it. See Confidence Scoring.

Following a run live

GET .../events/stream sends the agents’ turn summaries over Server-Sent Events as they are written, in order. Omit after to replay from the start.
The sessions frame before end carries the run’s recorded cost, or null if settlement did not record it in time. Comment lines are heartbeats. A stream closes after about five minutes so access is checked again. SSE clients reconnect on their own with Last-Event-ID and resume from the last event. Other clients pass that id as after, which also accepts next_cursor from GET .../events.

Reports

  1. POST .../report starts generating a PDF intelligence report from the current workspace and returns 202 with a report job. If an up-to-date report already exists, the job comes back with cached: true. Pass {"retry_failed": true} to retry after a failure. An empty workspace returns 400.
  2. GET .../report returns the job: job_id, status (pending, running, completed, failed, or superseded when the workspace changed and a newer job replaced it), requested_at, completed_at, error and byte_size.
  3. GET .../report.pdf returns the PDF when it is ready, 202 with the job and a Retry-After header while it is generating, and 404 if no report has been requested.

Export

GET .../export.zip downloads everything visible in the app in one archive: workspace files, attachments with <path>.json metadata sidecars, the attribution graph, investigation.json, and the agents’ activity when your org has access to it.

Pricing

Starting or continuing an investigation is billed at the engine’s price per unit; reading, reports and exports are not billed per call. See Credits & Pricing Guide for the price per unit.

Errors

For error responses (400, 402, 403, 404, 409, 429, etc.), see Handling Errors. Atlas is enabled on request. Without access, starting or reading an investigation returns 403; GET /access works for every org and returns {"has_atlas": false, "engines": []}, so clients can hide investigation features instead of handling the error. Contact sales to request access. All /v1/atlas endpoints share a limit of 120 requests per minute per organization. Reads don’t consume credits, so an org with no balance can still list and export what it already ran.