Skip to content

API Endpoints

All endpoints are served from the control plane on port 3001 (HTTP) and 3002 (gRPC).

MethodPathDescription
GET/healthzHealth check
GET/readyzReadiness check
GET/openapi.jsonOpenAPI specification
MethodPathDescription
GET/v1/meCurrent principal
GET/v1/me/organizationsMy organizations
GET/v1/me/teamsMy teams
GET/v1/me/permissionsEffective permissions
MethodPathDescription
POST/v1/organizationsCreate organization
GET/v1/organizations/{id}Get organization
GET/v1/organizations/{id}/teamsList teams
GET/v1/organizations/{id}/membersList members
POST/v1/teamsCreate team (RBAC enforced)
GET/v1/teams/{id}Get team
POST/v1/invitationsCreate invitation (RBAC enforced)
POST/v1/invitations/{id}/acceptAccept invitation
POST/v1/invitations/{id}/revokeRevoke invitation
MethodPathDescription
POST/v1/authz/checkSingle permission check
POST/v1/authz/check-batchBatch permission check
MethodPathDescription
POST/v1/jobsSubmit a job (with idempotency key, cost estimate)
GET/v1/jobs/{id}Get job by canonical job_id
GET/v1/jobsList jobs
GET/v1/jobs/{id}/usageJob cost/usage roll-up
GET/v1/jobs/{id}/eventsPer-job event stream (SSE)
MethodPathDescription
POST/v1/workflow-definitionsCreate definition (supports NodeDefinition schema)
GET/v1/workflow-definitionsList definitions
POST/v1/workflow-runsCreate run (with idempotency key)
GET/v1/workflow-runs/{id}Get run status
POST/v1/workflow-runs/{id}/startStart execution
POST/v1/workflow-runs/{id}/cancelCancel run
GET/v1/workflow-runs/{id}/eventsPer-run event stream (SSE)
MethodPathDescription
GET/v1/providersList available providers and capabilities
POST/v1/providers/executeExecute a provider request
POST/v1/providers/execute/streamExecute with SSE token streaming
POST/v1/providers/estimateCost estimation
MethodPathDescription
POST/v1/api-keysCreate key (returns raw key once)
GET/v1/api-keysList keys
GET/v1/api-keys/{id}Get key metadata
DELETE/v1/api-keys/{id}Revoke key
POST/v1/api-keys/{id}/disableDisable key
MethodPathDescription
POST/v1/assetsUpload asset
GET/v1/assets/{id}Download asset
MethodPathDescription
GET/v1/organizations/{id}/usageUsage summary with breakdowns
GET/v1/organizations/{id}/usage/recordsDetailed usage records
MethodPathDescription
GET/v1/organizations/{id}/audit-logsOrg audit trail
GET/v1/audit-logsGlobal audit logs
MethodPathDescription
GET/v1/events/streamAll events (SSE)
GET/v1/events/wsAll events (WebSocket)
GET/v1/jobs/{id}/eventsPer-job events (SSE)
GET/v1/workflow-runs/{id}/eventsPer-run events (SSE)

Every response follows the standard envelope format:

{
"meta": {
"request_id": "uuid",
"trace_id": "uuid",
"timestamp": "2026-03-19T12:00:00Z",
"status": 200,
"version": "1.0"
},
"context": {
"principal_id": "uuid",
"organization_id": "uuid",
"team_id": null
},
"data": { ... },
"error": null,
"links": { ... }
}

Error responses:

{
"meta": { "status": 403, ... },
"data": null,
"error": {
"code": "forbidden",
"message": "Insufficient permissions"
}
}