generated: '2026-08-12' method: searched source: https://learn.microsoft.com/en-us/xandr/digital-platform-api/api-semantics docs: - https://learn.microsoft.com/en-us/xandr/digital-platform-api/api-semantics - https://learn.microsoft.com/en-us/xandr/digital-platform-api/api-usage-constraints format: custom-envelope api: Digital Platform API envelope: wrapper: response fields: [error_id, error] note: "error_id is a stable machine token; error is a verbose human-readable description." error_codes: - id: INTEGRITY meaning: A client request is inconsistent (e.g. deleting a default creative attached to an active placement). action: Check the request logic for consistency. - id: LIMIT meaning: The user has reached the maximum number of allowed objects of a certain type. action: Delete unnecessary objects to get under the limit, or contact your Xandr representative. - id: NOAUTH meaning: The user is not logged in, or the login credentials are invalid. action: Use the Authentication Service to get a token, or check username/password. - id: NOAUTH_DISABLED meaning: The user's account has been deactivated. action: Log in with a different user, or create a user account specifically for API access. - id: NOAUTH_EXPIRED meaning: The user's password has expired and needs to be reset. action: Use the Authentication Service to get a new token. - id: SYNTAX meaning: The syntax of the request is incorrect. action: Use the error message to identify the issue and fix the code. - id: SYSTEM meaning: A system error has occurred. action: Contact your Xandr representative. - id: UNAUTH meaning: The user is not authorized to take the requested action. action: Check the error message and confirm the logic in your code. transport_errors: - status: 429 meaning: Too Many Requests - the USER-level rate limit was exceeded. headers: [x-ratelimit-code, retry-after, x-ratelimit-count, x-an-user-id] action: Sleep for the number of seconds in Retry-After, then retry. source: https://learn.microsoft.com/en-us/xandr/digital-platform-api/api-usage-constraints - status: 503 meaning: >- Service Unavailable - the SERVICE-level rate limit was exceeded ("the service is overwhelmed by requests and is limiting new ones"). headers: [x-ratelimit-code, retry-after] action: >- Check for x-ratelimit-code. If present the 503 is throttling, not an outage - sleep Retry-After seconds and retry. If absent, treat it as a genuine service failure. source: https://learn.microsoft.com/en-us/xandr/digital-platform-api/api-usage-constraints agent_notes: - >- The HTTP status alone is not sufficient to classify a failure. A domain error (SYNTAX, INTEGRITY, LIMIT, UNAUTH) arrives inside the response envelope, so an automated client must parse response.error_id on every call rather than branching on status code. - >- NOAUTH is the re-authentication trigger. Do not pre-emptively re-auth: the API allows only 10 successful authentications per 5-minute window. - >- Every response carries dbg_info, including dbg_info.version (the running build) and any warnings[] - the only per-call diagnostic channel, and what support will ask for. cross_links: rate_limits: rate-limits/appnexus-rate-limits.yml conventions: conventions/appnexus-conventions.yml authentication: authentication/appnexus-authentication.yml