Skip to main content

Documentation Index

Fetch the complete documentation index at: https://docs.quickshops.app/llms.txt

Use this file to discover all available pages before exploring further.

The Quickshops Headless API is a REST API that lets you build fully custom storefronts on top of your Quickshops store. Instead of using a Quickshops-managed template, you fetch store data, manage carts, and initiate checkout from your own frontend or backend using standard HTTP requests. All responses are JSON.

Base URL

https://api.quickshops.app/v1
All examples in this documentation use this base URL. Use it directly when making requests with your API key.

Versioning

The API is currently at version v1. The version is part of the URL path. Breaking changes will be introduced under a new version prefix, and the previous version will continue to work during a deprecation window.

Routes

The table below lists every available endpoint, whether authentication is required, and whether a secret key is needed.
MethodPathAuth requiredSecret key required
GET/v1/healthNoNo
GET/v1/products/storeYesNo
GET/v1/productsYesNo
GET/v1/products/:productIdYesNo
GET/v1/cart/:cartIdYesYes
POST/v1/cartYesYes
POST/v1/cart/:cartId/linesYesYes
PATCH/v1/cart/:cartId/lines/:productIdYesYes
DELETE/v1/cart/:cartId/lines/:productIdYesYes
DELETE/v1/cart/:cartIdYesYes
POST/v1/checkout/sessionYesYes
POST/v1/subscription/portalYesYes

Authentication

Every protected request requires an x-api-key header containing a headless API key obtained from your dashboard.
curl https://api.quickshops.app/v1/products \
  -H "x-api-key: qk_your_key_here"
Product read endpoints accept any valid key. Cart, checkout, and subscription endpoints require a secret key. See Authentication for details on key types and how to obtain them.

Rate limiting

Rate limits are enforced per key and per endpoint. If you exceed a limit you will receive a 429 response. Back off and retry after a short delay. The specific limits vary by endpoint category.

Error format

All errors return a JSON body with the following shape:
{
  "status": 401,
  "code": "MISSING_OR_INVALID_API_KEY",
  "message": "Missing or invalid API key",
  "requestId": "req_01j..."
}
FieldTypeDescription
statusnumberHTTP status code.
codestringMachine-readable error code.
messagestringHuman-readable description of the error.
requestIdstringUnique identifier for the request, useful for debugging.