---
title: "Get a phone handoff"
method: GET
path: "/v1/connect/handoffs/{handoffId}"
tags: ["Connect"]
---

# Get a phone handoff

`GET /v1/connect/handoffs/{handoffId}`

## Request

- Base URL: `https://zernio.com/api`
- URL: `https://zernio.com/api/v1/connect/handoffs/{handoffId}`
- Auth: HTTP bearer

Where a connect started with `handoff=true` on `GET /v1/connect/{platform}` stands: `waiting` until the QR code is scanned, `opened` once the phone opened it, then `connected` with the new accounts or `failed` with the error the flow ended on (the same `error` codes as the redirect flow). `expired` when nobody opened the QR code within its 30 minutes. Poll it every 2 to 5 seconds while your QR code is shown, and stop once it is `connected`, `failed` or `expired`. Readable for 60 minutes after it was created, then 404, as is a handoff created by another workspace.

## Path parameters

- `handoffId` string, uuid, required

## Response `200`

The handoff.

- ConnectHandoff
  - `id` string, uuid
  - `status` 'waiting' | 'opened' | 'connected' | 'failed' | 'expired'
  - `platform` string
  - `accounts` object[]: Filled when `status` is `connected`: every account the connect added (several when the user picked several pages, locations or organizations), each checked to be on the profile the connect was started for and written during this handoff. Empty otherwise.
    - `id` string: The Zernio account id.
    - `profileId` string
    - `username` string
  - `error` object, nullable: Set when `status` is `failed`.
    - `code` string: The `error` code the flow ended on, as on a redirect_url. `connect_incomplete` when the phone reported no outcome, `connect_unverified` when it reported an account Zernio could not match to this connect.
    - `message` string, nullable
    - `details` object: The other params the redirect flow appends for that error, such as `is_user_fixable`, `reason`, `dashboard_url`, `request_id` and `stage`. All optional.

## 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`: The handoff expired, does not exist, or belongs to another workspace (code RESOURCE_NOT_FOUND).

## Changes

- **2026-10-23** `f79ee06a0a71`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/zernio/apis/zernio-api/changes/v1/connect/handoffs/:handoffId/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/870c96025f19?raw)
