---
title: "Read dispatch status"
method: GET
path: "/api/v1/dispatches/{dispatch_id}"
---

# Read dispatch status

`GET /api/v1/dispatches/{dispatch_id}`

## Request

- Base URL: `https://scope.bid`
- URL: `https://scope.bid/api/v1/dispatches/{dispatch_id}`
- Auth: HTTP bearer

## Path parameters

- `dispatch_id` string, required

## Response `200`

Full dispatch state: the professional, pricing, lifecycle timestamps, UTBMS codes, recent audit events, and dashboard, the matter envelope (the same one scope_get_matter returns), whose data.execution is the matter's execution record.

- object
  - `dispatch_id` string
  - `scope_id` string, nullable
  - `status` string
  - `vendor` object, nullable
    - `vendor_id` string
    - `name` string
    - `slug` string
  - `pricing` object
    - `awarded_amount` number, nullable
  - `utbms` object
    - `task_code` string, nullable
    - `activity_code` string, nullable
  - `lifecycle` object
    - `awarded_at` string, date-time, nullable
    - `completed_at` string, date-time, nullable
    - `confirmed_at` string, date-time, nullable
  - `recent_events` object[]
  - `dashboard` object, nullable: The matter envelope for the dispatch's matter. Null when the dispatch has no matter or the envelope could not be built.
    - `summary` string
    - `data` object
      - `type` 'matter'
      - `title` string
      - `totals` object
      - `rows` object[]
      - `metadata` object: scope_id, display_id, status, dispatch_id, awarded_vendor_id, work_order_status, work_completed, work_accepted, work_disputed, unread_messages.
      - `execution` object, nullable: The matter's execution record, built by the same loader and builder as the firm's matter page, so the two never disagree. Null for a draft, or when the record or its work order could not be read; never a partial guess.
        - `stages` object[]: Every step of the record, in the order the firm's matter page shows them.
          - `stage` 'requested' | 'approval' | 'dispatched' | 'documents' | 'accepted' | 'started' | 'progress' | 'delivered' | 'checked' | 'review' | 'completed' | 'invoiced' | 'paid' | 'exception'
          - `key` string
          - `label` string
          - `state` 'done' | 'current' | 'alert' | 'unknown' | 'reported' | 'superseded': done: recorded. current: in progress. alert: needs attention. unknown: not confirmed, or not checked (read check). reported: the professional's own report, not a fact Scope checked. superseded: it happened and does not hold for the live work order. Used for a CORE records milestone from an earlier work order, or from an earlier award of this work order (its note says which), and for the live run's 'Record checked' and 'Records checked' steps once a file the run now lists as checked was rejected, replaced or withdrawn. The marking is per run: the trail does not say which file a 'Record checked' step checked, so a check of an item the run later checked again with a new file reads by that new file.
          - `at` string, date-time, nullable
          - `note` string, nullable
          - `detail` string, nullable
        - `next` string, nullable: The next expected step, when it is known.
        - `headline` string, nullable: Set when a professional came off the matter and nothing holds it now.
        - `check` object, nullable: Records matters only. A person at Scope worked the CORE records run for the live work order and checked the records available against the firm's request: result checked means that person completed the run's check and every file it checked is still on the matter (not rejected, replaced or withdrawn). Nothing else is checked. Null on every other matter: serves, court runs and every other category carry no check step today (a serve's record states facts only, such as the attempts logged and a declaration signed in Scope, and none of them is a check), and a records matter with no run carries none either.
          - `rule` 'records' | 'null', nullable
          - `result` 'checked' | 'not_yet_checked' | 'not_checked' | 'unreadable': checked: a person at Scope completed the run's check and every file it checked is still on the matter. not_yet_checked: the run is open and the work order is not finished. not_checked: the work order finished with the run open, a file the run checked was rejected, replaced or withdrawn, or the run names no file for an item. unreadable: a read behind it failed.
          - `found` string[]: Each fact Scope read that held.
          - `missing` string[]: Full sentences: what is not there, or what could not be read.
          - `at` string, date-time, nullable
        - `exceptions` object[]: Open exceptions: those that are still the latest word on the matter.
          - `key` string
          - `label` string
          - `note` string, nullable
          - `at` string, date-time, nullable
          - `owner` 'scope' | 'firm' | 'professional': Who acts next. scope only where Scope wrote the event or was alerted by it; never a promise that anyone is working on it.
          - `decision` object, nullable: The decision needed from the firm, when one is.
            - `text` string
            - `href` string, nullable: A path on scope.bid, only where a page exists to make the decision.
            - `link_label` string, nullable
          - `contact` string: How to reach Scope.
        - `incomplete` boolean: A read behind the record failed, so steps may be missing.
    - `render_hints` object
    - `deep_link` string

## Other responses

- `404`: Dispatch not found.
- `429`: Per-tenant rate limit exceeded.

---

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