Customers
List customers
Cursor-paginated list of the organisation's customers.
Authorization
apiKey AuthorizationBearer <token>
Organisation-scoped key from Settings → API Keys.
In: header
Query Parameters
limit?integer
Maximum rows to return. Must be a positive number; clamped to 1–200.
Range
1 <= value <= 200Default
50q?string
Case-insensitive contains-match on name OR email.
cursor?string
Id to page after — the last id of the previous page.
Response Body
application/json
application/json
application/json
application/json
curl -X GET "https://example.com/customers?limit=25&q=acme&cursor=cus_zzz789"{ "statusCode": 200, "statusDetail": { "status": "SUCCESS", "message": "OK" }, "result": { "customers": [ { "id": "cus_abc123", "externalId": "acme-42", "slug": "acme-inc", "name": "Acme Inc", "description": "AI meeting-notes startup — growth tier", "email": "ops@acme.com", "website": "https://acme.com", "phone": "+1 415 555 0100", "legalName": "Acme Incorporated", "addressLine1": "500 Market Street", "city": "San Francisco", "state": "CA", "country": "United States", "pincode": "94105", "taxId": "US-EIN 12-3456789", "currencyCode": "USD", "createdAt": "2026-07-01T09:30:00.000Z", "updatedAt": "2026-07-18T11:12:00.000Z" } ], "nextCursor": "cus_zzz789" }}{ "statusCode": 400, "statusDetail": { "status": "ERROR", "message": "Request body must be valid JSON." }, "result": {}}{ "statusCode": 401, "statusDetail": { "status": "ERROR", "message": "Invalid API key." }, "result": {}}{ "statusCode": 500, "statusDetail": { "status": "ERROR", "message": "Could not complete the request." }, "result": {}}Complete composite POST
Closes and bills ONE occurrence of a composite (a distinct tag value). Required even for outcome-tagged occurrences. Gated on every credit/outcome/unit the composite is restricted to having reported under the same value. Calling early isn't an error: it answers `422` but parks and completes itself once the rest lands.
Create a customer POST
Next Page