AgentOS

API Reference

Production route contracts verified against the live Agent OS deployment.

Authentication: the web app uses a secure browser session cookie after /api/signup or /api/signin. External callers should use the returned bearerToken when the active plan includes bearer access. The legacy apiKey field remains as an alias for compatibility.
Base URL: https://www.agentos.services
Product direction: Agent OS is infrastructure first. Any social or X routes listed below are optional example integrations, not required parts of the core agent runtime.
https://www.agentos.services
GET
/health
Auth: None

Liveness check for the production app and tool registry.

Response
{ "status": "ok", "version": "6.6.7", "timestamp": "...", "tools": 44 }
GET
/tools
Auth: None

List the universal MCP tool registry exposed by Agent OS.

Response
{ "tools": [{ "name": "agentos.mem_set", "description": "...", "inputSchema": {...} }] }
POST
/register
Auth: None

Self-service external-agent registration. Creates a private internal identifier automatically and returns a 90-day bearer token for universal MCP access.

Request Body
namestringrequiredHuman-readable agent name
descriptionstringOptional summary of what the agent does
ownerEmailstringOptional owner contact email
allowedDomainsstring[]Optional outbound domain allowlist. Empty means all domains allowed.
allowedToolsstring[]Optional tool permission list. Defaults to all built-in agentos.* primitives.
Response
{"token":"eyJ...","expiresIn":"90d","allowedDomains":["httpbin.org"],"allowedTools":["agentos.net_http_get"],"mcpEndpoint":"https://www.agentos.services/mcp","toolsEndpoint":"https://www.agentos.services/tools"}
GET
/agent/me
Auth: Browser Session or Bearer (Agent)

Return the current external-agent registration details without reissuing the token.

Response
{"name":"My Agent","status":"active","allowedDomains":["httpbin.org"],"allowedTools":["agentos.net_http_get"],"totalCalls":1,"lastActiveAt":"...","createdAt":"...","mcpEndpoint":"https://www.agentos.services/mcp","toolsEndpoint":"https://www.agentos.services/tools"}
GET
/api/agents
Auth: Browser Session or Bearer (Agent)

List deployed agents and subagents for the current operator. Internal agent IDs are never returned; use the returned public action reference only when calling agent action routes.

Response
{ "agents": [{ "agentRef": "agref-...", "name": "Research Agent", "isSubagent": false, "status": "active" }] }
POST
/api/agents
Auth: Browser Session or Bearer (Agent)

Deploy a named subagent. Pass parentAgentRef from /api/agents when nesting under another deployed agent.

Request Body
namestringrequiredUnique subagent display name
descriptionstringOptional purpose summary
parentAgentRefstringPublic action reference from /api/agents; never an internal agent ID
Response
{ "agent": { "agentRef": "agref-...", "name": "Research Subagent", "isSubagent": true, "status": "active" }, "apiKey": "eyJ..." }
POST
/api/signup
Auth: None

Create an AgentOS account, provision the default workspace surfaces, start a secure browser session, and return a 90-day bearer token only on plans with bearer access.

Request Body
emailstringrequiredValid email address
passwordstringrequiredAt least 8 characters
agentNamestringOptional display name for the new agent
accountTyperetail | enterpriserequiredRetail or enterprise signup surface
selectedPlanretail_free | retail_pro | enterprise_plus | enterprise_maxrequiredBeta plan selected during signup
planSelectionSkippedbooleanInternal onboarding fallback. Defaults to false.
Response
{ "success": true, "redirectTo": "/", "credentials": { "bearerToken": "eyJ..." | null, "apiKey": "eyJ..." | null, "plan": "retail_pro", "planLabel": "Pro", "capabilities": ["use_nl_studio", "use_bearer_token"], "expiresIn": "90 days" } }
POST
/api/signin
Auth: None

Authenticate an existing account, refresh the secure browser session, and return a fresh external bearer token.

Request Body
emailstringrequiredAccount email address
passwordstringrequiredExisting account password
Response
{ "success": true, "credentials": { "bearerToken": "eyJ...", "apiKey": "eyJ...", "agentName": "My Agent", "expiresIn": "90 days" } }
GET
/api/session
Auth: Browser Session or Bearer (Agent)

Return the current authenticated browser session or bearer-backed session state. Internal identifiers are private and not displayed in public docs.

Response
{ "authenticated": true, "session": { "agentName": "My Agent", "expiresAt": "..." } }
DELETE
/api/session
Auth: Browser Session or Bearer (Agent)

