---
title: "Check accounts health"
method: GET
path: "/v1/accounts/health"
tags: ["Accounts"]
---

# Check accounts health

`GET /v1/accounts/health`

Returns health status of all connected accounts including token validity, permissions, and issues needing attention.

## Query parameters

- `profileId` string
- `platform` 'facebook' | 'instagram' | 'linkedin' | 'twitter' | 'tiktok' | 'youtube' | 'threads' | 'pinterest' | 'reddit' | 'bluesky' | 'googlebusiness' | 'telegram' | 'snapchat' | 'discord' | 'slack' | 'whatsapp' | 'shopify' | 'wordpress' | 'linkedinads' | 'metaads' | 'pinterestads' | 'tiktokads' | 'xads' | 'googleads' | 'openaiads'
- `status` 'healthy' | 'warning' | 'error'

## Response `200`

Account health summary

- object
  - `summary` object
    - `total` integer — Total number of accounts
    - `healthy` integer — Number of healthy accounts
    - `warning` integer — Number of accounts with warnings
    - `error` integer — Number of accounts with errors
    - `needsReconnect` integer — Number of accounts needing reconnection
  - `accounts` object[]
    - `accountId` string
    - `platform` string
    - `username` string
    - `displayName` string
    - `profileId` string
    - `status` 'healthy' | 'warning' | 'error'
    - `canPost` boolean
    - `canFetchAnalytics` boolean
    - `tokenValid` boolean
    - `tokenExpiresAt` string, date-time
    - `needsReconnect` boolean — True when the token is expired or revoked, permissions are missing, the account is inactive, or the platform rejected its stored credentials (the same flag the account listing reports as needsReconnection).
    - `issues` string[]
    - `messagingRestriction` object, nullable — Observed from Meta's own error subcodes on our own sends (2534122, 1893063, 2534029), not a live probe. Set on the first refused send and cleared when a later send succeeds, so it lags reality by one send in each direction.
      - `subcode` integer
      - `message` string
      - `firstSeenAt` string, date-time
      - `lastSeenAt` string, date-time

## Other responses

- `400` — Invalid request
- `401` — Unauthorized

## Changes

- **2026-09-26** `e0122970214f` — 9 info
  - added the new enum value `googleads` to the `query` request parameter `platform`
  - added the new enum value `linkedinads` to the `query` request parameter `platform`
  - added the new enum value `metaads` to the `query` request parameter `platform`
  - added the new enum value `openaiads` to the `query` request parameter `platform`
  - …5 more
- **2026-09-25** `2c04683ce694` — 4 info
  - added the optional property `details/adAccountId` to the response with the `400` status
  - added the optional property `details/createdObjects` to the response with the `400` status
  - added the optional property `details/stage` to the response with the `400` status
  - added the optional property `details/unconfirmedWrite` to the response with the `400` status
- **2026-09-16** `3e6ddf2a99ea` — 1 info
  - added the optional property `details/budgetScope` to the response with the `400` status
- **2026-09-15** `0dba7d004d75` — 2 info
  - added the optional property `details/quotaExhausted` to the response with the `400` status
  - added the optional property `details/quotaScope` to the response with the `400` status
- **2026-09-04** `2d81890d21d5` — 1 info
  - added the optional property `accounts/items/messagingRestriction` to the response with the `200` status

[Change history](https://skmtc.dev/zernio/apis/zernio-api/changes/v1/accounts/health/get.md)

---

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