API reference
Custom orders
Made-to-order pieces moving through stages from inquiry to won or lost.
Endpoints
GET
/api/v1/custom-ordersList, newest firstPOST
/api/v1/custom-ordersCreate · write keyGET
/api/v1/custom-orders/{id}Get onePATCH
/api/v1/custom-orders/{id}Change · write keyDELETE
/api/v1/custom-orders/{id}Delete · write key · owners, admins, managersFields
Every record also has object = "custom_order".
| 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). |
titlerequired on create | string, max 200 | What is being made. |
stage | one of: inquiry, design, deposit, production, ready, won, lost | Current stage. Default: inquiry. |
value | number, 0–10000000 | Expected value. |
deposit | number, 0–10000000 | Deposit received. |
due_on | date | Promised date (YYYY-MM-DD). |
notes | string, max 5000 | Notes. |
created_atread only | date-time | When it was created (UTC, ISO 8601). |
List filters
Add to GET /api/v1/custom-orders 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. |
stage | one of: inquiry, design, deposit, production, ready, won, lost | Only this stage. |
created_since | date-time | Created at or after this time. |
List
Terminal
curl "$QUILO_URL/api/v1/custom-orders?limit=20&stage=inquiry" \
-H "Authorization: Bearer $QUILO_API_KEY"JSON
{
"object": "list",
"data": [
{
"object": "custom_order",
"id": "6f1c2a90-3b4d-4e5f-8a7b-9c0d1e2f3a4b",
"brand_id": "0b7e9a52-1c3d-4f6e-9a8b-7c6d5e4f3a2b",
"client_id": "5d2c1b0a-9e8f-4a7b-8c6d-5e4f3a2b1c0d",
"title": "Engagement ring, oval diamond",
"stage": "design",
"value": 6500,
"deposit": 2000,
"due_on": "2026-10-17",
"notes": null,
"created_at": "2026-10-17T09:30:00Z"
}
],
"has_more": false,
"next_cursor": null
}Create
Answers 201 Created with the new custom order. Send an Idempotency-Key to retry safely.
Terminal
curl -X POST "$QUILO_URL/api/v1/custom-orders" \
-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",
"title": "Engagement ring, oval diamond",
"stage": "design",
"value": 6500,
"deposit": 2000
}'Get one
Terminal
curl "$QUILO_URL/api/v1/custom-orders/ID" -H "Authorization: Bearer $QUILO_API_KEY"JSON
{
"object": "custom_order",
"id": "6f1c2a90-3b4d-4e5f-8a7b-9c0d1e2f3a4b",
"brand_id": "0b7e9a52-1c3d-4f6e-9a8b-7c6d5e4f3a2b",
"client_id": "5d2c1b0a-9e8f-4a7b-8c6d-5e4f3a2b1c0d",
"title": "Engagement ring, oval diamond",
"stage": "design",
"value": 6500,
"deposit": 2000,
"due_on": "2026-10-17",
"notes": null,
"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/custom-orders/ID" \
-H "Authorization: Bearer $QUILO_API_KEY" \
-H "Content-Type: application/json" \
-d '{"title":"Engagement ring, oval diamond"}'Delete
Owners, admins and managers only, with a Read and write key. Deleting cannot be undone.
Terminal
curl -X DELETE "$QUILO_URL/api/v1/custom-orders/ID" -H "Authorization: Bearer $QUILO_API_KEY"JSON
{
"object": "custom_order",
"id": "6f1c2a90-3b4d-4e5f-8a7b-9c0d1e2f3a4b",
"deleted": true
}