Contracts API Reference

Access and track agreements, terms, pricing, and signature status for contracts inside your Hermon workspace.

List Contracts

Retrieve a paginated list of contracts. Results can be filtered by status, lead, and assigned setter, closer, or triager.

GET/api/external/contracts

Query Parameters

ParameterTypeRequiredDescription
pageintegerOptionalPage number for pagination. Default: 1
limitintegerOptionalNumber of items per page. Default: 10, Max: 100
statusstringOptionalFilter by contract status (e.g. DRAFT, SENT, VIEWED, SIGNED, VOIDED, WITHDRAWN).
setterstringOptionalFilter by assigned setter email.
closerstringOptionalFilter by assigned closer email.
triagestringOptionalFilter by assigned triager email.
lead_idstring (UUID)OptionalFilter by associated lead UUID.

Code Examples

curl -X GET "https://api.hermon.io/api/external/contracts?page=1&limit=10&status=VOIDED&setter=sales-setter@mailinator.com&closer=hermon@mailinator.com&triage=triager@mailinator.com&lead_id=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": "Contracts fetched successfully",
  "data": [
    {
      "id": "d5e0fb5d-5b14-45cf-81d8-2a0eb7a49224",
      "lead": {
        "id": "21775958-3969-4172-97c9-4a4d44d5e856",
        "first_name": "George",
        "last_name": null,
        "email": "georgeableson@aol.com"
      },
      "program": {
        "name": "Larges Transactions"
      },
      "total_amount": 5000,
      "collected_amount": 0,
      "next_due_date": "2026-06-14T04:30:00.000Z",
      "closer": {
        "first_name": "Mitul",
        "last_name": "Kanani",
        "profile_image_url": "https://img.clerk.com/eyJ0eXBlIjoicHJveHkiLCJzcmMiOiJodHRwczovL2ltYWdlcy5jbGVyay5kZXYvdXBsb2FkZWQvaW1nXzM5cUpIazFNeG5haHkxUWVGWFpYZXlodElLbiJ9",
        "id": "user_39btCx7wm2Vwgr2eHmhRLxNanxI",
        "role": "org:owner"
      },
      "setter": {
        "first_name": "sale",
        "last_name": "satter",
        "profile_image_url": "https://img.clerk.com/eyJ0eXBlIjoiZGVmYXVsdCIsImlpZCI6Imluc18zN0lDNG9PRFg5cEdnYzdHOEdZa3ZObXJXRloiLCJyaWQiOiJ1c2VyXzNBWXExakpNRFZkSGtxdGEyVGpnbGVnUUx3eCIsImluaXRpYWxzIjoiU1MifQ",
        "id": "user_3AYq1jJMDVdHkqta2TjglegQLwx",
        "role": "org:sales_setter"
      },
      "triager": {
        "first_name": "triager",
        "last_name": "hermon",
        "profile_image_url": "https://img.clerk.com/eyJ0eXBlIjoiZGVmYXVsdCIsImlpZCI6Imluc18zN0lDNG9PRFg5cEdnYzdHOEdZa3ZObXJXRloiLCJyaWQiOiJ1c2VyXzNEWnFMUDh4SmJCOVZFSU1jRHl5VmZ5d1U0eSIsImluaXRpYWxzIjoiVEgifQ",
        "id": "user_3DZqLP8xJbB9VEIMcDyyVfywU4y",
        "role": "org:triager"
      },
      "currency": "usd",
      "contract_status": "VOIDED",
      "contract_type": "PP",
      "subscription_status": null,
      "to_be_collected": 5000,
      "created_at": "2026-05-14T11:34:06.740Z"
    }
  ],
  "pagination": {
    "page": 1,
    "limit": 10,
    "total": 13,
    "totalPages": 2,
    "hasNext": true,
    "hasPrev": false
  }
}

Get Contract Details

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

GET/api/external/contracts/:id

Path Parameters

:idRequired. The unique contract UUID.

