API reference
Reference generated from the production API of 2026-11-14.
| Base URL | https://app.openlatch.ai |
| Authentication | An organization API key, sent as Authorization: Bearer <key> — see Authentication. |
| Errors | One envelope for every error, with a stable code — see Errors. |
| Changes | API changelog · Versioning |
Agents
Section titled “Agents”| Endpoint | |
|---|---|
| GET | List agents connected to the authenticated organization/api/public/v1/agents |
| DELETE | Delete an agent and cascade to all its sessions, events, and stats./api/public/v1/agents/{agent_id} |
| GET | Get a single agent by ID/api/public/v1/agents/{agent_id} |
| PATCH | Update editable fields on an agent (currently: display_name)./api/public/v1/agents/{agent_id} |
| GET | Execution graph for one agent beta/api/public/v1/agents/{agent_id}/execution-graph |
| GET | Events under one execution-graph node beta/api/public/v1/agents/{agent_id}/execution-graph/node-events |
| GET | Read an agent's ownership/api/public/v1/agents/{agent_id}/ownership |
| PATCH | Override, link or reset an agent's ownership/api/public/v1/agents/{agent_id}/ownership |
| GET | Read the full privilege grant list of an agent's owner/api/public/v1/agents/{agent_id}/ownership/privileges |
| POST | Queue an immediate ownership re-resolution/api/public/v1/agents/{agent_id}/ownership/recheck |
AIP authoring
Section titled “AIP authoring”| Endpoint | |
|---|---|
| GET | Read AIP authoring metadata beta/api/public/v1/aip/authoring-metadata |
| POST | Start a draft from a source or a preset beta/api/public/v1/aip/drafts |
| DELETE | Discard a draft beta/api/public/v1/aip/drafts/{public_id} |
| GET | One draft and its intent policies beta/api/public/v1/aip/drafts/{public_id} |
| PATCH | Save the zones, the mode and the Ask overrides of a draft beta/api/public/v1/aip/drafts/{public_id} |
| DELETE | Take one intent policy out of a draft beta/api/public/v1/aip/drafts/{public_id}/intent-policies/{intent_policy_id} |
| PATCH | Edit one intent policy of a draft beta/api/public/v1/aip/drafts/{public_id}/intent-policies/{intent_policy_id} |
| POST | Answer one interview card beta/api/public/v1/aip/drafts/{public_id}/intent-policies/{intent_policy_id}/answers |
| PATCH | Set the verdict a case should get beta/api/public/v1/aip/drafts/{public_id}/intent-policies/{intent_policy_id}/cases/{index} |
| POST | Ask for a fix beta/api/public/v1/aip/drafts/{public_id}/intent-policies/{intent_policy_id}/fix |
| POST | Apply a drafted fix beta/api/public/v1/aip/drafts/{public_id}/intent-policies/{intent_policy_id}/fix/apply |
| POST | Prepare a revision of a draft beta/api/public/v1/aip/drafts/{public_id}/prepare |
| POST | Ratify and activate a draft beta/api/public/v1/aip/drafts/{public_id}/ratify |
| POST | Replay a draft over past executions beta/api/public/v1/aip/drafts/{public_id}/replay |
| GET | Poll one authoring job beta/api/public/v1/aip/jobs/{job_id} |
| POST | Ingest a source document beta/api/public/v1/aip/sources |
Alerts
Section titled “Alerts”| Endpoint | |
|---|---|
| GET | List security alerts/api/public/v1/alerts |
| DELETE | Hard-delete a single security alert/api/public/v1/alerts/{alert_id} |
| PATCH | Dismiss a security alert/api/public/v1/alerts/{alert_id}/dismiss |
| PATCH | Mark a security alert as read/api/public/v1/alerts/{alert_id}/read |
| PATCH | Restore an archived (dismissed) security alert/api/public/v1/alerts/{alert_id}/restore |
| PATCH | Mark a security alert as unread/api/public/v1/alerts/{alert_id}/unread |
Learning proposals
Section titled “Learning proposals”| Endpoint | |
|---|---|
| GET | List learning proposals beta/api/public/v1/learning-proposals |
| GET | Read a learning proposal beta/api/public/v1/learning-proposals/{public_id} |
| POST | Accept a learning proposal beta/api/public/v1/learning-proposals/{public_id}/accept |
| POST | Dismiss a learning proposal beta/api/public/v1/learning-proposals/{public_id}/dismiss |
Policies
Section titled “Policies”| Endpoint | |
|---|---|
| POST | State sentences as a policy/api/public/v1/policies/stated |
| DELETE | Delete a policy/api/public/v1/policies/{public_id} |
| GET | Read one ratified policy/api/public/v1/policies/{public_id} |
| PATCH | Change the mode of a policy in one Autonomy Zone/api/public/v1/policies/{public_id} |
| PATCH | Set a policy's Ask delivery and Ask behaviour beta/api/public/v1/policies/{public_id}/ask-settings |
| POST | Copy a policy to a zone/api/public/v1/policies/{public_id}/copy |
| POST | Edit a policy: open its edit draft/api/public/v1/policies/{public_id}/edit |
| DELETE | Remove a learned case beta/api/public/v1/policies/{public_id}/intent-policies/{intent_policy_id}/cases/{case_id} |
| DELETE | Revoke an intent policy's decisive mark beta/api/public/v1/policies/{public_id}/intent-policies/{intent_policy_id}/decisive |
| POST | Promote a policy to Enforce on the strength of an anomaly/api/public/v1/policies/{public_id}/promote |
| PATCH | Rename a policy beta/api/public/v1/policies/{public_id}/title |
| POST | Apply an earlier version of a policy/api/public/v1/policies/{public_id}/versions/{version}/apply |
| GET | The policies in force at one zone/api/public/v1/zones/{zone_id}/policies |
| POST | Add policies to an Autonomy Zone (removed)/api/public/v1/zones/{zone_id}/policy-attachments |
| DELETE | Remove a policy from an Autonomy Zone (removed)/api/public/v1/zones/{zone_id}/policy-attachments/{public_id} |
Policy presets
Section titled “Policy presets”| Endpoint | |
|---|---|
| GET | List policy presets/api/public/v1/policy-presets |
| POST | Create an organization preset beta/api/public/v1/policy-presets |
| DELETE | Delete an organization preset beta/api/public/v1/policy-presets/{key} |
| PATCH | Rename or describe an organization preset beta/api/public/v1/policy-presets/{key} |
| POST | Add rules to an organization preset beta/api/public/v1/policy-presets/{key}/rules |
| DELETE | Remove a rule from an organization preset beta/api/public/v1/policy-presets/{key}/rules/{rule_id} |
Sessions
Section titled “Sessions”| Endpoint | |
|---|---|
| DELETE | Delete every session (and its events) for a specific agent./api/public/v1/agents/{agent_id}/sessions |
| GET | List sessions for a specific agent/api/public/v1/agents/{agent_id}/sessions |
| GET | Summarize an agent's sessions/api/public/v1/agents/{agent_id}/sessions/summary |
| GET | Org-wide sessions inventory (every session across all agents, no dedup)/api/public/v1/inventory/sessions |
| DELETE | Delete a session and cascade to all events and stats for that session./api/public/v1/sessions/{session_id} |
| PATCH | Update editable fields on a session (currently: display_name)./api/public/v1/sessions/{session_id} |
Triage
Section titled “Triage”| Endpoint | |
|---|---|
| GET | Anomalies/api/public/v1/anomalies |
| GET | Anomaly detail/api/public/v1/anomalies/{public_id} |
| PATCH | Patch anomaly/api/public/v1/anomalies/{public_id} |
| GET | List asks/api/public/v1/asks |
| POST | Answer ask/api/public/v1/asks/{ground_id}/answer |
| POST | Snooze ask/api/public/v1/asks/{ground_id}/snooze |
| GET | List holds/api/public/v1/holds |
| POST | Answer hold/api/public/v1/holds/{native_tool_use_id}/answer |
| Endpoint | |
|---|---|
| GET | Get the calling user's context/api/public/v1/users/me/context |
| Endpoint | |
|---|---|
| DELETE | Reset an agent to automatic zone assignment/api/public/v1/agents/{agent_id}/zone |
| GET | What governs this agent/api/public/v1/agents/{agent_id}/zone |
| PUT | Assign an agent to a zone by hand/api/public/v1/agents/{agent_id}/zone |
| GET | List the organization's org units/api/public/v1/org-units |
| POST | Create a hand-made org unit/api/public/v1/org-units |
| DELETE | Remove a hand-made org unit/api/public/v1/org-units/{unit_id} |
| PATCH | Rename and/or reparent a hand-made org unit/api/public/v1/org-units/{unit_id} |
| POST | Create the autonomy zone on an org unit/api/public/v1/org-units/{unit_id}/zone |
| GET | Who would arrive if this unit's Autonomy Zone were enabled/api/public/v1/org-units/{unit_id}/zone/preview |
| GET | List the organization's autonomy zones/api/public/v1/zones |
| DELETE | Retire an autonomy zone/api/public/v1/zones/{zone_id} |
| GET | Read one zone with its layer stack and counts/api/public/v1/zones/{zone_id} |
| GET | Agents assigned directly to this zone/api/public/v1/zones/{zone_id}/agents |
| GET | Read a zone's Ask settings beta/api/public/v1/zones/{zone_id}/ask-settings |
| PATCH | Set a zone's Ask settings beta/api/public/v1/zones/{zone_id}/ask-settings |
| DELETE | Revert the default zone to the root/api/public/v1/zones/{zone_id}/default |
| PUT | Make a zone the organization's default zone/api/public/v1/zones/{zone_id}/default |
| GET | The zone's dictionary beta/api/public/v1/zones/{zone_id}/dictionary |
| POST | Add a dictionary table to a zone beta/api/public/v1/zones/{zone_id}/dictionary/tables |
| DELETE | Delete one of a zone's own dictionary tables beta/api/public/v1/zones/{zone_id}/dictionary/tables/{name} |
| DELETE | Delete one of a zone's own dictionary values beta/api/public/v1/zones/{zone_id}/dictionary/tables/{name}/values |
| POST | Add values to a dictionary table beta/api/public/v1/zones/{zone_id}/dictionary/tables/{name}/values |