Clear the current browser session cookie.

Response
{ "success": true }
POST
/api/session/token
Auth: Browser Session or Bearer (Agent)

Mint a fresh bearer token for external API, SDK, or CLI use while keeping the browser session active. Requires a plan with bearer-token capability.

Response
{ "success": true, "credentials": { "bearerToken": "eyJ...", "apiKey": "eyJ...", "expiresIn": "90 days" } }
GET
/api/bearer-tokens
Auth: Browser Session or Bearer (Agent)

List named scoped bearer tokens. Values are masked after one-time creation or rotation reveal.

Response
{ "tokens": [{ "name": "Workspace API", "scopes": ["workspace", "api"], "maskedToken": "eyJhbGci...abc123", "lastUsedAt": null }] }
POST
/api/bearer-tokens
Auth: Browser Session or Bearer (Agent)

Create a named scoped bearer token for workspace, project, app, workflow, MCP connector, external agent/tool, or API access.

Request Body
namestringrequiredHuman-readable token name
workspaceIdstringWorkspace scope
projectIdstringProject scope
scopesstring[]workspace, project, app, workflow, mcp_connector, external_agent, or api
Response
{ "token": {...}, "bearerToken": "eyJ...", "oneTimeReveal": true }
PATCH
/api/bearer-tokens
Auth: Browser Session or Bearer (Agent)

Rename, rescope, rotate, or revoke a bearer token. Rotation returns the new bearer token once.

Request Body
idstringrequiredBearer token id
actionrotate | revokeOptional lifecycle action
Response
{ "token": {...}, "bearerToken": "eyJ..." | undefined, "oneTimeReveal": true }
DELETE
/api/bearer-tokens
Auth: Browser Session or Bearer (Agent)

Revoke a bearer token without deleting its audit trail.

Request Body
idstringrequiredBearer token id
Response
{ "revoked": true, "token": {...} }
POST
/api/plans/transition
Auth: Browser Session or Bearer (Agent)

Transition the authenticated account and its primary workspace to another public beta plan. Free beta mode records the transition and applies no charge.

Request Body
newPlanretail_free | retail_pro | enterprise_plus | enterprise_maxrequiredTarget beta plan
reasonstringOptional audit reason. Defaults to beta_self_serve_upgrade.
Response
{ "transitioned": true, "noChange": false, "transition": { "oldPlan": "retail_free", "newPlan": "retail_pro", "newCapabilities": ["use_bearer_token"] }, "billing": { "mode": "free_beta", "charged": false } }
GET
/api/social/platforms
Auth: Browser Session or Bearer (Agent)

Optional example integration route: return the social-platform catalog, including which connectors are live and how many X accounts are currently connected.

Response
{ "platforms": [{ "id": "x", "status": "live", "connectorReady": true, "connectedCount": 1 }, { "id": "facebook", "status": "scaffolded", "connectorReady": false, "connectedCount": 0 }] }
POST
/api/x/connect
Auth: Browser Session or Bearer (Agent)

Optional example integration route: start the X OAuth authorization flow for the current operator session.

Request Body
redirectTostringOptional in-app path to return to after OAuth completes
Response
{ "authorizationUrl": "https://x.com/i/oauth2/authorize?..." }
GET
/api/x/accounts
Auth: Browser Session or Bearer (Agent)

Optional example integration route: list connected X accounts visible to the current operator without exposing private child-agent IDs.

Response
{ "accounts": [{ "id": "...", "username": "brand_handle", "status": "active" }] }
GET
/api/x/drafts
Auth: Browser Session or Bearer (Agent)

Optional example integration route: list X drafts awaiting review, including guardrail status, reasons, and approval state.

Response
{ "drafts": [{ "id": "...", "kind": "post", "approval_status": "required", "guardrail_status": "review", "guardrail_reasons": ["..."], "similarity_score": 0.14 }] }
GET
/api/x/queue
Auth: Browser Session or Bearer (Agent)

Optional example integration route: list queued, published, failed, or canceled X publish items for the authenticated operator.

Response
{ "queue": [{ "id": "...", "publish_status": "queued", "scheduled_for": "...", "account": { "username": "brand_handle" } }] }
POST
/api/x/publish
Auth: Browser Session or Bearer (Agent)

Optional example integration route: publish an approved X draft immediately or force a queued publish item to run now.

Request Body
draftIdstringDraft UUID to publish immediately
queueIdstringQueue UUID to publish immediately
Response
{ "draftId": "...", "queueId": "...", "postId": "...", "publishedAt": "..." }
POST
/api/forgot-password
Auth: None

