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

# App Scopes

> OAuth scopes required per endpoint for the Retail Media API.

Retail Media API endpoints are protected by OAuth 2.0 scopes. Each endpoint requires one scope. Calling an endpoint without that scope results in `403 Forbidden` errors at runtime.

<Info>
  Scopes are granted at app creation time and cannot be widened afterwards. If your app is missing a scope, you need to create a new app with the correct scope set and obtain consent again.
</Info>

## Available scopes

| Scope                                   | What it covers                                                                              |
| --------------------------------------- | ------------------------------------------------------------------------------------------- |
| `RetailMedia_Accounts_Read`             | Read access to accounts, brands, sellers, and fees                                          |
| `RetailMedia_Accounts_Manage`           | Create and manage accounts, brands, sellers, fees, and consent                              |
| `RetailMedia_Campaign_Read`             | Read access to campaigns, line items, creatives, products, keywords, and catalog data       |
| `RetailMedia_Campaign_Manage`           | Create and manage campaigns, line items, creatives, products, keywords, and catalog exports |
| `RetailMedia_Analytics_Read`            | Read access to performance, revenue, attribution, and reporting endpoints                   |
| `RetailMedia_Audience_Read`             | Read access to audience segments and contact lists                                          |
| `RetailMedia_Audience_Manage`           | Create and manage audience segments and contact lists                                       |
| `RetailMedia_Balance_Read`              | Read access to balances and balance history                                                 |
| `RetailMedia_Balance_Manage`            | Create and manage balances, add funds, and change balance dates                             |
| `RetailMedia_Billing_Read`              | Read access to billing and partner reports                                                  |
| `RetailMedia_Catalog_Manage`            | Create and manage store inventory in the product catalog                                    |
| `RetailMedia_Catalog_Read`              | Read access to store inventory and catalog data                                             |
| `RetailMedia_OnSiteRecommendation_Read` | Read access to on-site recommendation endpoints                                             |
| `RetailMedia_ThirdPartyAccounts_Manage` | Create and manage third-party account integrations                                          |

***

## Endpoint scope requirements

### Accounts

| Method | Endpoint                                                                                           | Required scope              |
| ------ | -------------------------------------------------------------------------------------------------- | --------------------------- |
| `GET`  | `/experimental/retail-media/account-management/accounts/{accountId}/private-market-child-accounts` | `RetailMedia_Accounts_Read` |
| `POST` | `/experimental/retail-media/brands/search`                                                         | `RetailMedia_Accounts_Read` |

### Analytics

| Method | Endpoint                                                          | Required scope               |
| ------ | ----------------------------------------------------------------- | ---------------------------- |
| `POST` | `/experimental/retail-media/insights/digital-shelf-intelligence`  | `RetailMedia_Analytics_Read` |
| `POST` | `/experimental/retail-media/insights/share-of-voice`              | `RetailMedia_Analytics_Read` |
| `GET`  | `/experimental/retail-media/insights/{insight-id}/output`         | `RetailMedia_Analytics_Read` |
| `GET`  | `/experimental/retail-media/insights/{insight-id}/status`         | `RetailMedia_Analytics_Read` |
| `POST` | `/experimental/retail-media/reports/accounts`                     | `RetailMedia_Analytics_Read` |
| `POST` | `/experimental/retail-media/reports/campaigns`                    | `RetailMedia_Analytics_Read` |
| `POST` | `/experimental/retail-media/reports/fillrate`                     | `RetailMedia_Analytics_Read` |
| `POST` | `/experimental/retail-media/reports/line-items`                   | `RetailMedia_Analytics_Read` |
| `POST` | `/experimental/retail-media/reports/offsite`                      | `RetailMedia_Analytics_Read` |
| `POST` | `/experimental/retail-media/reports/sync/attributed-transactions` | `RetailMedia_Analytics_Read` |
| `POST` | `/experimental/retail-media/reports/sync/campaigns`               | `RetailMedia_Analytics_Read` |
| `POST` | `/experimental/retail-media/reports/sync/line-items`              | `RetailMedia_Analytics_Read` |
| `POST` | `/experimental/retail-media/reports/sync/real-time-performance`   | `RetailMedia_Analytics_Read` |
| `POST` | `/experimental/retail-media/reports/unfilled-placements`          | `RetailMedia_Analytics_Read` |
| `GET`  | `/experimental/retail-media/reports/{reportId}/output`            | `RetailMedia_Analytics_Read` |
| `GET`  | `/experimental/retail-media/reports/{reportId}/status`            | `RetailMedia_Analytics_Read` |

