---
title: "Retry Smartadvocate Intake Draft Steps"
method: POST
path: "/smartadvocate/intake-draft/{smartadvocate_intake_draft_id}/retry-steps"
tags: ["SmartAdvocate"]
---

# Retry Smartadvocate Intake Draft Steps

`POST /smartadvocate/intake-draft/{smartadvocate_intake_draft_id}/retry-steps`

## 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}/retry-steps`
- Auth: none declared

Re-run promote steps against an already-created case.

For a promoted draft whose case exists but where an enrichment step failed
(a rejected id, a transient SA error). Contact and case creation are never
re-run — the promoter sees the ids already on the draft and reports them as
already created. Steps not re-run keep their previous outcome.

## Path parameters

- `smartadvocate_intake_draft_id` string, uuid, required

## Request body

- SmartAdvocateIntakeRetryStepsRequest: Re-run promote steps against an already-created case.
  - `step_keys` string[], nullable: Steps to re-run; omit to re-run every step that failed on the last attempt
  - `enrichment` object, nullable: Corrected enrichment to use for the retry; omit to reuse the draft's stored enrichment

## Response `200`

Successful Response

- SmartAdvocateIntakeDraftResponse: LLM-drafted SmartAdvocate intake (contact + case) derived from a call transcript.
  - `smartadvocate_intake_draft_id` string, uuid, required
  - `call_id` string, uuid, required
  - `first_name` string, nullable
  - `last_name` string, nullable
  - `email` string, nullable
  - `phone_number` string, nullable
  - `date_of_birth` string, date, nullable
  - `gender` string, nullable
  - `address_line1` string, nullable
  - `city` string, nullable
  - `state` string, nullable
  - `zip_code` string, nullable
  - `case_summary` string, nullable
  - `incident_date` string, date, nullable
  - `incident_state` string, nullable
  - `case_type_hint` string, nullable
  - `matched_sa_contact_id` integer, nullable: Existing SA contact matched by the caller's phone number; promotion attaches the case to it instead of creating a new contact
  - `matched_sa_contact_name` string, nullable
  - `ambiguous_contact_match` boolean: Multiple person contacts share the caller's phone number; the match shown is a best guess and needs manual review
  - `duplicate_case_numbers` string[]: Existing case numbers on the matched contact with the same incident date (likely repeat caller about the same accident)
  - `existing_case_candidates` object[]: Cases staff opened recently for a caller like this one, found live in SA at promote time [{sa_case_id, case_number, case_name, created_date, phone_matched, name_score, plaintiff_names}]
  - `existing_case_decision` string, nullable: How the merge target was chosen: phone_and_name | llm | none | manual | error (error = held for a human, nothing written)
  - `existing_case_reason` string, nullable
  - `merged_into_existing` boolean: The intake was merged into an existing case (sa_case_id) instead of creating one
  - `status` string
  - `sa_contact_id` integer, nullable
  - `sa_case_id` integer, nullable
  - `sa_case_number` string, nullable
  - `was_dry_run` boolean, nullable
  - `auto_promoted` boolean
  - `enrichment` object, nullable: Rich extraction: plaintiff role, injuries, treatment, medical providers, insurance, vehicle, referral source and tags (see DraftSmartAdvocateEnrichment)
  - `promote_steps` object[], nullable: Per-step promote outcomes [{key, label, status: ok|skipped|failed, detail, sa_id}]; failed steps can be re-run via the retry-steps endpoint
  - `additional_plaintiffs` object[], nullable: Others the call takes on as plaintiffs on the same case (see DraftAdditionalPlaintiff), each with its push outcome under 'push' once pushed; null when the firm doesn't add them
  - `created_at` string, date-time, required
  - `updated_at` string, date-time, nullable

## Other responses

- `422`: Validation Error

## Changes

- **2026-11-02** `de90a8dcbc07`: 1 info
  - added the optional property `additional_plaintiffs` to the response with the `200` status
- **2026-09-28** `cb38229a1f17`: 4 info
  - 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
  - added the optional property `existing_case_reason` to the response with the `200` status
  - added the optional property `merged_into_existing` to the response with the `200` status
- **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/retry-steps/post.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)