Request a password reset. Production returns a generic success response even when the account does not exist.

Request Body
emailstringrequiredAccount email address
Response
{ "success": true }
POST
/api/forgot-password/confirm
Auth: None

Confirm a password reset with the emailed token and a new password.

Request Body
emailstringrequiredAccount email address
tokenstringrequiredReset token from the password reset link
newPasswordstringrequiredAt least 8 characters
Response
{ "success": true }
POST
/mcp
Auth: Browser Session or Bearer (Agent)

Execute any Agent OS primitive, runtime function, installed skill capability, or external MCP tool through the universal MCP router.

Request Body
toolstringrequiredUniversal tool name such as agentos.mem_set or mcp.github.create_issue
inputobjectNormalized tool arguments
argumentsobjectAlias for input
serverstringOptional MCP server hint for legacy clients
Response
{ "success": true, "result": <tool-specific result> }
GET
/api/connectors
Auth: Browser Session or Bearer (Agent)

List universal MCP connectors with real tool counts, health, permission scope, last audit outcome, and related apps, workflows, and skills.

Response
{ "connectors": [{ "slug": "github", "toolCount": 12, "healthStatus": "active", "permissionScope": { "apps": ["issue-triage"] }, "lastAuditOutcome": { "success": true, "tool": "mcp.github.create_issue" }, "usedBy": { "apps": [...], "workflows": [...], "skills": [...] } }] }
GET
/api/ffp/routes
Auth: Browser Session or Bearer (Agent)

List recorded FFP runtime executions with route decisions, fallback lineage, invoker lineage, and related apps, workflows, and skills.

Response
{ "routes": [{ "tool": "mcp.github.create_issue", "primitive": "github", "fallbackUsed": false, "invokedByType": "workflow", "routeDecision": { "source": "external_mcp" }, "related": { "apps": [...], "workflows": [...], "skills": [...] } }], "primitives": [{ "primitive": "github", "executions": 4, "fallbackCount": 1 }] }
GET
/api/ffp/temp
Auth: Browser Session or Bearer (Agent)

Read the disabled FFP compatibility status. All runtime execution bypasses FFP in v6.6.7.

Response
{ "enabled": false, "status": "FFP Disabled", "route": "Multi-agent activities -> Unified Execution Engine" }
PATCH
/api/ffp/temp
Auth: Browser Session or Bearer (Agent)

Returns 405 Method Not Allowed. FFP cannot be activated in v6.6.7.

Request Body
enabledbooleanrequiredWorkspace-level FFP temp toggle
workspaceIdstringWorkspace scope
Response
{ "error": "Method Not Allowed", "enabled": false, "status": "FFP Disabled" }
POST
/api/studio/command
Auth: Browser Session or Bearer (Agent)

Run a Studio command. Mutating commands return a preview first and require a confirmation token on the second request.

Request Body
commandstringrequiredStrict Studio command string
confirmTokenstringShort-lived token returned by preview responses
advancedModebooleanMust be true for advanced sandbox commands
Response
{ "kind": "help|preview|result|error", "summary": "...", "result": {...}, "snippet": "..." }
POST
/api/studio/intent/stream
Auth: Browser Session or Bearer (Agent)

Stream a Super AgentOS chat request while persisting an execution record, logs, final reply, approvals, and notifications.

Request Body
messagestringrequiredUser request for Super AgentOS
sessionIdstringrequiredStudio session id
workspaceIdstringWorkspace scope
projectIdstringProject scope
Response
text/event-stream: execution, reply, error, and done events
GET
/api/executions
Auth: Browser Session or Bearer (Agent)

Search persisted executions by status, source type, workflow, app, skill, session, workspace, or title.

Response
{ "executions": [{ "id": "...", "type": "CHAT_EXECUTION", "status": "COMPLETED", "sourceType": "super_agent", "title": "..." }] }
GET
/api/executions/{id}
Auth: Browser Session or Bearer (Agent)

Load one execution and its execution logs.

Response
{ "execution": {...}, "logs": [{ "level": "info", "message": "..." }] }
POST
/api/executions/{id}/actions
Auth: Browser Session or Bearer (Agent)

Persist an execution action request: pause, resume, retry, cancel, or rollback.

Request Body
actionpause | resume | retry | cancel | rollbackrequiredRequested execution action
Response
{ "execution": { "id": "...", "status": "PAUSED" } }
GET
/api/recovery
Auth: Browser Session or Bearer (Agent)

