API reference

Custom orders

Made-to-order pieces moving through stages from inquiry to won or lost.

Endpoints

GET/api/v1/custom-ordersList, newest first
POST/api/v1/custom-ordersCreate · write key
GET/api/v1/custom-orders/{id}Get one
PATCH/api/v1/custom-orders/{id}Change · write key
DELETE/api/v1/custom-orders/{id}Delete · write key · owners, admins, managers

Fields

Every record also has object = "custom_order".

FieldTypeDescription
id
read only
uuidUnique ID.
brand_id
required on create
set on create only
uuidThe brand this belongs to (see GET /brands). Required when creating; cannot be changed.
client_iduuidThe client it belongs to (optional).
title
required on create
string, max 200What is being made.
stageone of: inquiry, design, deposit, production, ready, won, lostCurrent stage. Default: inquiry.
valuenumber, 0–10000000Expected value.
depositnumber, 0–10000000Deposit received.
due_ondatePromised date (YYYY-MM-DD).
notesstring, max 5000Notes.
created_at
read only
date-timeWhen 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.

ParameterTypeMeaning
brand_iduuidOnly this brand.
client_iduuidOnly this client.
stageone of: inquiry, design, deposit, production, ready, won, lostOnly this stage.
created_sincedate-timeCreated 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
}