---
title: "Check whether an Instagram user follows the account"
method: GET
path: "/v1/accounts/{accountId}/follow-status/{userId}"
tags: ["Accounts"]
---

# Check whether an Instagram user follows the account

`GET /v1/accounts/{accountId}/follow-status/{userId}`

## Request

- Base URL: `https://zernio.com/api`
- URL: `https://zernio.com/api/v1/accounts/{accountId}/follow-status/{userId}`
- Auth: HTTP bearer

Resolves the follow relationship between an Instagram user and the connected
account, plus their public profile counters.

`userId` is the Instagram-scoped id (IGSID) Meta gives you on a webhook:
`sender.id` on `message.received`, `comment.author.id` on `comment.received`.

**Meta only answers for people who have MESSAGED the account.** Commenting grants
no consent, so a commenter who has never DMed you is unresolvable - that is a
platform rule, not a limitation of this endpoint. When it cannot be resolved the
response is still `200` with `isFollower: null` and an `unavailableReason`, because
"unknown" is a normal state to branch on:

  * `consent_required` - the user has never messaged this account.
  * `dm_access_disabled` - the account owner turned off Instagram Direct API access.
  * `not_messageable` - the id is not a messaging-scoped id.
  * `error` - a transient Graph API failure.

To gate a comment automation on this, use the automation's `audience` rules instead
of calling this per comment - they run the same lookup only on comments that
actually match a keyword, and can ask the commenter to confirm with one tap.

Answers are cached briefly per (account, user). Pass `refresh=true` right after
asking someone to follow, so a follow from a moment ago is visible.

## Path parameters

- `accountId` string, required
- `userId` string, required

## Query parameters

- `refresh` boolean

## Response `200`

Follow status (fields are null when Meta would not resolve it)

- object
  - `userId` string, required
  - `accountId` string, required
  - `isFollower` boolean, nullable, required: The user follows this account. Null = unknown, never "no".
  - `isFollowedByAccount` boolean, nullable: This account follows the user.
  - `followerCount` integer, nullable
  - `isVerified` boolean, nullable
  - `username` string, nullable
  - `name` string, nullable
  - `unavailableReason` 'consent_required' | 'dm_access_disabled' | 'not_messageable' | 'error' | 'null', nullable: Why the follow relationship could not be resolved. Null when it was.

## Other responses

- `400`: Invalid request
- `401`: Missing or invalid API key. `code` is `missing_credentials` when no Authorization header was sent and `invalid_credentials` when the key is unknown, revoked or expired.
- `404`: Resource not found

## Changes

- **2026-10-06** `f8c8f34fb41a`: 2 warning
  - added the new `account` enum value to the `details/budgetScope` response property for the response status `400`
  - added the new `account` enum value to the `details/budgetScope` response property for the response status `401`
- **2026-10-02** `d556591af3f6`: 8 info
  - added the optional property `code` to the response with the `401` status
  - added the optional property `details` to the response with the `401` status
  - added the optional property `docUrl` to the response with the `400` status
  - added the optional property `docUrl` to the response with the `401` status
  - …4 more
- **2026-09-30** `16a7b9d5373e`: 1 info
  - removed the `platform` enum value from the `details/budgetScope` response property for the response status `400`
- **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

[Operation history](https://skmtc.dev/zernio/apis/zernio-api/changes/v1/accounts/:accountId/follow-status/:userId/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/4e74db179e73?raw)
