API reference
Sales
What clients bought: date, receipt number, items and total. A receipt number is unique per brand.
Endpoints
GET
/api/v1/salesList, newest firstPOST
/api/v1/salesCreate · write keyGET
/api/v1/sales/{id}Get onePATCH
/api/v1/sales/{id}Change · write keyDELETE
/api/v1/sales/{id}Delete · write key · owners, admins, managersFields
Every record also has object = "sale".
| Field | Type | Description |
|---|---|---|
idread only | uuid | Unique ID. |
brand_idrequired on create set on create only | uuid | The brand this belongs to (see GET /brands). Required when creating; cannot be changed. |
client_id | uuid | The client it belongs to (optional). |
purchased_on | date | Date of the sale (YYYY-MM-DD). Default: today. |
receipt_no | string, max 60 | Receipt or order number; unique per brand. |
items | string, max 2000 | What was sold, as text. |
totalrequired on create | number, 0–10000000 | Total amount in the brand currency. |
channel | string, max 40 | Where it was sold: store, website, phone… |
created_atread only | date-time | When it was created (UTC, ISO 8601). |
List filters
Add to GET /api/v1/sales as query parameters. Also limit (1–200, default 50) and cursor. See Pagination.
| Parameter | Type | Meaning |
|---|---|---|
brand_id | uuid | Only this brand. |
client_id | uuid | Only this client. |
receipt_no | string | Exact receipt number. |
purchased_from | date | Sold on or after this date. |
purchased_to | date | Sold on or before this date. |
created_since | date-time | Created at or after this time. |
List
Terminal
curl "$QUILO_URL/api/v1/sales?limit=20" \
-H "Authorization: Bearer $QUILO_API_KEY"JSON
{
"object": "list",
"data": [
{
"object": "sale",
"id": "6f1c2a90-3b4d-4e5f-8a7b-9c0d1e2f3a4b",
"brand_id": "0b7e9a52-1c3d-4f6e-9a8b-7c6d5e4f3a2b",
"client_id": "5d2c1b0a-9e8f-4a7b-8c6d-5e4f3a2b1c0d",
"purchased_on": "2026-10-17",
"receipt_no": "W-10442",
"items": "18k gold ring, sapphire",
"total": 2480,
"channel": "website",
"created_at": "2026-10-17T09:30:00Z"
}
],
"has_more": false,
"next_cursor": null
}Create
Answers 201 Created with the new sale. Send an Idempotency-Key to retry safely.
Terminal
curl -X POST "$QUILO_URL/api/v1/sales" \
-H "Authorization: Bearer $QUILO_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: my-unique-id-123" \
-d '{
"brand_id": "0b7e9a52-1c3d-4f6e-9a8b-7c6d5e4f3a2b",
"client_id": "5d2c1b0a-9e8f-4a7b-8c6d-5e4f3a2b1c0d",
"purchased_on": "2026-10-17",
"receipt_no": "W-10442",
"items": "18k gold ring, sapphire",
"total": 2480,
"channel": "website"
}'Get one
Terminal
curl "$QUILO_URL/api/v1/sales/ID" -H "Authorization: Bearer $QUILO_API_KEY"JSON
{
"object": "sale",
"id": "6f1c2a90-3b4d-4e5f-8a7b-9c0d1e2f3a4b",
"brand_id": "0b7e9a52-1c3d-4f6e-9a8b-7c6d5e4f3a2b",
"client_id": "5d2c1b0a-9e8f-4a7b-8c6d-5e4f3a2b1c0d",
"purchased_on": "2026-10-17",
"receipt_no": "W-10442",
"items": "18k gold ring, sapphire",
"total": 2480,
"channel": "website",
"created_at": "2026-10-17T09:30:00Z"
}Unknown IDs, IDs from other companies and records you cannot access all answer 404 not_found.
Change
Send only the fields to change. brand_id cannot be changed after creation.
Terminal
curl -X PATCH "$QUILO_URL/api/v1/sales/ID" \
-H "Authorization: Bearer $QUILO_API_KEY" \
-H "Content-Type: application/json" \
-d '{"purchased_on":"2026-10-17"}'Delete
Owners, admins and managers only, with a Read and write key. Deleting cannot be undone.
Terminal
curl -X DELETE "$QUILO_URL/api/v1/sales/ID" -H "Authorization: Bearer $QUILO_API_KEY"JSON
{
"object": "sale",
"id": "6f1c2a90-3b4d-4e5f-8a7b-9c0d1e2f3a4b",
"deleted": true
}