Leads API Reference

Fetch leads and query histories for contacts matching Hermon data records.

List Leads

Retrieve a paginated list of leads. Results can be filtered by source, status role, and assigned setter, closer, or triager.

GET/api/external/leads

Query Parameters

ParameterTypeRequiredDescription
pageintegerOptionalPage number for pagination. Default: 1
limitintegerOptionalNumber of items per page. Default: 10, Max: 100
sourcestringOptionalFilter by lead source category (e.g. LANDING_PAGE, CALENDLY, MANUAL, TYPEFORM, WEBINAR, NEWSLETTER,OTHER).
status_rolestringOptionalFilter by status role (e.g. NEW_LEAD, APPOINTMENT_BOOKED, NO_SHOW, RESCHEDULED, CANCELED, PARTIAL_PAYMENT, WON, UNQUALIFIED, FOLLOW_UP, LOST).
setterstringOptionalFilter by assigned setter email.
closerstringOptionalFilter by assigned closer email.
triagestringOptionalFilter by assigned triager email.

Code Examples

curl -X GET "https://api.hermon.io/api/external/leads?page=1&limit=10&source=LANDING_PAGE&status_role=NEW_LEAD&setter=sales-setter@mailinator.com&closer=hermon@mailinator.com&triage=triager@mailinator.com" \
  -H "Content-Type: application/json" \
  -H "x-api-key: sk_live_your_key_here"

Response Example

json
{
  "status": "success",
  "message": "Leads fetched successfully",
  "data": [
    {
      "id": "896e4c72-e390-4baf-906f-395992266222",
      "first_name": "Abiodun",
      "last_name": null,
      "email": "jesufadeju@gmail.com",
      "phone_e164": "+491786614349",
      "phone_country": "DE",
      "source": "CALENDLY",
      "assigned_setter": null,
      "assigned_closer": null,
      "assigned_triager": null,
      "next_touch_point_date": null,
      "next_touch_point_type": null,
      "first_source": {
        "id": null,
        "name": null
      },
      "last_source": {
        "id": null,
        "name": null
      },
      "status": {
        "id": "4bb2ae65-8ab1-4695-b896-190711a07cd0",
        "name": "Call Booked",
        "role": "APPOINTMENT_BOOKED",
        "description": "Appointment scheduled",
        "text_color": "#ea34b0",
        "bg_color": "#fde8f7"
      },
      "latest_note": {
        "id": "b2d6229e-363f-4cf7-9bce-56e624174a74",
        "note": "Scheduled via Calendly",
        "appointment_id": "82e00a98-1f3e-4bfa-9d40-d67dda48cb58",
        "created_by": null,
        "created_at": "2026-05-26T08:17:38.409Z"
      },
      "created_at": "2026-05-26T08:17:38.326Z",
      "updated_at": "2026-05-26T08:17:38.356Z"
    },
    {
      "id": "3411df0b-8ca1-4fd3-82be-3738b2074d7b",
      "first_name": "Adrelon",
      "last_name": null,
      "email": "allaadrelon1994@gmail.com",
      "phone_e164": "+447876839010",
      "phone_country": "GB",
      "source": "CALENDLY",
      "assigned_setter": null,
      "assigned_closer": null,
      "assigned_triager": null,
      "next_touch_point_date": null,
      "next_touch_point_type": null,
      "first_source": {
        "id": null,
        "name": null
      },
      "last_source": {
        "id": null,
        "name": null
      },
      "status": {
        "id": "bac5eb24-e69f-410e-ad94-0185decad74a",
        "name": "Canceled",
        "role": "CANCELED",
        "description": "Lead cancelled, no reschedule",
        "text_color": "#E11D48",
        "bg_color": "#FFF1F2"
      },
      "latest_note": {
        "id": "1e7f8911-7450-455a-a987-080f62ca5559",
        "note": "Canceled via Calendly",
        "appointment_id": "7e4319bb-9e52-4792-9217-9485e75aef78",
        "created_by": null,
        "created_at": "2026-05-26T07:45:10.180Z"
      },
      "created_at": "2026-05-26T07:18:50.725Z",
      "updated_at": "2026-05-26T07:45:10.153Z"
    }
  ],
  "pagination": {
    "page": 1,
    "limit": 10,
    "total": 2362,
    "totalPages": 237,
    "hasNext": true,
    "hasPrev": false
  }
}

