List all of the caller's tasks across every agent.
Cross-agent task list (P2-B). Returns every task channel the caller owns, newest first — the unified “my tasks” view for SDKs that need to render a multi-agent inbox without fanning out per-agent.
Same wire shape and next_since pagination as the
per-agent variant at
GET /api/v1/agents/{agentId}/tasks. Filtering an existing
per-agent call is equivalent to passing agent_id
explicitly.
Authorization: the caller’s owner_id is the only ACL
gate. Tasks fan out across agents the caller has invoked,
whether or not they still have visibility on those agents
today — possession of the task row itself proves access at
submit time.
Only protocol=openapi channels surface here. Long-running
conversations live at GET /api/v1/agents/{agentId}/conversations
and are not mixed in to keep status semantics stable (tasks
have a deadline; conversations don’t).
Authorizations
Pass a user JWT or a oag_ User API Key on the
Authorization: Bearer <token> header. Both are validated by
openapi-gateway against the Auth service.
Both credential types are user-scoped: every key (and every JWT) is bound to exactly one owner, and every route grants the caller full access to that owner's own resources. Cross-tenant access is denied by owner-ACL inside the handlers — there is no per-route scope vocabulary on this API.
Removed in v1.1.0: the legacy
agents:*/tasks:*/files:*/instances:*scope set has been dropped together with the403 insufficient_scopeerror. Existingoag_keys automatically gain full owner-level access and do not need to be re-issued. SDK calls that previously passedscopestocreateAPIKeyshould drop the argument. See the changelog at the bottom of this spec for the full migration note.
Query Parameters
Narrow the result to a single agent. Equivalent to
calling GET /agents/{agentId}/tasks directly; kept on
this endpoint so callers can collapse their pagination
logic across the "all agents" and "single agent" paths.
128Narrow the result to tasks running on a specific instance
(across any agent on that instance). Combine with
state=open to answer "is this instance currently running
a task?" — a non-empty result means busy. Device control
commands (computer / mobile) are NOT counted here.
128Filter by channel state. active is the legacy wire
alias for v2's open; all returns both. Default:
active.
active, open, closed, all Opaque pagination cursor from the previous page's next_since.
1 <= x <= 100