### Audience

| Method  | Endpoint                                                                                                | Required scope                |
| ------- | ------------------------------------------------------------------------------------------------------- | ----------------------------- |
| `PATCH` | `/experimental/retail-media/accounts/{account-id}/audience-segments`                                    | `RetailMedia_Audience_Manage` |
| `POST`  | `/experimental/retail-media/accounts/{account-id}/audience-segments/compute-sizes`                      | `RetailMedia_Audience_Manage` |
| `POST`  | `/experimental/retail-media/accounts/{account-id}/audience-segments/create`                             | `RetailMedia_Audience_Manage` |
| `POST`  | `/experimental/retail-media/accounts/{account-id}/audience-segments/delete`                             | `RetailMedia_Audience_Manage` |
| `POST`  | `/experimental/retail-media/accounts/{account-id}/audience-segments/estimate-size`                      | `RetailMedia_Audience_Manage` |
| `POST`  | `/experimental/retail-media/accounts/{account-id}/audience-segments/search`                             | `RetailMedia_Audience_Read`   |
| `GET`   | `/experimental/retail-media/accounts/{account-id}/audience-segments/{audience-segment-id}/contact-list` | `RetailMedia_Audience_Read`   |
| `PATCH` | `/experimental/retail-media/accounts/{account-id}/audiences`                                            | `RetailMedia_Audience_Manage` |
| `POST`  | `/experimental/retail-media/accounts/{account-id}/audiences/compute-sizes`                              | `RetailMedia_Audience_Manage` |
| `POST`  | `/experimental/retail-media/accounts/{account-id}/audiences/create`                                     | `RetailMedia_Audience_Manage` |
| `POST`  | `/experimental/retail-media/accounts/{account-id}/audiences/delete`                                     | `RetailMedia_Audience_Manage` |
| `POST`  | `/experimental/retail-media/accounts/{account-id}/audiences/estimate-size`                              | `RetailMedia_Audience_Manage` |
| `POST`  | `/experimental/retail-media/accounts/{account-id}/audiences/search`                                     | `RetailMedia_Audience_Read`   |
| `POST`  | `/experimental/retail-media/audience-segments/{audience-segment-id}/contact-list/add-remove`            | `RetailMedia_Audience_Manage` |
| `POST`  | `/experimental/retail-media/audience-segments/{audience-segment-id}/contact-list/clear`                 | `RetailMedia_Audience_Manage` |

### Balance

| Method  | Endpoint                                                                 | Required scope               |
| ------- | ------------------------------------------------------------------------ | ---------------------------- |
| `PATCH` | `/experimental/retail-media/accounts/{account-id}/balances/{balance-id}` | `RetailMedia_Balance_Manage` |
| `GET`   | `/experimental/retail-media/accounts/{accountId}/balances`               | `RetailMedia_Balance_Read`   |
| `GET`   | `/experimental/retail-media/balances/{balanceId}`                        | `RetailMedia_Balance_Read`   |
| `GET`   | `/experimental/retail-media/balances/{balanceId}/history`                | `RetailMedia_Balance_Read`   |

### Campaign

