---
title: "Preview Smartadvocate Intake Draft"
method: GET
path: "/smartadvocate/intake-draft/{smartadvocate_intake_draft_id}/preview"
tags: ["SmartAdvocate"]
---

# Preview Smartadvocate Intake Draft

`GET /smartadvocate/intake-draft/{smartadvocate_intake_draft_id}/preview`

## Request

- Base URL: `https://api.openintake.ai` (the document declares no server; this is the origin it was published from)
- URL: `https://api.openintake.ai/smartadvocate/intake-draft/{smartadvocate_intake_draft_id}/preview`
- Auth: none declared

Plan a promote without writing anything to SmartAdvocate.

Resolves every picklist value, builds every request body and returns the
step plan plus the configured defaults BY NAME. Writes nothing, so unlike
promote it is open to non-developers and needs no intake push mode. It does
read SA live for cases staff opened recently for this caller, and may ask
an LLM which one is theirs: merge_target is the case a promote would merge
into. merge_into_case_id / force_new_case preview the dialog's choice
instead of the automatic one.

## Path parameters

- `smartadvocate_intake_draft_id` string, uuid, required

## Query parameters

- `case_group_id` integer, nullable
- `case_type_id` integer, nullable
- `merge_into_case_id` integer, nullable
- `force_new_case` boolean

## Response `200`

Successful Response

- SmartAdvocateIntakePreviewResponse: Dry plan of a promote: what would be written, resolved, and skipped. Produced with zero writes to SmartAdvocate, so it is available even when intake push is in dry-run mode.
  - `plan_only` boolean
  - `steps` SmartAdvocateIntakePromoteStep[]
    - `key` string, required
    - `label` string, required
    - `status` 'ok' | 'skipped' | 'failed', required
    - `detail` string, nullable
    - `sa_id` integer, nullable
    - `error` string, nullable: The exception behind a failure; for developers, never shown to the firm
    - `written` object[]: What the step sent to SmartAdvocate, as {label, value} rows
  - `resolved` SmartAdvocateIntakeResolvedValue[]
    - `field` string, required: Path of the field in the enrichment, e.g. 'injuries[0].body_part'
    - `kind` string, required: Lookup registry kind the value was resolved against
    - `text` string, nullable: The text heard on the call, when the id came from a text match
    - `sa_id` integer, nullable: Resolved SA id; null means unresolved and the value will not be written
    - `description` string, nullable: The firm's own label for the resolved option
    - `method` string, required: How it resolved: model | exact | normalized | fuzzy | ambiguous | no_match
  - `unresolved` SmartAdvocateIntakeResolvedValue[]: Values heard on the call that could not be mapped to one of the firm's picklist options
    - `field` string, required: Path of the field in the enrichment, e.g. 'injuries[0].body_part'
    - `kind` string, required: Lookup registry kind the value was resolved against
    - `text` string, nullable: The text heard on the call, when the id came from a text match
    - `sa_id` integer, nullable: Resolved SA id; null means unresolved and the value will not be written
    - `description` string, nullable: The firm's own label for the resolved option
    - `method` string, required: How it resolved: model | exact | normalized | fuzzy | ambiguous | no_match
  - `payloads` object: The raw SmartAdvocate request bodies that would be sent (developer view)
  - `case_group` SmartAdvocatePicklistItem: One SmartAdvocate picklist entry (case group, case type, ...).
    - `id` integer, required
    - `description` string, nullable
  - `case_type` SmartAdvocatePicklistItem: One SmartAdvocate picklist entry (case group, case type, ...).
    - `id` integer, required
    - `description` string, nullable
  - `office` SmartAdvocatePicklistItem: One SmartAdvocate picklist entry (case group, case type, ...).
    - `id` integer, required
    - `description` string, nullable
  - `case_status` SmartAdvocatePicklistItem: One SmartAdvocate picklist entry (case group, case type, ...).
    - `id` integer, required
    - `description` string, nullable
  - `incident_state` SmartAdvocatePicklistItem: One SmartAdvocate picklist entry (case group, case type, ...).
    - `id` integer, required
    - `description` string, nullable
  - `defendant_contact_name` string, nullable
  - `matched_sa_contact_id` integer, nullable: Existing contact the case would attach to instead of creating a new one
  - `duplicate_case_numbers` string[]
  - `intake_date` string, nullable: Intake date the case would carry, in the firm's local calendar
  - `blocked_reason` string, nullable: Why a promote would be refused right now (duplicate case, missing case group/type)
  - `merge_target` object, nullable: The recently opened case this promote would merge into {sa_case_id, case_number, case_name, created_date}; null = a new case is created
  - `existing_case_candidates` object[]: Every recently opened case that could be this caller's, for the dialog's merge choice
  - `existing_case_decision` string, nullable
  - `existing_case_reason` string, nullable
  - `identity_review_reason` string, nullable: Why staff must confirm who the plaintiff is (ambiguous or conflicting contact match); promote with confirm_identity

## Other responses

- `422`: Validation Error

## Changes

- **2026-10-20** `0b14aa0ec87c`: 1 info
  - added the optional property `identity_review_reason` to the response with the `200` status
- **2026-10-19** `008515855245`: 1 info
  - added the optional property `steps/items/error` to the response with the `200` status
- **2026-09-30** `912982f625cd`: 1 info
  - added the optional property `steps/items/written` to the response with the `200` status
- **2026-09-28** `cb38229a1f17`: 6 info
  - added the new optional `query` request parameter `force_new_case`
  - added the new optional `query` request parameter `merge_into_case_id`
  - added the optional property `existing_case_candidates` to the response with the `200` status
  - added the optional property `existing_case_decision` to the response with the `200` status
  - …2 more
- **2026-09-11** `546117b4e7b4`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/openintake/apis/openintake-api/changes/smartadvocate/intake-draft/:smartadvocate_intake_draft_id/preview/get.md)

---

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