List recoverable executions for the Recovery Center.

Response
{ "executions": [{ "status": "failed", "failure": { "whatFailed": "..." } }] }
POST
/api/recovery
Auth: Browser Session or Bearer (Agent)

Resume, retry, cancel, or rollback a recoverable execution.

Request Body
executionIdstringrequiredExecution id
actionresume | retry | cancel | rollbackrequiredRecovery action
Response
{ "execution": {...} }
POST
/api/panic
Auth: Browser Session or Bearer (Agent)

Cancel active QUEUED, RUNNING, and PAUSED executions in scope and create a notification.

Request Body
workspaceIdstringOptional workspace scope
sessionIdstringOptional session scope
Response
{ "stopped": 2, "executions": [...] }
GET
/api/notifications
Auth: Browser Session or Bearer (Agent)

List task, approval, workflow, recovery, and panic notifications.

Response
{ "notifications": [{ "title": "Task completed", "status": "unread" }] }
POST
/api/notifications
Auth: Browser Session or Bearer (Agent)

Create a notification or mark one read, unread, or archived.

Request Body
notificationIdstringExisting notification to update
statusread | unread | archivedNext notification status
titlestringTitle for a new notification
Response
{ "notification": {...} }
GET
/api/skills
Auth: None

Browse published Skill Store skills. Supports category, search, sort, page, limit, and author query params.

Response
{ "skills": [...], "pagination": { "page": 1, "limit": 50, "total": 54 } }
GET
/api/skills/discovery
Auth: None

Browse the v6.6.7 Skill Store marketplace with ranked search, categories, installed state, grouped discovery rows, recommendations, and developer spotlight.

Response
{ "skills": [...], "categories": ["AI", "Research"], "installedSlugs": [], "sections": [...] }
GET
/api/skills/{id}/preview
Auth: None

Preview input, output, execution example, and expected result before installing a capability.

Response
{ "skill": {...}, "preview": { "inputExample": {...}, "outputExample": {...}, "executionExample": {...}, "expectedResults": {...} } }
GET
/api/apps
Auth: None

Browse published App Store listings. Supports category, search, and sort query params.

Response
{ "apps": [...], "categories": ["All", "Research", "..."], "pagination": { "total": 6 } }
GET
/api/apps/discovery
Auth: None

Browse the v6.6.7 App Store with ranked search, installed priority, hero apps, featured, trending, recommended, new releases, recently updated, top installed, category rows, and developer spotlight.

Response
{ "apps": [...], "installedSlugs": [], "categories": ["Finance", "Trading"], "sections": [...], "hero": [...] }
GET
/api/apps/{slug}
Auth: None

Load a single App Store listing by slug. Includes visibility filtering and an owner flag when the caller is authenticated.

Response
{ "app": {...}, "viewerOwnsApp": false }
GET
/api/apps/{slug}/readiness
Auth: Browser Session or Bearer (Agent)

Resolve app readiness for the current viewer: installation state, required permissions, missing permissions, missing secrets, missing skills, updateAvailable, and target URLs.

Response
{ "installation": {...}, "requiredPermissions": ["vault"], "missingPermissions": [], "missingSecrets": [], "missingSkills": [], "ready": true, "updateAvailable": false, "targets": [{ "target": "web", "url": "https://..." }] }
POST
/api/apps
Auth: Browser Session or Bearer (Agent)

Publish a full agentic app to the App Store automatically.

Request Body
namestringrequiredHuman-readable app name
categorystringrequiredApp Store category such as Research, Finance, Data, or Operations
descriptionstringrequiredShort listing description
deviceTargetsstring[]Targets such as AgentOS Desktop, AgentOS Cloud, or Enterprise Workspace
manifestobjectRuntime, entrypoint, primitives, skills, permissions, required secrets, and commands
defaultConfigobjectDefault app configuration. Do not include secrets.
Response
{ "success": true, "app": { "slug": "invoice-ops-agent", "published": true } }
POST
/api/apps/install
Auth: Browser Session or Bearer (Agent)

Install or update an app into the workspace after re-running readiness checks. Workspace install creates ownership, Library availability, an execution, activity, notification, and package cache where applicable.

Request Body
slugstringrequiredApp slug
workspaceIdstringOptional workspace override
permissionsApprovedstring[]Permission approvals to apply during install
Response
{ "app": {...}, "installation": {...}, "readiness": { "ready": true, "targets": [{ "target": "web", "url": "https://..." }] } }
POST
/api/apps/{slug}/device-install
Auth: Browser Session or Bearer (Agent)

