Playbooks
The Playbooks operations of the Hub REST API (5 operations).
bearerAuthAuthorizationBearer <API key>Pod API key (Bearer) issued via /api/hub/setup/agent or pod admin tooling. Browser/web clients may use the X-Session-Token header instead. See GET /api/hub/auth/status to introspect the calling key.
workspaceId?stringNarrows to this workspace (pod-wide playbooks still included).
uuidstatus?string"draft""active""paused""archived"limit?integer1 <= value <= 100cursor?string1 <= length{ playbooks, nextCursor }
application/json- response
playbooks*array<>nextCursor*string|nullcurl -X GET 'https://pod.example.com/api/hub/playbooks'{ "playbooks": [ { "property1": null, "property2": null } ], "nextCursor": "string"}bearerAuthAuthorizationBearer <API key>Pod API key (Bearer) issued via /api/hub/setup/agent or pod admin tooling. Browser/web clients may use the X-Session-Token header instead. See GET /api/hub/auth/status to introspect the calling key.
application/json- body
name*string1 <= length <= 500goalTemplate*stringMay reference a declared param as {name}; an undeclared name, or {{name}}, is refused.
1 <= length <= 5000description?stringstages?array<>status?stringDefaults to active.
"draft""active""paused""archived"subjectProfile?The kind this playbook runs ON, e.g. { profileSlug: 'crm-lead' }. A profileSlug that resolves to no profile is refused.
scope?stringsession (default) = a template for one focus session; project = a METHOD a project runs as a track.
"session""project"params?array<>Declared params [{ name, label?, type: text|number|entity|choice|boolean, options?, default?, required? }]. Makes a method self-onboarding: a required param left unanswered when a track starts becomes a question owed to the person.
criteria?array<>Binary acceptance criteria [{ key, statement, required?, check: { kind, ... }, stageKey? }] every instantiated session is graded against.
items <= 12workspaceId*stringThe playbook's home workspace.
uuidforceCreate?booleanOnly after a CONFLICT naming an overlapping playbook. Creates anyway.
agentUserId?stringCreated (or existing by name)
application/json- response
[key: string]?unknowncurl -X POST 'https://pod.example.com/api/hub/playbooks' \ -H 'Content-Type: application/json' \ -d '{ "name": "string", "goalTemplate": "string", "workspaceId": "ef0efa32-d1c1-43d4-a5e2-fe7b4f00403c"}'{ "property1": null, "property2": null}bearerAuthAuthorizationBearer <API key>Pod API key (Bearer) issued via /api/hub/setup/agent or pod admin tooling. Browser/web clients may use the X-Session-Token header instead. See GET /api/hub/auth/status to introspect the calling key.
id*stringuuidapplication/json- body
workspaceId?stringWrite home for the run. Omit to use the playbook's own workspace (then the subject's).
uuidsubjectId?stringuuidparams?agentIds?array<string>reasoning?stringagentUserId?stringprojectId?stringFile the run into this project (must be visible to you).
uuidtrackId?stringFile the run inside this track (a method running in a project). Implies its project.
uuidtrackStage?stringThe stage of that track the run is filed at. Omit for its current stage. Needs trackId.
1 <= length <= 120Running, or blocked
application/json- response
[key: string]?unknowncurl -X POST 'https://pod.example.com/api/hub/playbooks/497f6eca-6276-4993-bfeb-53cbbbba6f08/run' \ -H 'Content-Type: application/json' \ -d '{}'{ "property1": null, "property2": null}bearerAuthAuthorizationBearer <API key>Pod API key (Bearer) issued via /api/hub/setup/agent or pod admin tooling. Browser/web clients may use the X-Session-Token header instead. See GET /api/hub/auth/status to introspect the calling key.
runId*stringCancelled
application/json- response
id*stringstatus*stringexternalCancelled?boolean|nullnote?string[key: string]?unknowncurl -X POST 'https://pod.example.com/api/hub/runs/string/cancel'{ "id": "string", "status": "string", "externalCancelled": true, "note": "string", "property1": null, "property2": null}bearerAuthAuthorizationBearer <API key>Pod API key (Bearer) issued via /api/hub/setup/agent or pod admin tooling. Browser/web clients may use the X-Session-Token header instead. See GET /api/hub/auth/status to introspect the calling key.
runId*stringapplication/json- body
summary?stringlength <= 10000status?string"running""completed""failed""proposed"error?stringlength <= 10000producedEntityIds?array<string>usedCapabilities?array<>agentUserId?stringCapture recorded
application/json- response
id*stringstatus*stringproposalId*string|nullcurl -X POST 'https://pod.example.com/api/hub/runs/string/capture' \ -H 'Content-Type: application/json' \ -d '{}'{ "id": "string", "status": "string", "proposalId": "string"}