Get Lead Details

Fetch detailed information for a single lead by its unique UUID.

GET/api/external/leads/:id

Path Parameters

:idRequired. The unique lead UUID.

Lead Object Fields

FieldTypeDescription
idstring (UUID)Unique identifier for the lead.
first_namestringLead's first name.
last_namestring | nullLead's last name.
emailstringLead's email address.
phone_e164string | nullPhone number in E.164 format.
phone_countrystring | nullISO country code (e.g. DE, US).
sourcestringAcquisition source category (e.g. LANDING_PAGE, CALENDLY, MANUAL, TYPEFORM, WEBINAR, NEWSLETTER,OTHER).
assigned_setterstring | nullEmail of the assigned setter.
assigned_closerstring | nullEmail of the assigned closer.
assigned_triagerstring | nullEmail of the assigned triager.
next_touch_point_datestring | nullISO 8601 timestamp of the next planned contact.
next_touch_point_typestring | nullType of the next contact (e.g. WHATSAPP, EMAIL).
first_sourceobjectInitial lead source details (id, name).
last_sourceobjectLatest lead source details (id, name).
statusobjectCurrent status details (id, name, role, description, text_color, bg_color).
latest_noteobject | nullLatest activity log note (id, note, appointment_id, created_by, created_at).
created_atstringISO 8601 timestamp of lead creation.
updated_atstringISO 8601 timestamp of last modification.
billing_detailsobject | nullBilling metadata (business_name, address, zipcode, province, country, vat_number) [Details API Only].
ai_source_summarystring | nullAI-generated lead journey intent summary [Details API Only].
countsobjectAggregate metrics counts (notes, appointments, contracts, payments, opt_ins) [Details API Only].

Code Examples

curl -X GET "https://api.hermon.io/api/external/leads/e799c30f-9da7-4fd7-9552-83b96a9bfac2" \
  -H "Content-Type: application/json" \
  -H "x-api-key: sk_live_your_key_here"

Response Example

json
{
  "status": "success",
  "message": "Lead fetched successfully",
  "data": {
    "id": "e799c30f-9da7-4fd7-9552-83b96a9bfac2",
    "first_name": "Chris",
    "last_name": null,
    "email": "cpulf1@gmail.com",
    "phone_e164": "+61492817298",
    "phone_country": "AU",
    "source": "CALENDLY",
    "assigned_setter": null,
    "assigned_closer": null,
    "assigned_triager": null,
    "next_touch_point_date": null,
    "next_touch_point_type": null,
    "first_source": {
      "id": "90ef88c2-fa06-4703-84ec-369f7745219d",
      "name": "Other"
    },
    "last_source": {
      "id": "90ef88c2-fa06-4703-84ec-369f7745219d",
      "name": "Other"
    },
    "status": {
      "id": "bac5eb24-e69f-410e-ad94-0185decad74a",
      "name": "Canceled",
      "role": "CANCELED",
      "description": "Lead cancelled, no reschedule",
      "text_color": "#E11D48",
      "bg_color": "#FFF1F2"
    },
    "latest_note": {
      "id": "9e4f7616-b26e-4e79-a4de-380919aabd32",
      "note": "Canceled via Calendly",
      "appointment_id": "c76340d1-72a8-403e-b920-d6a2b526926c",
      "created_by": null,
      "created_at": "2026-05-23T10:31:16.626Z"
    },
    "created_at": "2026-05-22T11:32:04.329Z",
    "updated_at": "2026-05-23T10:31:16.601Z",
    "billing_details": {
      "id": "33f274cd-8128-41ae-8bc8-945307e17629",
      "business_name": "",
      "address": "nikopl;",
      "zipcode": "382350",
      "province": "Alberta",
      "country": "IN",
      "vat_number": "",
      "created_at": "2026-05-22T12:59:53.938Z",
      "updated_at": "2026-05-22T12:59:53.938Z"
    },
    "ai_source_summary": "The journey begins with an opt-in from a phone-setting source on May 22, 2026, for a qualification call related to the Millionaire Commerce program. This indicates a proactive interest in exploring coaching opportunities. The intent level is now assessed as medium, reflecting a desire for further engagement.",
    "counts": {
      "notes": 2,
      "appointments": 1,
      "contracts": 1,
      "payments": 1,
      "opt_ins": 1
    }
  }
}

