Customers
A Customer is a buyer record scoped to your business. Customer ids are HL Hunt record ids: 25-character strings that start with the letter c (for example c1m9k2x7e0001qz8f4h2b6n3p) with no cus_ or cust_ prefix. Every create and retrieve response carries the id in the id field; there is no customer_id field on the customer object. Saved cards and bank accounts link to a customer through customer_id on POST /v1/payment-methods or by paying through a Checkout Session.
/v1/customersCreate a Customer
Create a customer. Only name is required.
Request body
| Field | Type | Required | Description |
|---|---|---|---|
| name | string | required | Non-empty. Trimmed. |
| string | optional | Buyer email. | |
| phone | string | optional | Buyer phone. |
| company | string | optional | Company name. |
| address | object | optional | Free-form address object, stored as given. |
| metadata | object | optional | Your own keys and values, stored as given and returned on retrieve. |
Response
| Field | Type | Description |
|---|---|---|
| id | string | Customer id (c… record id). Use it as customer_id elsewhere. |
| object | string | "customer". |
| name / email / phone / company | string | null | As stored. |
| created | string | ISO 8601. |
| metadata | object | As sent, or {}. |
- HTTP 201. 400 missing_required_param when name is missing or blank.
- Emits customer.created.
curl -X POST https://api.hlhunt.org/v1/customers \
-H "Authorization: Bearer sk_live_your_api_key" \
-H "Content-Type: application/json" \
-d '{
"name": "Jenny Rosen",
"email": "jenny@example.com",
"phone": "+1-555-555-5555",
"company": "Acme Inc",
"metadata": { "crm_id": "A-1001" }
}'/v1/customersList Customers
Paginated list of the business's customers.
Parameters
| Field | Type | Required | Description |
|---|---|---|---|
| limit | integer (query) | optional | 1–100, default 25. |
| offset | integer (query) | optional | Rows to skip, default 0. |
| search | string (query) | optional | Free-text match on the customer record. |
Response
| Field | Type | Description |
|---|---|---|
| object | string | "list". |
| data | array | { id, object, name, email, phone, company, created }. |
| total | integer | Total matching customers. |
| has_more | boolean | offset + limit < total. |
curl -X GET "https://api.hlhunt.org/v1/customers?limit=20&offset=0" \
-H "Authorization: Bearer sk_live_your_api_key"/v1/customers/{customer_id}Retrieve a Customer
Fetch one customer. Includes address, updated and metadata, which the list omits.
Parameters
| Field | Type | Required | Description |
|---|---|---|---|
| customer_id | string (path) | required | The customer's id. |
Response
| Field | Type | Description |
|---|---|---|
| id / object / name / email / phone / company | As on create. | |
| address | object | null | As stored. |
| created / updated | string | ISO 8601. |
| metadata | object | As stored, or {}. |
- 404 resource_not_found when the customer is unknown or belongs to another business.
curl -X GET https://api.hlhunt.org/v1/customers/c1m9k2x7e0001qz8f4h2b6n3p \
-H "Authorization: Bearer sk_live_your_api_key"/v1/customers/{customer_id}Update a Customer
Update any of the writable fields. Only the fields you send change.
Request body
| Field | Type | Required | Description |
|---|---|---|---|
| name | string | optional | Non-empty if sent (400 invalid_param otherwise). |
| email / phone / company | string | optional | Send an empty string to clear. |
| address | object | optional | Replaces the stored address. |
| metadata | object | optional | Replaces the stored metadata (not merged). |
| notes | string | optional | Internal notes shown in the dashboard. |
Response
| Field | Type | Description |
|---|---|---|
| (customer object) | Same shape as GET /v1/customers/{customer_id}. |
- 400 missing_required_param when the body is empty or has no writable field · 404 resource_not_found.
- Emits customer.updated.
curl -X PUT https://api.hlhunt.org/v1/customers/c1m9k2x7e0001qz8f4h2b6n3p \
-H "Authorization: Bearer sk_live_your_api_key" \
-H "Content-Type: application/json" \
-d '{ "phone": "+1-555-000-1234", "metadata": { "crm_id": "A-1001", "tier": "gold" } }'Endpoints
/v1/customers/v1/customers/v1/customers/{customer_id}/v1/customers/{customer_id}Create a Customer
curl -X POST https://api.hlhunt.org/v1/customers \
-H "Authorization: Bearer sk_live_your_api_key" \
-H "Content-Type: application/json" \
-d '{
"name": "Jenny Rosen",
"email": "jenny@example.com",
"phone": "+1-555-555-5555",
"company": "Acme Inc",
"metadata": { "crm_id": "A-1001" }
}'List Customers
curl -X GET "https://api.hlhunt.org/v1/customers?limit=20&offset=0" \
-H "Authorization: Bearer sk_live_your_api_key"Retrieve a Customer
curl -X GET https://api.hlhunt.org/v1/customers/c1m9k2x7e0001qz8f4h2b6n3p \
-H "Authorization: Bearer sk_live_your_api_key"Update a Customer
curl -X PUT https://api.hlhunt.org/v1/customers/c1m9k2x7e0001qz8f4h2b6n3p \
-H "Authorization: Bearer sk_live_your_api_key" \
-H "Content-Type: application/json" \
-d '{ "phone": "+1-555-000-1234", "metadata": { "crm_id": "A-1001", "tier": "gold" } }'