Error catalog

Every API errCode, its HTTP status and what it means.

Every API response has the shape { errCode, errMsg, data, meta }. errCode: 0 means success; any other value is an error and errMsg explains it (in Spanish). Code against the errCode (it is stable), not against the text or only the HTTP status.

For validation errors, errors tells you the field and the reason, for example {"errors": {"content": ["blocked"]}}.

Authentication and access

errCode HTTP Name Meaning
1001 401 Unauthenticated Authentication required
1002 401 InvalidToken Invalid token
1003 401 KeyRevoked The API key was revoked or expired
1004 403 IpNotAllowed Access not allowed from this IP address
1005 403 InsufficientScope You don't have permission for this action
1006 403 PublicKeyOnSecretEndpoint This endpoint requires a secret key (sk_); the public key (pk_) only registers devices
1101 401 TokenExpired The session expired
1102 403 MfaRequired Two-factor authentication required
1103 401 InvalidCredentials Incorrect email or password
1104 403 EmailNotVerified You must verify your email to continue
1105 403 AccountLocked Account temporarily locked after failed attempts
1106 401 InvalidMfaCode Invalid verification code
1107 409 IdentityLinkRequired An account with that email already exists: sign in with your current method and link the provider from Security
1108 422 CaptchaInvalid Complete the security check (captcha)
1109 401 LinkExpired The link or code expired or was already used
1110 422 WeakPassword The password doesn't meet the security policy
1111 403 ReauthRequired You must authenticate again to continue
1112 403 CompanyRequiresMfa This company requires two-step verification: enable it in Security to continue
1113 409 LastLoginMethod You can't remove your last sign-in method
1114 401 IdentityTokenInvalid Sign-in with the provider couldn't be validated
1115 401 PasskeyInvalid The passkey couldn't be verified: try again or use another method

Validation

errCode HTTP Name Meaning
2001 422 FieldRequired A required field is missing
2002 422 InvalidFormat Invalid data format
2003 413 PayloadTooLarge The request is too large
2004 422 PlatformNotSupported Unsupported platform
2005 422 TokenProviderMismatch The token format doesn't match the given provider or platform
2006 422 ExpoTokenNotSupported Expo tokens (ExponentPushToken) aren't supported: use the native token with getDevicePushTokenAsync()
2008 422 PairingCodeInvalid Invalid or expired pairing code
2011 422 ScheduleInvalid Invalid schedule
2012 422 TimezoneInvalid Invalid time zone

Limits and plan

errCode HTTP Name Meaning
3001 429 QuotaExceeded Your plan's monthly send quota is used up
3002 403 DeviceLimitReached You reached your plan's device limit
3003 429 RateLimited Too many requests, try again later
3004 403 FeatureNotInPlan Your plan doesn't include this feature
3005 403 TenantSuspended The company is suspended
3006 429 TestLimitReached You reached this app's daily limit of test sends
3008 422 CouponInvalid Invalid or expired coupon, or not applicable to this plan
3009 409 DowngradeNotAllowed Your current usage doesn't fit in that plan
3010 409 ExemptionLocked The exempt subscription doesn't allow this action: change the exemption
3011 403 PlanLimitReached You reached a limit of your plan
3012 402 SubscriptionInactive The company's subscription isn't active: choose a plan to keep sending

Resources

errCode HTTP Name Meaning
4001 404 AppNotFound App not found
4002 404 DeviceNotFound Device not found
4003 404 NotificationNotFound Notification not found
4004 409 NotCancellable The notification can no longer be cancelled
4005 409 IdempotencyConflict The Idempotency-Key was already used with different content
4006 404 CompanyNotFound Company not found or no access
4009 409 Conflict The operation conflicts with the current state
4098 405 MethodNotAllowed Method not allowed
4099 404 NotFound Resource not found

Push credentials

errCode HTTP Name Meaning
5001 422 CredentialMissing The app has no credential for this platform
5002 422 CredentialInvalid The credential isn't valid
5003 422 CertificateExpired The certificate expired
5004 422 BundleIdMismatch The bundle ID doesn't match the app's
5005 422 P12PasswordWrong The .p12 password is incorrect

Platform

errCode HTTP Name Meaning
9001 500 Internal Internal server error
9002 503 Unavailable Service unavailable