---
title: "Retrieve a record's status"
method: GET
path: "/v1/sync/records/{record_id}"
tags: ["Records"]
---

# Retrieve a record's status

`GET /v1/sync/records/{record_id}`

## Request

- Base URL: `https://api.whalesync.com`
- URL: `https://api.whalesync.com/v1/sync/records/{record_id}`
- Auth: HTTP bearer

Everything known about one record's sync state: open issues, a pending delete awaiting review, operations queued right now, per-side flags and links, and its most recent operations. `record_id` is a `rec_` id, or the record's id in the connected app — then `sync` is required, and `table` picks a table when the same id exists in more than one.

## Path parameters

- `record_id` string, required

## Query parameters

- `sync` string
- `table` string

## Response `200`

The record's status.

- Record
  - `id` string, required
  - `sync_id` string, required
  - `left` RecordSide, required
    - `remote_id` string, nullable, required: The record id in the connected app.
    - `name` string, nullable, required: A display name for the record, if one is known.
    - `url` string, uri, nullable, required: Opens the record in the connected app.
    - `table` RecordTable, required
      - `id` string, required
      - `remote_id` string, required: The table id in the connector, stable across renames.
      - `name` string, required
    - `is_deleted` boolean, required: Whether this copy of the record has been deleted.
    - `is_filtered` boolean, required: Whether a sync filter currently excludes this record, so it isn't synced.
    - `is_sync_disabled` boolean, required: Whether syncing is turned off for this record via a sync-enabled field.
    - `queued_operations` array[], nullable, required: Operations waiting in the queue for this record. An empty list means nothing is queued; null means the queue could not be consulted just now, not that it is empty.
      - RecordQueuedOperation[], nullable
        - `type` 'push' | 'refetch' | 'verify_delete' | 'other', required: `push` = a write to the connected app; `refetch` = a re-read of the record from the app; `verify_delete` = a check that a record detected as missing is really gone.
        - `position` number, required: Position in the queue, lowest first.
  - `right` RecordSide, required
    - `remote_id` string, nullable, required: The record id in the connected app.
    - `name` string, nullable, required: A display name for the record, if one is known.
    - `url` string, uri, nullable, required: Opens the record in the connected app.
    - `table` RecordTable, required
      - `id` string, required
      - `remote_id` string, required: The table id in the connector, stable across renames.
      - `name` string, required
    - `is_deleted` boolean, required: Whether this copy of the record has been deleted.
    - `is_filtered` boolean, required: Whether a sync filter currently excludes this record, so it isn't synced.
    - `is_sync_disabled` boolean, required: Whether syncing is turned off for this record via a sync-enabled field.
    - `queued_operations` array[], nullable, required: Operations waiting in the queue for this record. An empty list means nothing is queued; null means the queue could not be consulted just now, not that it is empty.
      - RecordQueuedOperation[], nullable
        - `type` 'push' | 'refetch' | 'verify_delete' | 'other', required: `push` = a write to the connected app; `refetch` = a re-read of the record from the app; `verify_delete` = a check that a record detected as missing is really gone.
        - `position` number, required: Position in the queue, lowest first.
  - `issues` Issue[], required: Open issues attached to this record. An issue here usually blocks the record from syncing.
    - `id` string, required
    - `sync_id` string, nullable, required
    - `type` 'connection' | 'record' | 'webhook' | 'sync_preview' | 'other', required
    - `code` string, required: A generic category code.
    - `message` string, nullable, required
    - `connector` string, nullable, required
    - `remediation` IssueRemediation, required
      - `explanation` string, required: What the issue means. May contain Markdown.
      - `suggested_action` string, nullable, required: The concrete step to take, if there is one. May contain Markdown.
      - `links` IssueRemediationLink[], required
        - `name` string, required
        - `url` string, uri, required
    - `table` IssueTable, required
      - `id` string, required
      - `remote_id` string, required: The table id in the connector, stable across renames.
      - `name` string, required
    - `record` IssueRecord, required
      - `id` string, required: The record's status document id.
      - `remote_id` string, nullable, required: The record id in the connected app.
      - `name` string, nullable, required: A display name for the record, if one is known.
      - `url` string, uri, nullable, required: Opens the record in the connected app.
    - `fields` IssueField[], required: The fields the connected app rejected, when it said which ones. Empty when it did not, or for issues that are not about one record.
      - `id` string, required
      - `remote_id` string, required: The field id in the connector, stable across renames.
      - `name` string, required
    - `occurrence_count` number, required: How many times this issue has recurred.
    - `first_seen_at` string, date-time, required
    - `last_seen_at` string, date-time, required
    - `app_url` string, uri, required: The issue in the Whalesync app, for a person looking closer — nothing here needs their attention.
  - `pending_delete` RecordPendingDelete, required
    - `state` 'awaiting_review' | 'ignored', required: `awaiting_review` = waiting on a person; `ignored` = a person chose to keep the record, so the delete is dormant and stops being raised. Neither is resolved.
    - `missing_side` 'left' | 'right', required: The side whose record went missing.
    - `delete_from_side` 'left' | 'right', required: The side the record will be deleted from if the delete is approved.
    - `pending_since` string, date-time, required: When the record was first detected as missing.
    - `ignored_at` string, date-time, nullable, required: When a person chose to ignore this delete, or null while it is still awaiting review.
    - `review_url` string, uri, required: The page where a person approves or ignores this delete. Relay it to them — the API deliberately has no endpoint that decides a delete.
  - `pending_delete_events` RecordPendingDeleteEvent[], required: Pending-delete history, oldest first.
    - `event` 'detected' | 'approved' | 'ignored', required
    - `side` 'left' | 'right', required: The side whose record went missing.
    - `occurred_at` string, date-time, required
  - `operations` OperationSummary[], required: The most recent operations on this record, both sides merged, newest first.
    - `id` string, required
    - `occurred_at` string, date-time, required
    - `sync_id` string, required
    - `action` 'created' | 'updated' | 'deleted', required
    - `trigger` 'push' | 'poll', required: `push` = written by Whalesync; `poll` = detected.
    - `table` OperationTable, required
      - `id` string, required
      - `name` string, required
    - `record` OperationRecord, required
      - `remote_id` string, required
      - `name` string, nullable, required: A display name for the record, if one is known.
      - `url` string, uri, nullable, required
    - `app_url` string, uri, required: The operation in the Whalesync app, for a person looking closer — nothing here needs their attention.
  - `operations_has_more` boolean, required: Whether older operations exist beyond the ones embedded here.
  - `operations_url` string, uri, required: The full paginated operation history for this record.
  - `app_url` string, uri, nullable, required: The record's status page in the Whalesync app, for a person looking closer — nothing here needs their attention.

## Other responses

- `400`: The id matches records in more than one table (`ambiguous_record`), or `sync` is missing.
- `401`: The API key is missing, invalid, or revoked (`missing_api_key`, `invalid_api_key`). Carries a `required_action` linking a person to key creation, naming the smallest scope this endpoint needs.
- `403`: The key's scope does not allow this call (`insufficient_scope` on a mutation with a `read` key).
- `404`: No such record on this account.
- `429`: Rate limit exceeded. Wait for `Retry-After` seconds.

---

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