SmartAdvocate

Promote Smartadvocate Intake Draft

Changed on

Promote a draft intake: create the contact and case in SmartAdvocate.

Runs the shared sixteen-step promoter — the same one the Celery auto-push path uses — with the (user-edited) fields from the request. Dedup is re-checked at promote time since the draft's snapshot may be stale:

  • If the caller's phone matches an existing synced SA contact, only the case is created, attached via PlaintiffContactID.
  • If the matched contact already has a case with the same incident date, the promote is refused (409) unless override_duplicates is set.
  • If staff opened a case for this caller shortly before or after the call (read live from SA), the intake merges into it: nothing the firm entered is overwritten and our facts are appended. merge_into_case_id or force_new_case overrides that choice; an undecidable match is 409.

Only contact and case creation are fatal. Every enrichment step (plaintiff role, injuries, insurance, providers, vehicle, tags, status, intake fields, call log) records its own outcome in the response's promote_steps, so a case is never lost to one rejected id — the failed steps can be re-run via retry-steps.

post/smartadvocate/intake-draft/{smartadvocate_intake_draft_id}/promote

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}/promote
  • Auth: none declared

Path parameters

smartadvocate_intake_draft_idstring uuid required

Request body

first_namestring required
last_namestring required
emailstring nullable
phone_numberstring nullable
date_of_birthstring date nullable
genderstring nullable
address_line1string nullable
citystring nullable
statestring nullable
zip_codestring nullable
case_summarystring nullable
incident_datestring date nullable
case_group_idinteger nullable
case_type_idinteger nullable
enrichmentobject nullable

The (possibly user-edited) rich extraction to promote. Omit to use the draft's stored enrichment; send {} to promote without any enrichment

override_duplicatesboolean

Create the case even when an existing case with the same incident date was found for the matched contact

merge_into_case_idinteger nullable

Merge into this recently opened SA case (one of the preview's existing_case_candidates) instead of creating one

force_new_caseboolean

Create a new case even when a recently opened case for the caller was found

expect_new_caseboolean

The preview showed no case to merge into; refuse (409) rather than merge if staff have opened one since

Response

Successful Response

smartadvocate_intake_draft_idstring uuid required
call_idstring uuid required
first_namestring nullable
last_namestring nullable
emailstring nullable
phone_numberstring nullable
date_of_birthstring date nullable
genderstring nullable
address_line1string nullable
citystring nullable
statestring nullable
zip_codestring nullable
case_summarystring nullable
incident_datestring date nullable
incident_statestring nullable
case_type_hintstring nullable
matched_sa_contact_idinteger 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_namestring nullable
ambiguous_contact_matchboolean

Multiple person contacts share the caller's phone number; the match shown is a best guess and needs manual review

duplicate_case_numbersstring[]

Existing case numbers on the matched contact with the same incident date (likely repeat caller about the same accident)

existing_case_candidatesobject[]

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_decisionstring nullable

How the merge target was chosen: phone_and_name | llm | none | manual | error (error = held for a human, nothing written)

existing_case_reasonstring nullable
merged_into_existingboolean

The intake was merged into an existing case (sa_case_id) instead of creating one

statusstring
sa_contact_idinteger nullable
sa_case_idinteger nullable
sa_case_numberstring nullable
was_dry_runboolean nullable
auto_promotedboolean
enrichmentobject nullable

Rich extraction: plaintiff role, injuries, treatment, medical providers, insurance, vehicle, referral source and tags (see DraftSmartAdvocateEnrichment)

promote_stepsobject[] 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

created_atstring date-time required
updated_atstring date-time nullable

Changes

    • info

      added the new optional request property

    • info

      added the new optional request property

    • info

      added the new optional request property

    • info

      added the optional property to the response with the status

    • info

      added the optional property to the response with the status

    • info

      added the optional property to the response with the status

    • info

      added the optional property to the response with the status