list_accounts is not optional discovery polish; it is the namespace discovery contract. The upstream platform owns the accessible account set, so buyers MUST resolve an explicit account_id before the first account-scoped request. If the authenticated credential can access more than one account, the seller MUST expose list_accounts; if it can access exactly one account, the seller SHOULD expose list_accounts returning that singleton so SDKs can auto-select it and still send { "account_id": "..." } on required-account calls. sync_accounts provisioning does not create account-id accounts in 3.0.x unless a future explicit capability declares that mode; if sync_accounts is exposed on these sellers today, use it only for settings updates against an account already identified by account_id.
list_accounts works across all vendor protocols — media buy agents, signals agents, governance agents, and creative agents all return accounts through this same task.
Response Time: ~1s.
Request Schema: static/schemas/source/account/list-accounts-request.json
Response Schema: /schemas/3.2.0-beta.0/account/list-accounts-response.json
Quick Start
List all accounts this agent can operate:Request Parameters
All parameters are optional. An empty request returns all accounts visible to the authenticated caller. Useaccount when re-reading one known account by
seller-assigned account_id or by the complete buyer-declared natural key.
Response
Each account includes:
For buyer-declared accounts,
list_accounts MUST return the current canonical natural-key fields needed to use the account again. A stateless buyer can therefore take brand, operator, operator_unit, currency, buyer-selected timezone, and sandbox from the response and send the same shape as account on a later task. operator_unit.name may change without changing which account the key identifies. A requested identity in identity_change is not a usable account reference until it becomes canonical.
Single-publisher cardinality
A seller serving exactly one publisher entity MAY return that entity as the sole account onlist_accounts responses, regardless of calling principal. The “Direct advertiser with single account” example in list-accounts-response.json is canonical for this case — a single-element accounts[] with no pagination envelope at all.
Pagination conformance requiring pagination.has_more: true does not apply when:
paginationis absent entirely (canonical single-account shape), orpagination.total_countis present and ≤ 1
not_applicable in either case. This pattern is conformant; the spec carries no minItems constraint on accounts[] and the single-account example is normative.
Common Scenarios
Poll until account becomes active
Aftersync_accounts returns pending_approval, poll until the account is ready:
Reconcile account status webhooks
After receivingaccount.status_changed, re-read the account snapshot. The webhook tells you which account changed; list_accounts is the source of truth for the current status, setup hints, billing terms, and authorization.
The seller-mediated account provisioning walkthrough shows this invalidation-and-repair pattern in context.
Filter active accounts only
Error Handling
Next Steps
- sync_accounts — Sync advertiser accounts with a seller
- sync_governance — Sync governance agents to accounts
- Accounts and agents — Billing models, trust models, and authorized operators
- Brand protocol — How vendor agents resolve brand identity from the brand’s
domain