Status codes and reason strings returned by APNs and shown in Pushwoosh delivery reports for iOS. Last checked against Apple's current documentation in July 2026.
| Status Code | Error String | Description |
| 200 | Success | Success. |
| 400 | BadCollapseId | The collapse identifier exceeds the maximum allowed size. |
| 400 | BadDeviceToken | The specified device token is invalid. Verify that the request contains a valid token and that the token matches the environment. |
| 400 | BadExpirationDate | The apns-expiration value is invalid. |
| 400 | BadMessageId | The apns-id value is invalid. |
| 400 | BadPriority | The apns-priority value is invalid. |
| 400 | BadTopic | The apns-topic value is invalid. |
| 400 | DeviceTokenNotForTopic | The device token doesn't match the specified topic. |
| 400 | DuplicateHeaders | One or more headers are repeated. |
| 400 | IdleTimeout | Idle timeout. |
| 400 | InvalidPushType | The apns-push-type value is invalid. |
| 400 | MissingDeviceToken | The device token isn't specified in the request :path. Verify that the :path header contains the device token. |
| 400 | MissingTopic | The apns-topic header of the request isn't specified and is required. It is mandatory when the client is connected using a certificate that supports multiple topics. |
| 400 | PayloadEmpty | The message payload is empty. |
| 400 | TopicDisallowed | Pushing to this topic is not allowed. |
| 403 | BadCertificate | The certificate is invalid. |
| 403 | BadCertificateEnvironment | The client certificate doesn't match the environment. |
| 403 | ExpiredProviderToken | The provider token is stale and a new token should be generated. |
| 403 | Forbidden | The specified action is not allowed. |
| 403 | InvalidProviderToken | The provider token is not valid, or the token signature can't be verified. |
| 403 | MissingProviderToken | No provider certificate was used to connect to APNs, and the authorization header is missing or no provider token is specified. |
| 403 | UnrelatedKeyIdInToken | The key ID in the provider token isn't related to the key ID of the token used in the first push of this connection. To use this token, open a new connection. |
| 403 | BadEnvironmentKeyIdInToken | The key ID in the provider token doesn't match the environment. |
| 404 | BadPath | The request contained an invalid :path value. |
| 405 | MethodNotAllowed | The specified :method value isn't POST. |
| 410 | ExpiredToken | The device token has expired. |
| 410 | Unregistered | The device token is inactive for the specified topic. There is no need to send further pushes to the same device token unless your application retrieves the same device token again. |
| 413 | PayloadTooLarge | The message payload is too large. See the APNs payload size limits in Apple's documentation. |
| 429 | TooManyProviderTokenUpdates | The provider's authentication token is being updated too often. Update the authentication token no more than once every 20 minutes. |
| 429 | TooManyRequests | Too many requests were made consecutively to the same device token. |
| 500 | InternalServerError | An internal server error occurred. |
| 503 | ServiceUnavailable | The service is unavailable. |
| 503 | Shutdown | The APNs server is shutting down. |
For more information, refer to Apple's Handling notification responses from APNs.
Comments
0 comments
Please sign in to leave a comment.