# Substructure API

**Canonical:** https://apis.io/apis/substructure/substructure-api/  
**Provider:** Substructure — https://apis.io/providers/substructure/  
**Base URL:** https://api.substructure.ai  
**Documentation:** https://substructure.ai/docs/api

Substructure API is published by [Substructure](https://apis.io/providers/substructure/) on the [APIs.io](https://apis.io/) network, described by a machine-readable OpenAPI specification. This API exposes 6 JSON Schema definitions. The published artifact set on APIs.io includes an OpenAPI specification and 6 JSON Schemas.

Substructure API as documented publicly: 40 operations. Contract generated from the documentation by API Evangelist (2026-10-19); not the provider's own document.

## Operations (40)

| Method | Path | Summary |
|---|---|---|
| GET | `/` | GET / |
| GET | `/api/admin/sessions` | List sessions, newest first. |
| GET | `/api/admin/sessions/{sessionId}` | Fetch one session's current state. |
| POST | `/api/admin/sessions/{sessionId}/ag-ui/connect` | Send the session as an AG-UI snapshot. |
| POST | `/api/admin/sessions/{sessionId}/cancel` | Cancel the session's current run. |
| POST | `/api/admin/sessions/{sessionId}/deliveries/{reader}/resume` | Start a parked reader again. |
| GET | `/api/admin/sessions/{sessionId}/events` | Fetch stored Events. |
| GET | `/api/admin/sessions/{sessionId}/events/stream` | The same events over SSE. |
| POST | `/api/channels/ag-ui/agents/{agentId}/connect` | Send the session as one AG-UI snapshot. Use it to reconnect. |
| POST | `/api/channels/ag-ui/agents/{agentId}/run` | Run a turn from an AG-UI client. |
| POST | `/api/client/sessions/input` | Submit a ClientInput : a message, an action, an interrupt resume, or the result of a client tool. |
| GET | `/api/client/sessions/{sessionId}` | The session. It holds the status at the head, every open interrupt, messages, and the full message tree. |
| POST | `/api/client/sessions/{sessionId}/cancel` | Cancel the session's current run. |
| GET | `/api/client/sessions/{sessionId}/events/stream` | Stream a session's events. |
| POST | `/api/client/sessions/{sessionId}/interrupt` | Pause the session's active branch. |
| POST | `/api/machine/client-tokens` | Create a client JWT for a browser session. |
| POST | `/api/machine/sessions/submit` | Submit a ClientPayload from your backend. |
| POST | `/api/machine/sessions/{sessionId}/calls/settle` | End a worker-handled tool or LLM call by its effect id, outside the decision that started it. |
| POST | `/api/machine/sessions/{sessionId}/cancel` | Cancel the session's current run. |
| GET | `/api/machine/sessions/{sessionId}/events/stream` | The session event stream, with API key auth. |
| POST | `/api/machine/workers/submit` | Send a DecisionResponse from your worker into the engine, keyed by session_id and decision_id. |
| GET | `/api/v1/orgs` | GET /api/v1/orgs |
| GET | `/api/v1/orgs/{org}/projects` | List an org's projects. |
| POST | `/api/v1/orgs/{org}/projects` | Create a project. |
| DELETE | `/api/v1/projects/{project}` | Delete a project. |
| GET | `/api/v1/projects/{project}` | Fetch one project. |
| PATCH | `/api/v1/projects/{project}` | Rename a project. |
| GET | `/api/v1/projects/{project}/agents` | List the agents the project's manifest declares. |
| GET | `/api/v1/projects/{project}/agents/{agent}` | Fetch one agent. |
| GET | `/api/v1/projects/{project}/api-keys` | List client API keys. |
| POST | `/api/v1/projects/{project}/api-keys` | Create a client API key. |
| DELETE | `/api/v1/projects/{project}/api-keys/{keyId}` | Revoke a key. |
| GET | `/api/v1/projects/{project}/llm` | List the [llm.*] blocks the manifest declares, and whether each one has a key. |
| DELETE | `/api/v1/projects/{project}/llm/{block}/key` | Remove the key. |
| PUT | `/api/v1/projects/{project}/llm/{block}/key` | Set the customer key for one block. |
| GET | `/api/v1/projects/{project}/secrets` | List the paths that hold a secret this deployment minted. |
| GET | `/api/v1/projects/{project}/secrets/{path}` | Read one signing secret, by its path. |
| POST | `/api/v1/projects/{project}/secrets/{path}/rotate` | Create a new signing secret. |
| GET | `/api/v1/projects/{project}/sessions` | Session reads (same as Admin API). |
| POST | `/api/v1/projects/{project}/sessions/{sessionId}/cancel` | Cancel the session's current run. |

## Machine-readable artifacts (8)

- **OpenAPI** — https://raw.githubusercontent.com/api-evangelist/substructure/refs/heads/main/openapi/_ae-authored/substructure-openapi-generated.yml
- **JSONSchema** — https://raw.githubusercontent.com/api-evangelist/substructure/refs/heads/main/json-schema/substructure-get-response-schema.json
- **JSONSchema** — https://raw.githubusercontent.com/api-evangelist/substructure/refs/heads/main/json-schema/substructure-post-api-machine-sessions-submit-request-schema.json
- **JSONSchema** — https://raw.githubusercontent.com/api-evangelist/substructure/refs/heads/main/json-schema/substructure-post-api-machine-sessions-sessionid-calls-settle-request-schema.json
- **JSONSchema** — https://raw.githubusercontent.com/api-evangelist/substructure/refs/heads/main/json-schema/substructure-get-api-v1-projects-project-api-keys-response-schema.json
- **JSONSchema** — https://raw.githubusercontent.com/api-evangelist/substructure/refs/heads/main/json-schema/substructure-get-api-v1-projects-project-llm-response-schema.json
- **JSONSchema** — https://raw.githubusercontent.com/api-evangelist/substructure/refs/heads/main/json-schema/substructure-post-api-channels-ag-ui-agents-agentid-run-request-schema.json
- **APIsJSON** — https://raw.githubusercontent.com/api-evangelist/substructure/refs/heads/main/apis.yml

---

Profiled by [API Evangelist](https://apievangelist.com) and published on [APIs.io](https://apis.io/apis/substructure/substructure-api/). The API's provider profile, Kin Score and agent-readiness rating are at https://apis.io/providers/substructure/.