Contract Object Fields

FieldTypeDescription
idstring (UUID)Unique identifier for the contract.
created_with_templatebooleanWhether the contract was created using a template [Details API Only].
currencystringISO 4217 currency code (e.g. usd, eur).
leadobjectAssociated lead summary details (id, first_name, last_name, email, and optionally phone_country, phone_e164, sales_status).
programobjectAssociated program summary details (name, and details like id, template_name, price, type, co_signer).
closerobject | nullAssigned closer summary details.
setterobject | nullAssigned setter summary details.
triagerobject | nullAssigned triager summary details.
contract_statusstringCurrent state of the contract (e.g. DRAFT, SENT, VIEWED, SIGNED, VOIDED, WITHDRAWN) [List API Only].
contract_typestringBilling type structure (e.g. PP, PIF, SUBSCRIPTION) [List API Only].
statusstringCurrent state of the contract (e.g. DRAFT, SENT, VIEWED, SIGNED, VOIDED, WITHDRAWN) [Details API Only].
typestringBilling type structure (e.g. PP, PIF, SUBSCRIPTION) [Details API Only].
total_amountnumberTotal contract amount [List API Only].
collected_amountnumberAggregated paid transaction amount.
to_be_collectednumber | nullRemaining contract value to collect [List API Only].
total_valuenumberTotal financial contract value [Details API Only].
remaining_amountnumberRemaining balance to be paid [Details API Only].
next_due_datestring | nullISO 8601 timestamp of next planned installment payment [List API Only].
subscription_statusstring | nullStatus of active recurring subscription if applicable.
voided_atstring | nullISO 8601 timestamp when contract was voided [Details API Only].
voided_reasonstring | nullText explanation of void status [Details API Only].
voided_by_detailsobject | nullSummary details of user who voided the contract [Details API Only].
paymentsarrayScheduled/paid transactions linked to this contract (id, type, amount, date, status, payment_provider, is_mandate_payment, active_payment_link) [Details API Only].
notesstring | nullCustom internal contract notes [Details API Only].
sign_page_urlstring | nullDirect page link for lead to sign the contract [Details API Only].
esign_preview_pdf_urlstring | nullPDF generated document preview link [Details API Only].
created_atstringISO 8601 timestamp of contract creation.
updated_atstringISO 8601 timestamp of last modification [Details API Only].

Code Examples

curl -X GET "https://api.hermon.io/api/external/contracts/d5e0fb5d-5b14-45cf-81d8-2a0eb7a49224" \
  -H "Content-Type: application/json" \
  -H "x-api-key: sk_live_your_key_here"

Response Example

