> ## Documentation Index
> Fetch the complete documentation index at: https://docs.apostra.com/llms.txt
> Use this file to discover all available pages before exploring further.

# List available accounts

> Discover partner accounts available to link to an advertiser

`GET /api/v2/buyer/advertisers/{advertiserId}/accounts/available`

Lists accounts a source has discovered but not yet linked to the advertiser. Call this before linking an account to pre-fill `accountId` and check the source's supported `billingOptions`.

<Warning>
  This advertiser-scoped operation is the legacy AdCP account flow. Although
  compatibility mirroring may expose official-adapter accounts here, it is not
  the authoritative workflow for Meta, Google Ads, TikTok, Snap, or other
  official adapters, and an empty result does not describe their connection. Use
  `list_storefront_connections`, `list_storefront_connection_accounts`, and
  `list_storefront_connection_account_mappings` for those platforms. See
  [Ad Platform Accounts](/v2/concepts/ad-platform-accounts).
</Warning>

## Request

```bash curl theme={null}
curl "https://api.apostra.com/api/v2/buyer/advertisers/12345/accounts/available?storefrontId=42&sourceId=src_main&take=50" \
  -H "Authorization: Bearer $SCOPE3_API_KEY"
```

## Parameters

| Field          | Type            | Required | Notes                                                                                                         |
| -------------- | --------------- | -------- | ------------------------------------------------------------------------------------------------------------- |
| `advertiserId` | string (path)   | Yes      | Unique identifier for the advertiser                                                                          |
| `storefrontId` | integer (query) | Yes      | Storefront the source lives on                                                                                |
| `sourceId`     | string (query)  | Yes      | Inventory source within `storefrontId`                                                                        |
| `refresh`      | enum (query)    | No       | Defaults to `true`, which refreshes from the source. Set `false` only for a read-only view of cached accounts |
| `billingType`  | string (query)  | No       | Filter by billing type. Must be a value the source supports. Defaults to the source's default                 |
| `credentialId` | string (query)  | No       | Specific registered credential to use. Required when multiple credentials exist for the source                |
| `take`         | integer (query) | No       | Results to return. Default `50`, max `250`                                                                    |
| `skip`         | integer (query) | No       | Results to skip for pagination. Default `0`                                                                   |

## Response

```json theme={null}
{
  "accounts": [
    {
      "accountId": "acc_acme_pinnacle",
      "credentialId": "cred_snap_coke",
      "name": "Acme c/o Pinnacle",
      "advertiser": "Acme Corp",
      "billingProxy": "Pinnacle Media",
      "house": "acme-corp.com",
      "billing": "advertiser",
      "sources": [
        { "storefrontId": 42, "storefrontName": "Example Storefront", "sourceId": "src_main", "sourceName": "Main Source" }
      ],
      "status": "active"
    }
  ],
  "total": 8,
  "synced": false,
  "billingOptions": { "default": "advertiser", "supported": ["advertiser", "agent"] }
}
```

`account.status` is one of `active`, `pending_approval`, `payment_required`, `suspended`, `closed`. `credentialId` identifies the connected provider credential that owns the account. Include it when linking the account if the buyer has connected more than one credential for the same adapter storefront and duplicate account IDs may exist. `synced` is `true` when no accounts matched and a `sync_accounts` call was triggered to provision one at the partner. Always check `billingOptions.supported` before sending a `billingType`.

By default, this operation refreshes live source state. Set `refresh=false` for diagnostics or other explicitly read-only inspection: it returns only the cached account projection and does not mirror adapter accounts, call the source's `list_accounts` capability, or trigger `sync_accounts`. Cached results can be stale or empty, so use the default live refresh before making an account-linking decision.

## Errors

* `400 VALIDATION_ERROR` — missing `storefrontId`/`sourceId`, or multiple credentials exist and `credentialId` was not provided.
* `404 NOT_FOUND` — `advertiserId` or source does not exist or is not visible.

See [Errors](/v2/reference/errors) for the full error contract.

## Related

<CardGroup cols={2}>
  <Card title="Advertiser tasks" href="/v2/buyer/advertisers/tasks" icon="list-check">
    All advertiser operations
  </Card>

  <Card title="Advertiser overview" href="/v2/object-guides/advertiser#linked-accounts" icon="user-tie">
    Linked accounts model
  </Card>

  <Card title="Create advertiser" href="/v2/buyer/advertisers/tasks/create-advertiser" icon="plus">
    Link accounts at creation
  </Card>

  <Card title="Update reporting bucket" href="/v2/buyer/advertisers/tasks/update-account-reporting-bucket" icon="bucket">
    Configure offline delivery on a link
  </Card>

  <Card title="Ad platform accounts" href="/v2/concepts/ad-platform-accounts" icon="sitemap">
    Connect, discover, and map official adapter accounts
  </Card>
</CardGroup>
