> ## 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.

# Read client access for an advertiser

> See who has client access to one of your advertisers, and what you can do about it right now

`get` with `kind: "advertiser_access"` answers three questions about one
advertiser in your Seller Account: who has client access, what you can do with
each person right now, and whether you can invite someone. The answers come
from Apostra, not from the screen or the agent. Show or act on only what the
read offers.

Use it before [inviting or managing a client](/v2/buyer/advertisers/tasks/save-advertiser-client-access).

```json theme={null}
{
  "kind": "advertiser_access",
  "advertiserId": "100"
}
```

The call works in a Seller Account only, and only for an advertiser your
organization owns. It refuses an advertiser that belongs to another
organization, including one shared with you through an
[advertiser grant](/v2/buyer/advertisers/tasks/manage-organization-advertiser-grants).

## What comes back

| Field | Meaning |
| - | - |
| `advertiserId`, `displayName` | The advertiser. |
| `class` | `house` for an advertiser you run yourself, `self_serve` for one a client runs, `system` for one Apostra operates for you. |
| `operatingMode` | `managed` or `self_serve`. It is read-only here. It follows client access. |
| `people` | The clients with access. Today an advertiser has at most one, but it is always a list. |
| `lifecycles` | Older self-serve access records for this advertiser, each with `canRevoke`. |
| `invite` | Whether you can invite a client now. |

Each entry in `people` has:

| Field | Meaning |
| - | - |
| `admissionId`, `revision` | Name the client and the version you read. Send both back when you act. |
| `recipientEmail` | The email the invitation went to. `null` unless the caller is an administrator signed in directly. |
| `claimState` | `unclaimed` until the person accepts the emailed link, then `claimed`. |
| `admissionState` | `pending`, `approved`, `rejected`, `suspended`, or `revoked`. |
| `roleSlug` | The access you chose: `advertiser-viewer`, `advertiser-editor`, or `advertiser-admin`. |
| `effectiveCapabilities` | The access the person has now: `read`, `write`, `admin`. |
| `deliveryState` | Whether the invitation email was `requested`, `sent`, `failed`, or `cancelled`. |
| `availableActions` | What you can do now: `approve`, `suspend`, `reactivate`, `revoke`, `change_role`. |

`availableActions` is the whole list. An action that is not in it will be
refused, for example `approve` before the person has accepted the invitation,
or any action on a System advertiser.

`invite.available` is `true` when you can invite someone. Then
`invite.eligibilityRevision` is the value to send with the invitation. When it
is `false`, `invite.reason` says why in plain words.

## Who sees what

Anyone who can read the advertiser can see each client's `admissionState`,
`claimState`, `roleSlug`, and `effectiveCapabilities`. Only an organization
administrator signed in directly, with client access turned on for the
account, sees the invitation email and delivery state and gets any actions.
For everyone else, including an API key, an agent acting for someone, or an
impersonated session:

* `recipientEmail` and `deliveryState` are `null`.
* `availableActions` is empty.
* `invite.available` is `false` and `invite.reason` says why.
* `canRevoke` is `false` on every entry in `lifecycles`.

## Related

* [Invite and manage a client's access](/v2/buyer/advertisers/tasks/save-advertiser-client-access)
* [List organization advertisers](/v2/buyer/advertisers/tasks/list-organization-advertisers), the REST read of every advertiser


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.