| Method   | Endpoint                                                                                   | Required scope                |
| -------- | ------------------------------------------------------------------------------------------ | ----------------------------- |
| `POST`   | `/experimental/retail-media/accounts/{account-id}/campaigns`                               | `RetailMedia_Campaign_Manage` |
| `POST`   | `/experimental/retail-media/accounts/{account-id}/creatives`                               | `RetailMedia_Campaign_Manage` |
| `POST`   | `/experimental/retail-media/accounts/{account-id}/creatives/search`                        | `RetailMedia_Campaign_Read`   |
| `GET`    | `/experimental/retail-media/accounts/{account-id}/creatives/{creative-id}`                 | `RetailMedia_Campaign_Read`   |
| `PUT`    | `/experimental/retail-media/accounts/{account-id}/creatives/{creative-id}`                 | `RetailMedia_Campaign_Manage` |
| `POST`   | `/experimental/retail-media/accounts/{account-id}/line-items/cap-out-history`              | `RetailMedia_Campaign_Read`   |
| `POST`   | `/experimental/retail-media/accounts/{accountId}/retailers/search`                         | `RetailMedia_Campaign_Read`   |
| `GET`    | `/experimental/retail-media/auction-line-items/{lineItemId}`                               | `RetailMedia_Campaign_Read`   |
| `PUT`    | `/experimental/retail-media/auction-line-items/{lineItemId}`                               | `RetailMedia_Campaign_Manage` |
| `POST`   | `/experimental/retail-media/balances/{balanceId}/campaigns/append`                         | `RetailMedia_Campaign_Manage` |
| `POST`   | `/experimental/retail-media/balances/{balanceId}/campaigns/delete`                         | `RetailMedia_Campaign_Manage` |
| `GET`    | `/experimental/retail-media/campaigns/{campaign-id}/preferred-line-items`                  | `RetailMedia_Campaign_Read`   |
| `POST`   | `/experimental/retail-media/campaigns/{campaign-id}/preferred-line-items`                  | `RetailMedia_Campaign_Manage` |
| `GET`    | `/experimental/retail-media/campaigns/{campaignId}/auction-line-items`                     | `RetailMedia_Campaign_Read`   |
| `POST`   | `/experimental/retail-media/campaigns/{campaignId}/auction-line-items`                     | `RetailMedia_Campaign_Manage` |
| `GET`    | `/experimental/retail-media/catalogs/{catalogId}/status`                                   | `RetailMedia_Campaign_Read`   |
| `POST`   | `/experimental/retail-media/line-items`                                                    | `RetailMedia_Campaign_Manage` |
| `POST`   | `/experimental/retail-media/line-items/demand-search`                                      | `RetailMedia_Campaign_Read`   |
| `POST`   | `/experimental/retail-media/line-items/supply-search`                                      | `RetailMedia_Campaign_Read`   |
| `PATCH`  | `/experimental/retail-media/line-items/{line-item-id}`                                     | `RetailMedia_Campaign_Manage` |
| `GET`    | `/experimental/retail-media/line-items/{line-item-id}/bidding-strategy`                    | `RetailMedia_Campaign_Read`   |
| `POST`   | `/experimental/retail-media/line-items/{line-item-id}/creatives/upsert`                    | `RetailMedia_Campaign_Manage` |
| `GET`    | `/experimental/retail-media/line-items/{line-item-id}/product-buttons`                     | `RetailMedia_Campaign_Read`   |
| `POST`   | `/experimental/retail-media/line-items/{line-item-id}/product-buttons/create`              | `RetailMedia_Campaign_Manage` |
| `DELETE` | `/experimental/retail-media/line-items/{line-item-id}/product-buttons/{product-button-id}` | `RetailMedia_Campaign_Manage` |
| `GET`    | `/experimental/retail-media/line-items/{line-item-id}/product-buttons/{product-button-id}` | `RetailMedia_Campaign_Read`   |
| `PUT`    | `/experimental/retail-media/line-items/{line-item-id}/product-buttons/{product-button-id}` | `RetailMedia_Campaign_Manage` |
| `GET`    | `/experimental/retail-media/line-items/{line-item-id}/products`                            | `RetailMedia_Campaign_Read`   |
| `POST`   | `/experimental/retail-media/line-items/{line-item-id}/products/add`                        | `RetailMedia_Campaign_Manage` |
| `POST`   | `/experimental/retail-media/line-items/{line-item-id}/products/append`                     | `RetailMedia_Campaign_Manage` |
| `POST`   | `/experimental/retail-media/line-items/{line-item-id}/products/delete`                     | `RetailMedia_Campaign_Manage` |
| `POST`   | `/experimental/retail-media/line-items/{line-item-id}/products/pause`                      | `RetailMedia_Campaign_Manage` |
| `POST`   | `/experimental/retail-media/line-items/{line-item-id}/products/unpause`                    | `RetailMedia_Campaign_Manage` |
| `GET`    | `/experimental/retail-media/line-items/{line-item-id}/targets`                             | `RetailMedia_Campaign_Read`   |
| `POST`   | `/experimental/retail-media/line-items/{line-item-id}/targets/create`                      | `RetailMedia_Campaign_Manage` |
| `GET`    | `/experimental/retail-media/preferred-line-items/{line-item-id}`                           | `RetailMedia_Campaign_Read`   |
| `PUT`    | `/experimental/retail-media/preferred-line-items/{line-item-id}`                           | `RetailMedia_Campaign_Manage` |

