---
title: "Save Firebase credentials"
method: PUT
path: "/push/settings/android"
tags: ["Push"]
---

# Save Firebase credentials

`PUT /push/settings/android`

## Request

- Base URL: `https://api.sequenzy.com/api/v1`
- URL: `https://api.sequenzy.com/api/v1/push/settings/android`
- Auth: HTTP bearer

Connects Android push with a Firebase service account key. The file is validated (it must be a service account with a private key; token_uri, when present, must be Google's), encrypted at rest and never returned. Requires the integrations:manage scope and edit access to the workspace.

## Request body

- object
  - `serviceAccount` union, required: The service account JSON file from Firebase project settings > Service accounts, as a JSON object or a string. The account needs the Firebase Cloud Messaging API Admin role.
    - string
    - object

## Response `200`

Credentials saved

- object
  - `success` boolean
  - `push` PushSettings
    - `web` object
      - `enabled` boolean
      - `vapidPublicKey` string, nullable: Public VAPID key browsers subscribe with. null while web push is off.
    - `ios` object
      - `configured` boolean
      - `keyId` string, nullable
      - `teamId` string, nullable
      - `bundleId` string, nullable
      - `environment` 'production' | 'sandbox' | 'null', nullable
      - `lastError` string, nullable: Last credential rejection from APNs, cleared by a successful send or new credentials.
      - `lastErrorAt` string, date-time, nullable
    - `android` object
      - `configured` boolean
      - `projectId` string, nullable
      - `clientEmail` string, nullable
      - `lastError` string, nullable: Last credential rejection from Firebase, cleared by a successful send or new credentials.
      - `lastErrorAt` string, date-time, nullable
    - `defaultIconUrl` string, nullable: Custom web push icon. When null, web pushes use the company logo (brandIconUrl on Get Push Settings).
  - `message` string

## Other responses

- `400`: Validation error
- `401`: Unauthorized
- `403`: Missing scope or insufficient workspace permissions
- `500`: Server error

## Changes

- **2026-10-16** `db3873ca3d4d`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/sequenzy/apis/sequenzy-api/changes/push/settings/android/put.md)

---

[API](https://skmtc.dev/sequenzy/apis/sequenzy-api.md) - [All operations](https://skmtc.dev/sequenzy/apis/sequenzy-api/llms.txt) - [OpenAPI document](https://skmtc.dev/sequenzy/apis/sequenzy-api/revisions/8156dc12d8b4?raw)
