Skip to main content
DocumentationREST API overview
REST API

REST API overview

Use familiar HTTP endpoints to build storefronts, dashboards, automations, and back-office workflows on Aly.

The conventional HTTP surface at /api/storefront/v1/ — public storefront endpoints and scoped merchant endpoints.

The REST API is the conventional HTTP surface — the same operations the dashboard editor uses, exposed under /api/storefront/v1/. It splits into two halves:public storefront endpoints for buyers and merchant endpoints behind scoped bearer auth for operators.

At a glance

Base path/api/storefront/v1/
Public authNone — guest carts and checkout are allowed.
Merchant authBearer (aly_* or aly_oauth_*).
FormatJSON. Amounts are minor units (cents).
OpenAPIopenapi.json (3.1)

Storefront half

Public endpoints for reading the catalog and running checkout. No bearer required.

  • Catalog — stores, products, collections, search.
  • Cart + checkout — create cart, manage items, apply coupons, initiate Stripe checkout.

Merchant half

Scoped endpoints for managing products, orders, customers, webhooks, media, analytics.

Status codes

CodeWhen
200Success.
201Resource created.
204Success, no body (delete).
400Validation failure. error.details lists fields.
401Missing or invalid bearer.
403Scope insufficient or workspace mismatch.
404Resource not found.
409Idempotency conflict or state-machine guard.
422Operation refused (e.g. fulfilling a cancelled order).
429Rate limited.

Pagination

List endpoints accept ?limit=&cursor= and return next_cursorwhen more pages are available. Cursors are opaque; don't try to parse them.

bash
curl "https://aly.store/api/storefront/v1/stores/acme/products?limit=20"

Errors

json
{  "error": {    "code": "validation_failed",    "message": "Body did not pass validation.",    "details": [      { "path": "line_items.0.quantity", "code": "too_small", "min": 1 }    ]  }}
OpenAPI is the source of truth
Every endpoint, request body, and response model lives in openapi.json. Use it to generate clients in your language of choice — see Generating clients.

Next steps

Updated

Was this page helpful?