---
title: "Why nothing is moving"
method: GET
path: "/sequences/{sequence_id}/holds/"
tags: ["sequences"]
---

# Why nothing is moving

`GET /sequences/{sequence_id}/holds/`

## Request

- Base URL: `https://api.getoneprofile.ai` (the document declares no server; this is the origin it was published from)
- URL: `https://api.getoneprofile.ai/sequences/{sequence_id}/holds/`
- Auth: one of:
  - API key in header `X-API-Key`
  - HTTP bearer

Whether anybody on the sequence can move right now, and if not, why: every reason holding live contacts, worst first, with how many each holds and, for a LinkedIn reason, whose account it is. The Overview headline, the Audience banner, the header caption and each step card read this one answer.

## Path parameters

- `sequence_id` string, uuid, required

## Response `200`

Successful Response

- SequenceHoldsReadSchema: Whether anybody on a sequence can move right now, and if not, why.
  - `holds` SequenceHoldReadSchema[], required
    - `action_kind` string, nullable: For a LinkedIn limit: the kind of step it stopped.
    - `contacts` integer, required
    - `last_seen_at` string, date-time, nullable: For an offline browser: its last check-in.
    - `limit` integer, nullable: For a LinkedIn limit: the limit.
    - `long_offline` boolean: For an offline browser: nothing for over a day.
    - `reason` 'linkedin_verify_account' | 'linkedin_disconnected' | 'no_mailbox' | 'no_message' | 'linkedin_browser_offline' | 'email_check' | 'approval' | 'daily_cap' | 'linkedin_daily_limit' | 'linkedin_weekly_limit' | 'window' | 'writing_delayed' | 'queued_to_write', required: One reason a live contact cannot move right now, as the sequence's pages say it. The stored ``HoldReason`` and the task-derived ``WaitingOn`` each cover part of this; the LinkedIn account's own state covers the rest. This is their union, read at request time, so the Overview, the Audience tab, the header and the Sequences list name one reason with one word (the silent-stall plan, approved 2026-09-30). Listed worst first: the order is the order a page picks its one headline or banner by. The first five need a person; ``EMAIL_CHECK`` may (it ends by itself while the deliverability column runs); ``APPROVAL`` needs one but has its own row and banner already; the rest end on their own.
    - `sender_name` string, nullable: That sender's first name, else their name.
    - `sender_profile_id` string, uuid, nullable: For a LinkedIn reason: the sender whose account it is.
    - `until` string, date-time, nullable: When the reason ends on its own: the window's next opening, a daily limit's reset, the AI writer's next try. Null where only a person ends it.
    - `used` integer, nullable: For a LinkedIn limit: how many used.
  - `moving` integer, required: Live contacts nothing holds: due now, sending, in line on a working browser, or waiting out an ordinary step delay. Zero with holds listed means nobody can move.
  - `steps` StepHoldReadSchema[], required
    - `contacts` integer, required
    - `reason` 'linkedin_verify_account' | 'linkedin_disconnected' | 'no_mailbox' | 'no_message' | 'linkedin_browser_offline' | 'email_check' | 'approval' | 'daily_cap' | 'linkedin_daily_limit' | 'linkedin_weekly_limit' | 'window' | 'writing_delayed' | 'queued_to_write', required: One reason a live contact cannot move right now, as the sequence's pages say it. The stored ``HoldReason`` and the task-derived ``WaitingOn`` each cover part of this; the LinkedIn account's own state covers the rest. This is their union, read at request time, so the Overview, the Audience tab, the header and the Sequences list name one reason with one word (the silent-stall plan, approved 2026-09-30). Listed worst first: the order is the order a page picks its one headline or banner by. The first five need a person; ``EMAIL_CHECK`` may (it ends by itself while the deliverability column runs); ``APPROVAL`` needs one but has its own row and banner already; the rest end on their own.
    - `step_id` string, uuid, required
  - `window_opens_at` string, date-time, nullable, required: The sending window's next opening while it is shut; null while open.

## Other responses

- `401`: Unauthorized
- `403`: Forbidden
- `404`: Not found.
- `422`: Invalid request made to the API.
- `500`: Internal server error.
- `502`: Bad gateway error.
- `503`: Service unavailable.

---

[API](https://skmtc.dev/getoneprofile/apis/api-reference-oneprofile.md) · [All operations](https://skmtc.dev/getoneprofile/apis/api-reference-oneprofile/llms.txt) · [OpenAPI document](https://skmtc.dev/getoneprofile/apis/api-reference-oneprofile/revisions/4a6bd71e3f02?raw)