json
{
  "status": "success",
  "message": "Contract fetched successfully",
  "data": {
    "id": "d5e0fb5d-5b14-45cf-81d8-2a0eb7a49224",
    "created_with_template": true,
    "currency": "usd",
    "lead": {
      "id": "21775958-3969-4172-97c9-4a4d44d5e856",
      "first_name": "George",
      "last_name": null,
      "email": "georgeableson@aol.com",
      "phone_country": "GB",
      "phone_e164": "+447851607407",
      "sales_status": {
        "id": "bf2a1bad-4a98-4cae-838e-6e58f9c0d7cc",
        "name": "Won",
        "text_color": "#0BD050",
        "bg_color": "#E9FBF0"
      }
    },
    "status": "VOIDED",
    "signed_at": null,
    "voided_at": "2026-05-14T11:48:22.300Z",
    "voided_reason": "hfggh",
    "voided_by_details": {
      "first_name": "Mitul",
      "last_name": "Kanani",
      "profile_image_url": "https://img.clerk.com/eyJ0eXBlIjoicHJveHkiLCJzcmMiOiJodHRwczovL2ltYWdlcy5jbGVyay5kZXYvdXBsb2FkZWQvaW1nXzM5cUpIazFNeG5haHkxUWVGWFpYZXlodElLbiJ9",
      "id": "user_39btCx7wm2Vwgr2eHmhRLxNanxI",
      "role": "org:owner"
    },
    "type": "PP",
    "closer": {
      "first_name": "Mitul",
      "last_name": "Kanani",
      "profile_image_url": "https://img.clerk.com/eyJ0eXBlIjoicHJveHkiLCJzcmMiOiJodHRwczovL2ltYWdlcy5jbGVyay5kZXYvdXBsb2FkZWQvaW1nXzM5cUpIazFNeG5haHkxUWVGWFpYZXlodElLbiJ9",
      "id": "user_39btCx7wm2Vwgr2eHmhRLxNanxI",
      "role": "org:owner"
    },
    "setter": {
      "first_name": "sale",
      "last_name": "satter",
      "profile_image_url": "https://img.clerk.com/eyJ0eXBlIjoiZGVmYXVsdCIsImlpZCI6Imluc18zN0lDNG9PRFg5cEdnYzdHOEdZa3ZObXJXRloiLCJyaWQiOiJ1c2VyXzNBWXExakpNRFZkSGtxdGEyVGpnbGVnUUx3eCIsImluaXRpYWxzIjoiU1MifQ",
      "id": "user_3AYq1jJMDVdHkqta2TjglegQLwx",
      "role": "org:sales_setter"
    },
    "triager": {
      "first_name": "triager",
      "last_name": "hermon",
      "profile_image_url": "https://img.clerk.com/eyJ0eXBlIjoiZGVmYXVsdCIsImlpZCI6Imluc18zN0lDNG9PRFg5cEdnYzdHOEdZa3ZObXJXRloiLCJyaWQiOiJ1c2VyXzNEWnFMUDh4SmJCOVZFSU1jRHl5VmZ5d1U0eSIsImluaXRpYWxzIjoiVEgifQ",
      "id": "user_3DZqLP8xJbB9VEIMcDyyVfywU4y",
      "role": "org:triager"
    },
    "program": {
      "id": "f81af254-bedf-41d2-ba37-840099bc8bc4",
      "name": "Larges Transactions",
      "notes": null,
      "template_name": "Sample Service Agreement",
      "price": 5,
      "type": "ONE_TIME",
      "co_signer": null
    },
    "total_value": 5000,
    "collected_amount": 0,
    "remaining_amount": 0,
    "payments": [
      {
        "id": "32d6bd06-1a03-4584-8760-44140d821452",
        "type": "FIRST_PAYMENT",
        "amount": 1000,
        "date": "2026-05-14T04:30:00.000Z",
        "status": "FAILED",
        "payment_provider": "MOLLIE",
        "is_mandate_payment": false,
        "active_payment_link": null
      },
      {
        "id": "1594bb79-7170-44ba-8dff-8fd8bda7dade",
        "type": "DEPOSIT",
        "amount": 1000,
        "date": "2026-05-13T04:30:00.000Z",
        "status": "LOST",
        "payment_provider": "MOLLIE",
        "is_mandate_payment": false,
        "active_payment_link": null
      },
      {
        "id": "d558cf40-7cdf-486d-8c9b-641270f50892",
        "type": "INSTALMENT",
        "amount": 1500,
        "date": "2026-06-14T04:30:00.000Z",
        "status": "LOST",
        "payment_provider": "MOLLIE",
        "is_mandate_payment": true,
        "active_payment_link": null
      },
      {
        "id": "4f019f3a-af14-4419-8aa8-de454beae75d",
        "type": "INSTALMENT",
        "amount": 1500,
        "date": "2026-07-14T04:30:00.000Z",
        "status": "LOST",
        "payment_provider": "MOLLIE",
        "is_mandate_payment": true,
        "active_payment_link": null
      }
    ],
    "notes": null,
    "sign_page_url": null,
    "esign_preview_pdf_url": null,
    "created_at": "2026-05-14T11:34:06.740Z",
    "updated_at": "2026-05-14T11:48:22.308Z"
  }
}

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"
}