Skip to main content
POST
Release a lien
Submits a lien release for a title entry. For electronic titles (is_elt = true) the release goes to the ELT provider; for paper titles it is handled by Cardinal Gray operations. Progress is tracked on account_status (lien_release_pending → lien_release_complete, or lien_error on a recorded rejection) and elt_data.*.
Send no request body. The release-to recipient comes from the title record Cardinal Gray already holds. Passing an address switches the ELT provider into alternate-recipient mode, which adds postal validation and state-specific recipient rules and is the main source of rejections. If a title needs to go somewhere other than the borrower, update account_data.loan.release_title_to_address with PATCH /title/{id} before calling this endpoint.

What happens

  1. Cardinal Gray checks that ELT is enabled for your organization and that the title belongs to you.
  2. Electronic title (is_elt = true)
    • Pre-flight: the lien is looked up at the ELT provider. It must be Perfected. If the provider already shows it released, in flight, or held as a paper title, you get a 409, nothing is submitted, and the entry is reconciled to the provider’s view (see below).
    • The release is submitted with the recipient from the title record: account_data.loan.release_title_to_address if set, otherwise the first borrower’s address.
    • On acceptance elt_data.release_submitted_at is stamped and account_status becomes lien_release_pending. The provider processes releases in a nightly batch, so the acknowledgement PDF (elt_data.receipt_lien_release) usually appears later.
  3. Paper title (is_elt = false) — nothing is sent to the ELT provider. account_status becomes lien_release_pending and the release is handled by Cardinal Gray operations.

Responses

409 cases

The body is {"error": "...", "ddiLienStatus": "<provider status>"} for pre-flight blocks, or {"error", "code", "kind"} when the provider rejected the release itself.

After the call

  • account_status moves lien_release_pending → lien_release_complete when the provider confirms the release (state confirmation or title mailed). The confirmation PDF is stored as elt_data.receipt_lien_release_complete.
  • Subscribers to title.account_status.* receive title.account_status.lien_release_pending, then title.account_status.lien_release_complete (or title.account_status.lien_error if a rejection was recorded). See Webhooks.
  • GET /title/{id} returns account_status, elt_data.release_submitted_at, and the receipt documents.

Idempotency

Calling the endpoint again while a release is in flight returns 409 (ReleaseSubmitted / ReleasePending) and does not double-submit; after completion it returns 409 with ddiLienStatus: "Released". Retrying on 502 / 503 is safe.
Lien transfer to another lienholder is a separate, state-limited workflow and is not part of the partner-facing API surface. Contact Cardinal Gray if you need it.

Authorizations

Authorization
string
header
required

API key or Clerk JWT supplied as Authorization: Bearer

Path Parameters

id
string
required

Unique identifier of the title entry

Response

Release accepted. account_status is now lien_release_pending and, for electronic titles, elt_data.release_submitted_at is set.

status
enum<string>
required
Available options:
ok
message
string
required