Lawfficient API
Consultations

Consultations

The consultation object and the endpoints that work with it.

A consultation is a scheduled meeting between a lead and an attorney — an intake call, a strategy session, whatever your firm books. Each one lands in an attorney's calendar at a real time, validated against that attorney's office hours and time-off so two consultations never collide.

Endpoints

MethodPathScopeDescription
GET/api/consultationsconsultations:readList consultations (filtered, paginated)
GET/api/consultations/{id}consultations:readFetch a single consultation
POST/api/consultationsconsultations:writeBook a consultation
PATCH/api/consultations/{id}consultations:writeReschedule or cancel a consultation

The consultation object

{
  "id": "7c1e2a3f-1b2c-4d5e-8f90-abcdef012345",
  "lead_id": "3f8c1e2a-1b2c-4d5e-8f90-abcdef012345",
  "attorney_id": "a1b2c3d4-0000-4000-8000-000000000000",
  "type": "Initial consultation",
  "status": "scheduled",
  "start_at": "2026-07-02T15:00:00.000Z",
  "duration_min": 30,
  "time_zone": "America/New_York",
  "paid": false,
  "amount": null,
  "outcome": null,
  "archived": false,
  "created_at": "2026-06-28T10:00:00.000Z",
  "data": { "matter": "Family" }
}
FieldTypeNotes
idstringUUID, stable.
lead_idstring | nullThe lead this consultation is for.
attorney_idstring | nullThe attorney it's booked with.
typestringThe consultation type (free text, e.g. Initial consultation).
statusstringBooking lifecycle stage — see below.
start_atstringISO-8601 start instant, in UTC.
duration_minnumberLength in minutes.
time_zonestringIANA zone the consultation is shown in (e.g. America/New_York).
paidbooleanPayment status — tracked, not charged.
amountnumber | nullThe charge amount, or null.
outcomestring | nullPost-consultation qualification, or null.
archivedbooleanWhether the consultation is archived.
created_atstringISO-8601 timestamp.
dataobjectPractice-specific custom fields (varies per firm).

Status

status is a fixed booking lifecycle — the same set for every firm, so you can branch on it directly:

StatusMeaning
scheduledBooked and upcoming.
paidMarked paid.
completedThe consultation happened.
rescheduledMoved to a new time.
canceledCalled off.
no_showThe lead didn't attend.

Through the API you book (scheduled), reschedule, and cancel. The other statuses — paid, completed, no_show — are set inside the app as the consultation plays out, and you'll see them on read.

On this page