Public API v1

Public API documentation

A contract for catalog, orders, statuses and attachments. Storefront keys are created and revoked only in the workspace.

01

Your first request in a minute.

Create a storefront key in the workspace, pass it as a header, and start from the current catalog.

  1. 01

    Create an API key in storefront settings.

  2. 02

    Fetch the catalog and save the ID of the required product.

  3. 03

    Create an order with an Idempotency-Key and track its status.

Request example
curl https://your-domain.example/v1/games \
  -H "Authorization: Bearer $REDLINE_API_KEY"
02

Authentication

Pass a storefront key only in the Authorization header. Never put it into a URL, browser code, or a public repository.

Headers
Authorization: Bearer $REDLINE_API_KEY
03

Endpoints

Open an endpoint to review its fields, request and response. Every example is copyable.

Only enabled games that currently accept new orders.

Headers

AuthorizationBearer API keyrequired
Request example
curl https://your-domain.example/v1/games \
  -H "Authorization: Bearer $REDLINE_API_KEY"
Response example · 200 OK
{
  "items": [{
    "id": "7e877979-8f42-4a82-a75b-c856fd334f6d",
    "slug": "genshin-impact",
    "name": "Genshin Impact",
    "description": "Genesis Crystals by player UID.",
    "image_url": "/images/games/genshin.svg",
    "required_fields": [
      {"key": "uid", "semantic_key": "player_uid", "label": "Player UID", "required": true},
      {"key": "server", "label": "Server", "required": true}
    ]
  }]
}
04

Errors

Errors return a stable code and request_id — include it when contacting support.

401403409422429
409 Conflict
{
  "code": "insufficient_balance",
  "message": "Insufficient storefront balance.",
  "request_id": "f782ee21f84c49dfbe9a6fe2c31ab830",
  "fields": {},
  "details": {
    "balance_usd": "0.40",
    "required_usd": "0.99"
  }
}
05

Webhooks

After an order changes, Redline sends a signed event to the storefront URL. Verify the signature before processing JSON.

Event lifecycle
Order events:
order.accepted — the order was accepted; order.processing — an operator is fulfilling it.
order.waiting_for_code — request a code from the customer before code_expires_at and submit it through the API.
order.review — the result is under review; do not refund the customer and wait for the next event.
order.returned — the order was returned to the storefront (terminal; do not refund automatically).
order.cancel_requested — cancellation was requested but has not yet been approved.
order.completed — the order was completed (terminal).
order.cancelled — the order was cancelled and the refund was confirmed by the CRM (terminal).
order.priority_updated — only the priority changed.

Terminal statuses: completed, cancelled, returned. No more status events follow them.
order.completed
{
  "id": "7dd041b1-1ca6-4d16-ad17-8a684ce73ce4",
  "event": "order.completed",
  "api_version": "v1",
  "occurred_at": "2026-08-01T12:10:00Z",
  "order": {
    "id": "ORD-B5A77AB057",
    "external_id": "STORE-1042",
    "status": "completed",
    "updated_at": "2026-08-01T12:10:00Z",
    "message": null
  }
}