Public API reference
A clean wire format for buying dried goods.
Nine public handlers cover catalog discovery, culinary conversion, ounce pricing, RFQs, firm quotes, and order verification. The order section also documents one founder-only payment reconciliation handler. Examples below are representative contract-valid payloads; ids and timestamps marked in examples are dynamic values returned by the server.
Authorization header. Catalog and RFQ submission are public. Public reads and quote acceptance use the returned record id as a bearer-style possession token, so treat those ids like secrets. The founder-only mark-paid handler is separately protected by x-founder-key.requestedOz as a number, never a string. Server grams are floor(oz * 28.349523125).marginVersion: 2) + interpolated shipping (tierTableVersion: 1). Money is always integer USD cents. Price previews expire through validUntilIso quote reads expose the same validity moment as validUntil.01 / catalog
Catalog
Start with public lot metadata, then ask the server for an exact weight preview.
/api/listingsOptional filters
{
"category": "spice",
"availability": "illustrative_seed"
}Both query parameters are optional. Category is tea, herb, spice, or grain; availability is illustrative_seed, confirmed, or withdrawn.
Shell request
curl -s /api/listings?category=spice&availability=illustrative_seed/api/listings/{listingIdOrSlug}CatalogDetail
{
"id": "lst-anamalai-cardamom-a1",
"slug": "lst-anamalai-cardamom-a1",
"name": "Bold Green Cardamom, A1 Grade",
"category": "spice",
"origin": "Anamalai Hills, Tamil Nadu, IN · 1,100–1,400 m elevation",
"grade": "A1 — extra bold (8+ mm)",
"harvestDate": "2025-11",
"availableGrams": 1250000,
"certifications": [
"USDA Organic",
"Fair Trade",
"Rainforest Alliance",
"Spices Board India GI"
],
"seller": {
"id": "slr-anamalai-cardamom-a1",
"name": "Anamalai Hills",
"location": "Anamalai Hills · Tamil Nadu · IN · 1,100–1,400 m elevation"
},
"pricePerKgUsd": 32.4,
"availability": "illustrative_seed",
"isDemo": true,
"culinary": {
"form": "whole green pods",
"formNote": "whole green pods",
"usage": "about 10 pods yield 1.5 tsp seeds or 1 tsp ground; ground runs 2.0 g/tsp",
"approximate": true,
"measures": {
"tsp": {
"grams": 2,
"approximate": true,
"formNote": "whole green pods"
},
"tbsp": {
"grams": 6,
"approximate": true,
"formNote": "whole green pods"
},
"piece": {
"grams": 0.3,
"approximate": true,
"formNote": "whole green pods"
}
}
},
"imageAlt": "Bright green extra-bold cardamom pods from a smallholder co-op in the Anamalai Hills.",
"description": "Extra-bold single-origin green cardamom from the Anamalai Hills — hand-sorted at the estate, sun-dried on raised racks, and shipped in food-grade aluminum-lined bags. A1 grade pods (8+ mm) deliver an intensely aromatic, camphor-clean cup when cracked fresh."
}Shell request
curl -s /api/listings/lst-anamalai-cardamom-a1/api/listings/{listingIdOrSlug}/quote?oz={wholeOz}CatalogPricePreviewResponse
{
"listingId": "lst-anamalai-cardamom-a1",
"slug": "lst-anamalai-cardamom-a1",
"requestedOz": 100,
"pricedGrams": 2834,
"landedSubtotalCents": 11246,
"marginTotalCents": 2812,
"marginRateBp": 2500,
"shippingTotalCents": 2490,
"totalCents": 16548,
"currency": "USD",
"marginVersion": 2,
"tierTableVersion": 1,
"validUntilIso": "2026-09-10T00:00:00.000Z"
}Shell request
curl -s '/api/listings/lst-anamalai-cardamom-a1/quote?oz=100'/api/convert?listing={slug}&qty={n}&from={unit}&to={unit}Query parameters
{
"listing": "lst-anamalai-cardamom-a1",
"qty": 1,
"from": "tsp",
"to": "g"
}listing accepts a catalog id or slug; from is tsp, tbsp, cup, or piece; to is g or oz. Range-only measures return 422 because they cannot produce a priceable quantity.
Shell request
curl -s 'https://leafandlarder.com/api/convert?listing=lst-anamalai-cardamom-a1&qty=1&from=tsp&to=g'02 / rfq
RFQ
Submit buyer intent as a non-transactional request that issues a dated quote.
/api/rfqRfqSubmit JSON body
{
"listingId": "lst-anamalai-cardamom-a1",
"requestedOz": 100,
"buyerEmail": "procurement@example.com",
"shipTo": "Warehouse 4, Rotterdam",
"notes": "Palletized delivery preferred.",
"buyerAgentId": "agent-demo-01"
}requestedOz is a JSON number, not a string. shipTo and buyerEmail are required; notes and buyerAgentId are optional and bounded.
Shell request
curl -s -X POST /api/rfq -H 'content-type: application/json' -d '{"listingId":"lst-anamalai-cardamom-a1","requestedOz":100,"buyerEmail":"procurement@example.com","shipTo":"Warehouse 4, Rotterdam","notes":"Palletized delivery preferred.","buyerAgentId":"agent-demo-01"}'/api/rfq/{rfqId}RfqPublicRead
{
"id": "01ARZ3NDEKTSV4RRFFQ69G5FAV",
"quoteId": "01ARZ3NDEKTSV4RRFFQ69G5FAW",
"status": "received",
"createdAt": "2026-09-03T00:00:00.000Z",
"nonTransactional": true,
"isDemo": true
}Shell request
curl -s /api/rfq/01ARZ3NDEKTSV4RRFFQ69G5FAV03 / quote
Quote
Inspect the dated quote, then accept it idempotently if it is still eligible.
/api/quotes/{quoteId}QuoteRead
{
"id": "01ARZ3NDEKTSV4RRFFQ69G5FAW",
"rfqId": "01ARZ3NDEKTSV4RRFFQ69G5FAV",
"listingId": "lst-anamalai-cardamom-a1",
"listingName": "Bold Green Cardamom, A1 Grade",
"requestedOz": 100,
"pricedGrams": 2834,
"pricePerGramMilliCents": 3240,
"freightPerGramMilliCents": 410,
"dutyPerGramMilliCents": 81,
"insurancePerGramMilliCents": 16,
"inboundHandlingPerGramMilliCents": 220,
"unitLandedMilliCentsPerGram": 3967,
"landedSubtotalCents": 11246,
"shippingTotalCents": 2490,
"marginTotalCents": 2812,
"marginRateBp": 2500,
"totalCents": 16548,
"currency": "USD",
"marginVersion": 2,
"tierTableVersion": 1,
"validUntil": "2026-09-10T00:00:00.000Z",
"status": "received",
"createdAt": "2026-09-03T00:00:00.000Z",
"nonTransactional": true,
"isDemo": true
}Shell request
curl -s /api/quotes/01ARZ3NDEKTSV4RRFFQ69G5FAW/api/quotes/{quoteId}/acceptOrderAcceptedResponse
{
"id": "01ARZ3NDEKTSV4RRFFQ69G5FAX",
"quoteId": "01ARZ3NDEKTSV4RRFFQ69G5FAW",
"rfqId": "01ARZ3NDEKTSV4RRFFQ69G5FAV",
"buyerEmail": "procurement@example.com",
"shipTo": "Warehouse 4, Rotterdam",
"notes": "Palletized delivery preferred.",
"status": "accepted",
"paymentState": "unpaid",
"totalCents": 16548,
"currency": "USD",
"createdAt": "2026-09-03T00:00:00.000Z"
}Shell request
curl -s -X POST /api/quotes/01ARZ3NDEKTSV4RRFFQ69G5FAW/accept04 / order
Order verification
Verify the accepted order using a redacted response safe for public possession links.
/api/orders/{orderId}OrderVerificationRead
{
"id": "01ARZ3NDEKTSV4RRFFQ69G5FAX",
"quoteId": "01ARZ3NDEKTSV4RRFFQ69G5FAW",
"rfqId": "01ARZ3NDEKTSV4RRFFQ69G5FAV",
"status": "accepted",
"paymentState": "unpaid",
"totalCents": 16548,
"currency": "USD",
"createdAt": "2026-09-03T00:00:00.000Z"
}Shell request
curl -s /api/orders/01ARZ3NDEKTSV4RRFFQ69G5FAX/api/orders/{orderId}/mark-paidOrderMarkPaid JSON body
{
"note": "Settled by founder review"
}The note is optional and capped at 240 characters. The x-founder-key header is required; never expose its value in client code or logs.
Shell request
curl -s -X POST /api/orders/01ARZ3NDEKTSV4RRFFQ69G5FAX/mark-paid -H "x-founder-key: $FOUNDER_REVIEW_KEY" -H 'content-type: application/json' -d '{"note":"Settled by founder review"}'Live workflow surfaces
Ids become verification links.
Use the ids from the RFQ receipt, quote read, and accepted order response to populate the live human-readable surfaces. The ids in this page are illustrative only; do not treat them as live records. The order verification view intentionally omits buyer email, shipTo, notes, and payment notes.
/quote/{quoteId}Review the issued quote./verify/rfq/{rfqId}Verify RFQ status./verify/quote/{quoteId}Verify quote status./verify/order/{orderId}Verify the redacted order.