### Catalog

| Method | Endpoint                                                                           | Required scope               |
| ------ | ---------------------------------------------------------------------------------- | ---------------------------- |
| `POST` | `/experimental/retail-media/catalog/merchants/{merchantId}/store-inventory/delete` | `RetailMedia_Catalog_Manage` |
| `POST` | `/experimental/retail-media/catalog/merchants/{merchantId}/store-inventory/upsert` | `RetailMedia_Catalog_Manage` |
| `POST` | `/experimental/retail-media/catalog/products/batch`                                | `RetailMedia_Catalog_Manage` |
| `GET`  | `/experimental/retail-media/catalog/products/batch/report/{operation-token}`       | `RetailMedia_Catalog_Read`   |
| `POST` | `/experimental/retail-media/retailers/{retailer-id}/offers/update`                 | `RetailMedia_Catalog_Manage` |
| `POST` | `/experimental/retail-media/retailers/{retailer-id}/products/set-buy-box-winners`  | `RetailMedia_Catalog_Manage` |

### Gateway

| Method | Endpoint                        | Required scope |
| ------ | ------------------------------- | -------------- |
| `GET`  | `/experimental/retail-media/me` | `(none)`       |

### OnSiteRecommendation

| Method | Endpoint                                                                          | Required scope                          |
| ------ | --------------------------------------------------------------------------------- | --------------------------------------- |
| `POST` | `/experimental/retail-media/chatbot-catalogs/{catalogid}/product-recommendations` | `RetailMedia_OnSiteRecommendation_Read` |

### ThirdPartyAccounts

| Method | Endpoint                                                                              | Required scope                          |
| ------ | ------------------------------------------------------------------------------------- | --------------------------------------- |
| `POST` | `/experimental/retail-media/accounts/{accountId}/grant-third-party-consent`           | `RetailMedia_ThirdPartyAccounts_Manage` |
| `POST` | `/experimental/retail-media/third-party-accounts/{accountId}/brands/add`              | `RetailMedia_ThirdPartyAccounts_Manage` |
| `POST` | `/experimental/retail-media/third-party-accounts/{accountId}/brands/{brandId}/remove` | `RetailMedia_ThirdPartyAccounts_Manage` |
| `POST` | `/experimental/retail-media/third-party-accounts/{accountId}/create-brand-account`    | `RetailMedia_ThirdPartyAccounts_Manage` |
| `POST` | `/experimental/retail-media/third-party-accounts/{accountId}/create-seller-account`   | `RetailMedia_ThirdPartyAccounts_Manage` |
| `PUT`  | `/experimental/retail-media/third-party-accounts/{accountId}/sellers`                 | `RetailMedia_ThirdPartyAccounts_Manage` |
