Troubleshooting
| Symptom | Check |
|---|---|
401 unauthorized | Correct credential type, active key, expiry, environment, and Authorization header |
403 missing scope | Endpoint's required scope and actual credential scope list |
422 when sending raw content | Both send scopes are needed; otherwise use a published template |
| Account not found/inactive | Account was upserted in this application's environment and the key matches |
409 idempotency_conflict | Same key was reused with a different payload |
provider_not_configured | Active provider exists on the exact account and channel |
| Template not found for channel/locale | Published version exists for every selected channel and explicit locale |
| Empty user inbox | Token account/user IDs match the notification recipient and the in-app delivery completed |
| Browser cannot connect | Frontend origin is allowed by CORS, TLS is valid, and user token is current |
| API operational but delivery delayed | Relay, queue, worker, and per-delivery status |
Credentials in Swagger
Paste the raw credential into the matching field without a Bearer prefix. Console login does not authorize Application API requests. If the key was lost, create a replacement; the secret cannot be viewed again.
Missing scopes
Scope names come from Notify's supported list. Choose a replacement key profile based on the failed operation rather than inventing a new name. See Scopes and permissions.
Provider failures
Test the account's connection from Console or the account-provider test endpoint. Check endpoint URL, authentication, session, sender identity, network reachability, and TLS. Account-bound delivery has no application-provider fallback.
Landing-page health
The status indicator reads GET /health/live and retries after temporary failures. This indicates API reachability, not complete provider delivery health. Inspect /health/ready, service state, and actual delivery status when investigating the processing stack.
Support details
Include the timestamp/timezone, environment, endpoint, HTTP status, X-Request-ID, notification ID, and delivery ID. Share only the credential prefix, never the full secret.