Guide

Common FCM HTTP v1 Errors and Fixes

Troubleshoot 401, 403, 404, and invalid-argument errors when sending Firebase Cloud Messaging notifications.

Last updated: May 2026

Developer reviewing source code to fix FCM HTTP v1 API errors
Check token expiry, Project ID, and string-only data payload values

401 UNAUTHENTICATED

The OAuth access token is missing, expired, or invalid. Generate a new token with gcloud auth print-access-token. Confirm you are not using the device token in the Authorization header.

Code editor on screen while debugging a failed FCM API response
401 errors almost always mean an expired or wrong OAuth access token

403 PERMISSION_DENIED

The authenticated identity lacks cloudmessaging.messages.create on the project. Add Firebase Cloud Messaging Admin role in IAM, or use an account with Owner/Editor on the Firebase project.

404 NOT_FOUND (invalid token or project)

The device token may be unregistered or belong to a different Firebase project. The Project ID in the URL must match the project that issued the token. Uninstall and reinstall the app to get a new token.

400 INVALID_ARGUMENT

  • Data payload values must be strings, not numbers or objects
  • Malformed JSON in custom data fields
  • Empty or truncated device token
  • Invalid image URL in notification payload

Notification not visible on device

If the app is in foreground, notification messages may not show a system banner unless you handle them in code. Data-only messages never show a tray notification by default. Check battery optimization and notification channel settings on Android.

Continue with our complete testing guide or open the FCM tester to send a notification now.

Ready to test? Open the FCM tester · Browse all guides

Guide photos from Unsplash & Pexels (free license)