Skip to main content
Returns all accounts the authenticated agent can operate on this vendor agent. Use this to discover existing accounts, check status changes on pending accounts, and recover the exact account reference expected on protocol operations. Account visibility is source-neutral: the seller MUST return every account the authenticated caller can operate, including pre-existing accounts created or managed through seller and connected-platform surfaces. list_accounts is not limited to relationships first provisioned through sync_accounts. list_accounts returns accounts, and every account has an account_id. A seller that keeps pending provisioning as account requests (experimental in 3.3) lists the account only once its request resolves; until then, read the request in account_requests[] by setting include_requests: true (or request_ids). Requests page separately from accounts: account_requests_pagination in the response, requests_pagination in the request. The top-level pagination pages accounts only. For upstream-managed account namespaces, 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.3.0-beta.1/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. Use account to re-read one known account by seller-assigned account_id, or to find buyer-declared accounts by natural key.

Response

Each account includes: For buyer-declared accounts, list_accounts MUST return each account’s account_id with its current brand, operator, and attributes. A stateless buyer recovers its account IDs this way after a cold start and sends { "account_id": "..." } on later tasks. A natural-key account filter returns every matching account, so several accounts for one brand and operator are a normal result here, not an ambiguity.

Mapping buyers to listed accounts

When the seller owns the account namespace, the caller usually maps its own buyers onto accounts it already has, and asks for a new one only when none fits. A storefront holding credentials for its ad servers’ sales agents works this way, as does a buyer on a social platform. The caller needs to know what each account is for:
  • Sellers SHOULD return account_scope on every account, and brand and/or operator wherever the scope names them.
  • When several accounts could serve a buyer, a person chooses. The choice decides who is invoiced, so there is no default order between scopes, and a caller does not pick one automatically.
  • When nothing fits, ask for an account with request_account (experimental in 3.3) or sync_accounts.

Single-publisher cardinality

A seller serving exactly one publisher entity MAY return that entity as the sole account on list_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:
  • pagination is absent entirely (canonical single-account shape), or
  • pagination.total_count is present and ≤ 1
Runners SHOULD grade pagination-walk phases as 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

After sync_accounts returns pending_approval, poll until the account is ready. With request_account, poll the request instead, with request_ids:

Reconcile account status webhooks

After receiving account.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