Deploy a workspace-installed app to Android, iOS, Desktop, or PWA from Library using the cached workspace package. Does not require returning to App Store.

Request Body
targetandroid | ios | desktop | pwarequiredLocal device target
workspaceIdstringWorkspace that owns the app installation
Response
{ "workspaceInstalled": true, "deviceInstalled": true, "target": "pwa", "packageCachedForOfflineInstall": true, "execution": {...} }
DELETE
/api/apps/{slug}/device-install
Auth: Browser Session or Bearer (Agent)

Remove only a local device install. Permanent marketplace ownership remains attached to the account.

Response
{ "removed": true, "ownershipPreserved": true, "target": "desktop" }
GET
/api/apps/updates
Auth: Browser Session or Bearer (Agent)

List installed apps with available updates, release notes, current version, and installed version.

Response
{ "updates": [{ "app": {...}, "currentVersion": "1.2.0", "installedVersion": "1.1.0", "releaseNotes": "..." }], "total": 1 }
POST
/api/apps/updates
Auth: Browser Session or Bearer (Agent)

Update all available app updates for the current account.

Response
{ "updated": [...], "total": 2 }
POST
/api/apps/{slug}/rollback
Auth: Browser Session or Bearer (Agent)

Roll back an installed app to a prior recorded version while preserving ownership.

Response
{ "app": {...}, "installation": {...}, "rolledBackTo": "1.1.0" }
GET
/api/apps/installed
Auth: Browser Session or Bearer (Agent)

List installed apps and their readiness state for the current agent.

Response
{ "installedApps": [{ "slug": "research-kit", "installation": {...}, "readiness": { "ready": true, "updateAvailable": false } }] }
POST
/api/apps/{slug}/open
Auth: Browser Session or Bearer (Agent)

Open an installed app on a specific target. Re-runs readiness and returns typed failures when the app is stale.

Request Body
targetstringOne of web, android, or ios. Defaults to web.
Response
{ "app": {...}, "installation": {...}, "openUrl": "https://...", "target": "web" }
PATCH
/api/apps/{slug}/installation
Auth: Browser Session or Bearer (Agent)

Update installation state: favorite, permissionsApproved, active, or disabled.

Request Body
favoritebooleanPin or unpin the installed app
permissionsApprovedstring[]Updated permission approval set
statusstringactive, disabled, or removed
Response
{ "app": {...}, "installation": {...} }
DELETE
/api/apps/{slug}/installation
Auth: Browser Session or Bearer (Agent)

Uninstall an app for the current agent.

Response
{ "removed": true, "app": {...}, "installation": {...} }
GET
/api/apps/{slug}/download
Auth: None

Download an AgentOS app package for device or workspace installation.

Response
{ "schema": "agentos.app.v1", "app": {...}, "manifest": {...}, "defaultConfig": {...} }
POST
/api/vault/access
Auth: Browser Session or Bearer (Agent)

Validate assignment and create a temporary runtime secret grant for a skill or app-backed runtime subject.

Request Body
actionstringrequiredUse runtime for runtime grants
workspaceIdstringrequiredWorkspace that owns the secret
secretNamestringrequiredVault secret name
subjectTypestringrequiredskill or app
subjectIdstringrequiredRuntime subject identifier
appSlugstringRequired for app-scoped permission validation
Response
{ "granted": true, "grant": { "id": "...", "name": "OPENAI_API_KEY", "status": "active", "expiresAt": "..." } }
POST
/api/vault/runtime-grants/consume
Auth: Bearer (SDK Kernel)

Consume or clean up a runtime secret grant from an authenticated SDK kernel runtime.

Request Body
grantIdstringrequiredRuntime grant id from /api/vault/access
actionstringUse cleanup to revoke without consuming again
Response
{ "secret": { "name": "OPENAI_API_KEY", "value": "..." }, "grant": { "id": "...", "status": "consumed" } }
POST
/api/skills/install
Auth: Browser Session or Bearer (Agent)

Install a published skill for the authenticated agent, approve permissions, and auto-resolve required dependencies.

Request Body
skill_idstringSkill UUID from the Skill Store listing
slugstringSkill slug from the Skill Store listing
permissionsApprovedstring[]Approved permissions required before execution
installDependenciesbooleanAuto-install required skills. Defaults to true.
optionalDependenciesstring[]Optional skill dependency slugs to install
Response
{ "success": true, "installation": {...}, "skill": {...}, "dependenciesInstalled": [...] }
PATCH
/api/skills/{id}/installation
Auth: Browser Session or Bearer (Agent)