List Statuses

GET/api/external/statuses

Status Object Fields

FieldTypeDescription
idstring (UUID)Unique identifier for the status.
namestringThe label or display name of the status.
rolestringThe backend status role classification (e.g. APPOINTMENT_BOOKED, CANCELED, PARTIAL_PAYMENT, NEW_LEAD).
typestringIndicates the scope of the status (e.g. BOTH, LEAD, OPPORTUNITY).
descriptionstringBrief description of the status.
text_colorstringThe hex color code for the status text.
bg_colorstringThe hex color code for the status background.

Code Examples

curl -X GET "https://api.hermon.io/api/external/statuses" \
  -H "x-api-key: sk_live_your_key_here"

Response Example

json
{
  "status": "success",
  "message": "Statuses fetched successfully",
  "data": [
    {
      "id": "4bb2ae65-8ab1-4695-b896-190711a07cd0",
      "name": "Call Booked",
      "role": "APPOINTMENT_BOOKED",
      "type": "BOTH",
      "description": "Appointment scheduled",
      "text_color": "#ea34b0",
      "bg_color": "#fde8f7"
    },
    {
      "id": "bac5eb24-e69f-410e-ad94-0185decad74a",
      "name": "Canceled",
      "role": "CANCELED",
      "type": "BOTH",
      "description": "Lead cancelled, no reschedule",
      "text_color": "#E11D48",
      "bg_color": "#FFF1F2"
    },
    {
      "id": "6e5f52e5-2b78-4e0b-8f58-226344420a37",
      "name": "Deposit",
      "role": "PARTIAL_PAYMENT",
      "type": "BOTH",
      "description": "Partial payment received, contract pending",
      "text_color": "#FF9E00",
      "bg_color": "#FEF8E6"
    },
    {
      "id": "6acae8f7-941a-4dae-ac2b-e1cc5c7d3d25",
      "name": "Fresh Lead",
      "role": "NEW_LEAD",
      "type": "BOTH",
      "description": "Entery Leval",
      "text_color": "#E11D48",
      "bg_color": "#FFF1F2"
    }
  ]
}

Update Lead Status

Update the status of a specific lead by providing a valid status UUID.

PATCH/api/external/leads/:id/status

Path Parameters

:idRequired. The unique lead UUID.

Headers

Content-Type:application/json

Request Body Fields

FieldTypeRequiredDescription
status_idstring (UUID)RequiredThe unique UUID of the status to assign to the lead.

Code Examples

curl -X PATCH "https://api.hermon.io/api/external/leads/24567881-3574-4aa9-82b2-d7837efa10e5/status" \
  -H "Content-Type: application/json" \
  -H "x-api-key: sk_live_your_key_here" \
  -d '{
    "status_id": "4bb2ae65-8ab1-4695-b896-190711a07cd0"
  }'

Response Example

json
{
  "status": "success",
  "message": "Lead status updated successfully",
  "data": {
    "id": "24567881-3574-4aa9-82b2-d7837efa10e5"
  }
}

Error Responses

401Missing or invalid API key
json
{
  "status": "error",
  "message": "Invalid or revoked API key"
}
404Resource not found
json
{
  "status": "error",
  "message": "Resource not found"
}
429Rate limit exceeded
json
{
  "status": "error",
  "message": "Too many requests"
}