You are reading v0, which is retired on 2026-06-30. It is kept online for existing integrations only. Read the v1 version.

REST API reference

Every endpoint, the scope it needs, its cursor pagination contract and a runnable curl and TypeScript sample.

Version v0 · updated 2026-02-01

The reference below is generated from the same route table the gateway dispatches on. If an endpoint is served, it is documented; if it is documented, it is served. There is no hand-maintained second copy to drift.

Base URL and versioning#

https://api.framique.com/api/public/v1

The version lives in the path. Additive changes (a new field, a new endpoint) ship inside v1; anything that could break a client gets a new version and a sunset date announced at least 90 days ahead.

Pagination#

  • `limit` is clamped server-side to 100; asking for more is not an error, it is silently capped.
  • `cursor` is opaque and signed positionally by (timestamp, id). Do not parse it.
  • A tampered cursor is treated as no cursor — you get page one, not a 500.
  • `next_cursor` is null on the last page. That is the only end-of-stream signal.

Idempotency#

Every non-GET request must carry an `Idempotency-Key`. Replaying the same key with the same body returns the original response; replaying it with a different body is a 409. Keys are retained for 24 hours.

curl -s -X POST "https://api.framique.com/api/public/v1/products" \
  -H "Authorization: Bearer $FRAMIQUE_API_KEY" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{"title":"Jamdani saree","price_minor":450000,"currency":"BDT"}'

Endpoints#

Framique public REST API endpoints
EndpointWhat it doesSamples
GET/meIdentity of the calling credential
GET/ordersList orders (cursor paginated)
GET/orders/{id}Fetch one order
POST/orders/{id}/notesAppend an order note
GET/productsList products (cursor paginated)
GET/products/{id}Fetch one product
POST/productsCreate a draft product
GET/customersList customers (cursor paginated)
GET/exportsList export jobs
POST/exportsStart an export job
GET/exports/{id}Export job detail + signed URL
GET/webhooksList webhook endpoints
POST/webhooksRegister a webhook endpoint
DELETE/webhooks/{id}Delete a webhook endpoint
GET/themesList installed themes
GET/themes/{id}Fetch one installed theme
GET/themes/{id}/assetsList a theme's CSS, font and image assets
POST/themes/{id}/activateActivate a theme on the storefront
GET/marketplace/themesList published marketplace themes
GET/products

Read-only, against a demo store. Requires products.read on a real credential.

Same call as curl
curl -s -X GET "https://api.framique.com/api/public/v1/products" \
  -H "Authorization: Bearer $FRAMIQUE_API_KEY"