Review, modify, or revoke installed skill permissions. Revoked required permissions block execution.

Request Body
permissionsApprovedstring[]Next approved permission set
statusactive | disabled | removedInstallation status
Response
{ "skill": {...}, "installation": {...} }
GET
/api/developers/{handle}
Auth: None

Load a public developer profile by safe public handle with published apps, skills, followers, downloads, and active users.

Response
{ "developer": { "handle": "research-labs", "appsPublished": 2, "skillsPublished": 3, "apps": [...], "skills": [...] } }
GET
/api/skills/installed
Auth: Browser Session or Bearer (Agent)

List installed skills for the authenticated agent.

Response
{ "installed_skills": [{ "id": "...", "installed_at": "...", "skill": {...} }] }
POST
/api/skills/use
Auth: Browser Session or Bearer (Agent)

Run a capability from an installed skill in the hardened skill runtime.

Request Body
skill_slugstringrequiredInstalled skill slug
capabilitystringrequiredCapability method name
paramsobjectCapability input payload
Response
{ "success": true, "result": <any>, "execution_time_ms": 12, "execution": {...} }
GET
/api/files
Auth: Browser Session or Bearer (Agent)

List or search governed files. Use action=preview or action=summarize with path for file-specific operations.

Response
{ "entries": [{ "path": "brief.md", "visibility": "private" }] }
POST
/api/files
Auth: Browser Session or Bearer (Agent)

Upload or save a governed file and persist the file execution.

Request Body
pathstringrequiredFile path
datastringUTF-8 or base64 content
contentEncodingutf8 | base64Payload encoding
visibilityprivate | workspace | publicGoverned visibility
Response
{ "entry": {...}, "execution": {...} }
PATCH
/api/files
Auth: Browser Session or Bearer (Agent)

Rename a governed file and persist the file execution.

Request Body
pathstringrequiredCurrent file path
nextPathstringrequiredNew file path
Response
{ "entry": {...}, "execution": {...} }
DELETE
/api/files
Auth: Browser Session or Bearer (Agent)

Delete a governed file by path and persist the file execution.

Response
{ "path": "brief.md", "deleted": true, "execution": {...} }
GET
/api/memory
Auth: Browser Session or Bearer (Agent)

List, search, or export governed memory. Add export=1 to return the V6.6.2 memory export payload.

Response
{ "entries": [{ "key": "preference", "namespaceType": "user" }], "viewerAgentId": "..." }
POST
/api/memory
Auth: Browser Session or Bearer (Agent)

Create or update governed memory and persist the memory execution.

Request Body
keystringrequiredMemory key
contentstringrequiredMemory content
namespaceTypeuser | agent | subagent | workspace | workflow | app | skillMemory namespace
visibilityprivate | workspace | publicGoverned visibility
Response
{ "entry": {...}, "execution": {...} }
DELETE
/api/memory
Auth: Browser Session or Bearer (Agent)

Delete governed memory by key and namespace and persist the memory execution.

Response
{ "deleted": true, "execution": {...} }
GET
/api/ops/metrics
Auth: None

Return public aggregate ops coverage and health metrics. Detailed internals are only returned to ops-admin callers.

Response
{ "summary": {...}, "settings": {...}, "metrics": {...}, "requiresAuthForDetails": true }
GET
/api/ops/crew
Auth: None

Return the public crew coverage summary. The per-item active and standby matrix is redacted unless the caller has ops-admin access.

Response
{ "summary": {...}, "settings": {...}, "coverage": {...}, "requiresAuthForDetails": true }
POST
/api/ops/crew/bootstrap
Auth: Browser Session or Bearer (Ops Admin)

Idempotently restore active and standby coverage across the canonical feature catalog.

Response
{ "success": true, "result": {...} }
POST
/api/ops/crew/failover
Auth: Browser Session or Bearer (Ops Admin)

Force a failover for a specific feature or runtime-function slot.

Request Body
featureSlugstringrequiredCatalog slug for the target feature or function
reasonstringOptional operator-supplied failover reason
Response
{ "success": true, "result": {...} }
POST
/api/ops/crew/cron
Auth: Bearer (Cron/Admin)

Run the autonomous crew cron cycle manually using the cron secret or admin token.

Response
{ "success": true, "result": {...} }