---
title: "Get intake results"
method: GET
path: "/v1/intakes/{id}/results"
tags: ["Intakes"]
---

# Get intake results

`GET /v1/intakes/{id}/results`

## Request

- Base URL: `https://api.briefgate.dev`
- URL: `https://api.briefgate.dev/v1/intakes/{id}/results`
- Auth: HTTP bearer

Return the typed results for all items. This is the primary endpoint an agent calls once the intake is `completed`. Set `only_new=true` to receive only items approved since the last call (useful for streaming partial results from a long intake). Set `include_pending=true` to include items not yet submitted.

## Path parameters

- `id` string, required

## Query parameters

- `only_new` boolean
- `include_pending` boolean
- `exclude_secrets` boolean

## Response `200`

Typed results keyed by item key

- object
  - `intake_id` string, required
  - `status` 'draft' | 'sent' | 'in_progress' | 'completed' | 'archived', required
  - `progress` object, required: The client's items only — an item the owner has waived, and an optional item the client has not touched, both leave the denominator, so `percent` reaches 100 exactly when `status` turns `completed`.
    - `submitted` integer, required: Items submitted or approved.
    - `total` integer, required
    - `outstanding` integer, required: Items still pending or needing revision.
    - `percent` integer, required: round(submitted / total * 100); 0 when total is 0.
  - `missing` string[], required: Keys of the required items the client still owes. Empty means nothing is outstanding. Unaffected by only_new and include_pending, so it answers "can I keep building?" on every call rather than only the first. A decision the agent answered itself is not listed — the value came back, and meta.<key>.decided_by says whose it is.
  - `results` object, required: Object keyed by item key. Each value is the typed answer for that item type: a string for text, an array for color_list and file_list, one file object for file and image, and for a secret an object carrying the plaintext value. A secret is released once — see the secrets guide — and requires the secrets:read or admin scope; without it the key appears in `meta` with secret_unavailable instead.
  - `meta` object, required: Per-key detail about the answer above, keyed the same way.

## Other responses

- `401`: Missing or invalid API key
- `403`: Authenticated but not allowed to perform this action
- `404`: Resource not found

---

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