Troubleshooting
| HTTP status | Meaning and action |
|---|---|
| 400 | Validation error: a required field is missing, a parameter is unsupported, or start_date is before 2023-01-01. |
| 401 | The token is invalid or expired. Get a new token with your refresh_token (see Request and download reports, Step 1) and confirm you're sending requests to adsapi.snapchat.com. |
| 403 | Your org doesn't have access to the requested ad_account_id. Confirm the advertiser has shared the account at View tier and that a member of your org holds the Data Analyst/reports role on it (see Onboarding). |
| 404 | Either the report_run_id is unknown, or your org hasn't been enabled for MMM API access. If you've verified the run ID, contact your Snap point of contact to confirm your org's MMM allowlist status. |
Access checklist
If a report request is failing and the status code alone doesn't make the cause obvious, walk through this list in order:
- Is your access token valid? A 401 means refresh it.
- Is your org enabled for MMM API access? Check with your Snap point of contact; this is required independently of any ad account sharing, and its absence surfaces as a 404, not a 403.
- Has the advertiser shared the ad account with your org, at View tier? Missing or wrong-tier sharing surfaces as a 403.
- Has your org admin assigned the Data Analyst/
reportsrole to the calling user on that account? A share alone doesn't grant access; the role assignment does. Missing this also surfaces as a 403. - Is the request itself well-formed? Check required fields, that
start_dateisn't before 2023-01-01, and parameter values against the request reference.
A 404 on a report request can mean either an unknown report_run_id or an org that isn't MMM-enabled. There's no way to distinguish the two from the response alone, since both resolve the same way: confirm the run ID first, then check with Snap if it's correct.
Was this page helpful?