Public API documentation
A contract for catalog, orders, statuses and attachments. Storefront keys are created and revoked only in the workspace.
Your first request in a minute.
Create a storefront key in the workspace, pass it as a header, and start from the current catalog.
- 01
Create an API key in storefront settings.
- 02
Fetch the catalog and save the ID of the required product.
- 03
Create an order with an Idempotency-Key and track its status.
curl https://your-domain.example/v1/games \
-H "Authorization: Bearer $REDLINE_API_KEY"Authentication
Pass a storefront key only in the Authorization header. Never put it into a URL, browser code, or a public repository.
Authorization: Bearer $REDLINE_API_KEYEndpoints
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 keyrequiredcurl https://your-domain.example/v1/games \
-H "Authorization: Bearer $REDLINE_API_KEY"{
"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}
]
}]
}Errors
Errors return a stable code and request_id — include it when contacting support.
{
"code": "insufficient_balance",
"message": "Insufficient storefront balance.",
"request_id": "f782ee21f84c49dfbe9a6fe2c31ab830",
"fields": {},
"details": {
"balance_usd": "0.40",
"required_usd": "0.99"
}
}Webhooks
After an order changes, Redline sends a signed event to the storefront URL. Verify the signature before processing JSON.
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.{
"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
}
}