403 Forbidden errors at runtime.
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.
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 |