# Firebase Cloud Messaging (slim) > Google's push messaging service for Android, Apple and web apps. A server sends notification or data messages to devices, topics or conditions through the HTTP v1 API or the Firebase Admin SDKs. - Full: https://www.anchorterminal.com/tools/firebase-cloud-messaging.md (~8,550 tokens) · this version ~1,530 tokens · JSON https://www.anchorterminal.com/tools/firebase-cloud-messaging.json · canonical https://www.anchorterminal.com/tools/firebase-cloud-messaging - Index: https://www.anchorterminal.com/llms.txt · API: https://www.anchorterminal.com/api/v1/index.json · Updated: 2026-10-09 **B · 69.8/100 · rank #162 of 842 · #4 in Notifications · not agent-ready · confidence medium** Assessment: Sending is free at any volume, with a published quota of 600,000 messages a minute per project and documented 429 handling. FCM is push transport only. It has no in-app feed, email, user preferences or digests, the send call takes no idempotency key, and a person has to create the Firebase project in a browser. ## Facts - Kind: HTTP API · vendor: Google · category: Notifications · legal entity: Google LLC · provenance 94/100 - Endpoint: `https://fcm.googleapis.com` (HTTP) - Auth: OAuth · pricing: Free · x402: no · licence: Proprietary service under the Google APIs Terms of Service. The Firebase Admin SDKs are Apache-2.0 - Probe metrics: not measured yet (probes haven't run) - API: HTTP v1 at `https://fcm.googleapis.com/v1/projects//messages:send`, plus five topic subscription methods. Discovery revision 20261006 - Targets: A Firebase installation ID or registration token, a topic, or a condition over topics. Device groups are deprecated and stop on 29 September 2027 - Platforms: Android, Apple platforms through APNs, and web push - Payload: Up to 4,096 bytes, or 2,048 bytes for a topic message - Quota: 600,000 messages a minute per project. 240 a minute and 5,000 an hour to one Android device. 3,000 topic subscription changes a second. 1,000 concurrent fanouts - Retries: 429 with `retry-after` (60 seconds if absent). Exponential backoff with jitter on 500 and 503. No idempotency key - Credentials: OAuth 2.0 token from a service account, scope `firebase.messaging`, IAM permission `cloudmessaging.messages.create` - Admin SDKs: Node.js, Python, Java, Go and .NET. Up to 500 messages or targets per SDK call, sent as separate requests - Delivery data: Aggregate Data API for Android (`v1beta1`) and an optional BigQuery export of per-message events - Message storage: Up to four weeks for undelivered messages, or the `ttl` given - Price: No charge on the Spark and Blaze plans - Scores: Reliability 66, Performance pending, Schema & documentation 86, Agent ergonomics 70, Security & auth 68, Payments & pricing 40, Task success pending, Maintenance & community 83, Transparency & trust 81 · total over the 7 assessed categories - Why: Reliability, Hosted reading. · Schema & documentation, A public Discovery document at `fcm.googleapis.com/$discovery/rest?version=v1`, revision 20261006, with 6 methods and 16 schemas (25). · Agent ergonomics, API reading, graded on the HTTP v1 API. · Security & auth, OAuth 2.0 access tokens from a service account or Application Default Credentials, a `firebase.messaging` scope, and IAM permissions per act… · Payments & pricing, No x402, MPP or L402 (0). · Maintenance & community, Read as a closed service with official SDKs. · Transparency & trust, Closed service under the Google APIs Terms of Service and the Firebase Data Processing and Security Terms, with Apache-2.0 Admin SDKs (15 of… - Sources: 35, open questions: 7, both in the full twin - Capabilities: notify.push - JSON: https://www.anchorterminal.com/api/v1/tools/firebase-cloud-messaging.json - Verify (for the vendor): the badge `https://www.anchorterminal.com/badges/firebase-cloud-messaging.svg` or a link to https://www.anchorterminal.com/tools/firebase-cloud-messaging from a page on google.com or one of its subdomains, or the README of github.com/firebase/firebase-admin-node, then `POST https://www.anchorterminal.com/api/v1/verify` `{"slug", "url"}` or `verify_listing` at /mcp; re-checked weekly, no effect on the grade. Snippets in the full twin. ## Before you call it 1. Mint an access token from a service account with the scope `https://www.googleapis.com/auth/firebase.messaging`, then POST to `https://fcm.googleapis.com/v1/projects//messages:send` 2. Set `validate_only` to true to test a message or a registration without sending it 3. On 429 wait for the `retry-after` header, or 60 seconds if it is absent. Retry 500 and 503 with exponential backoff and jitter, and never retry 400, 401, 403 or 404 4. Drop a registration when the error is `UNREGISTERED` (404). Keep your own record of sends, because a retry after a timeout can produce a duplicate 5. Target `fid` in new code. The `token` field is marked deprecated in the API, and device groups stop working after 29 September 2027 ## Connect ```bash npm install firebase-admin # or: pip install firebase-admin ``` ```bash curl -X POST "https://fcm.googleapis.com/v1/projects/$FIREBASE_PROJECT_ID/messages:send" \ -H "Authorization: Bearer $ACCESS_TOKEN" -H "Content-Type: application/json" \ -d '{"message":{"topic":"news","notification":{"title":"Build finished","body":"All tests passed"}}}' ``` ```bash claude mcp add firebase npx -- -y firebase-tools@latest mcp ``` Full config and headless snippets are in the full page. Through letme (picks today, calling later): https://letme.dev/firebase-cloud-messaging ## Similar tools | Tool | Grade | Score | Shared capabilities | Slim | | --- | --- | --- | --- | --- | | Ably | BB | 75 | notify.push | https://www.anchorterminal.com/tools/ably.min.md | | Customer.io | BB | 74.5 | notify.push | https://www.anchorterminal.com/tools/customer-io.min.md | | Amazon SNS | BB | 72.8 | notify.push | https://www.anchorterminal.com/tools/amazon-sns.min.md | | SuprSend | BB | 72.6 | notify.push | https://www.anchorterminal.com/tools/suprsend.min.md | | Courier | BB | 70.5 | notify.push | https://www.anchorterminal.com/tools/courier.min.md | ## Panel reviews (0, desk reviews from public material, no calls made)