Skip to main content

Products

Retrieve a paginated list of products available in a specific shop, filtered by market.

List Products

string
required
Unique identifier for the shop
string
required
Market identifier (e.g. DE for Germany)
Filter products and SKUs by name
integer
default:"0"
Page number (0-indexed)
integer
default:"50"
Results per page (max 150)
Required permission: product:read

Example Request

Response

Response Fields

Error Responses

Check Live Stock

Check whether one or more SKUs are currently available in the requested quantities before the checkout starts.
string
required
Unique identifier for the shop
Required permission: product:read
Live stock is checked against Shopify’s current available inventory for the mapped product variants. This includes inventory already held by Shopify orders and draft-order reservations.

Request Body

Each sku_uid can appear only once per live stock request.

Example Request

Available Response

When all requested quantities are available, the endpoint returns 200 OK.

Unavailable Response

When at least one requested quantity is not available, the endpoint returns 409 Conflict.

Response Fields

Error Responses

Reserve Products

Create a Shopify draft order with a 24-hour inventory reservation before prescriptions are available. Use the returned draft order ID later as reserved_draft_order_id when uploading signed prescriptions.
string
required
Unique identifier for the shop
Required permission: create_prescription_checkout
The reservation request does not include prescriptions or patient data. RxScale adds telemedicine provider attributes from the API key automatically.
The API key must be linked to a telemedicine provider. Requests with a non-telemedicine API key are rejected with 400 Bad Request before any inventory is held, because the resulting draft order could not be matched on the later prescription upload.

Request Body

Each sku_uid can appear only once per reservation request. Duplicate SKU lines are rejected because the later prescription upload must match each reserved draft-order line unambiguously.

Example Request

Response

The draft_order.id is the Shopify legacy DraftOrder ID, not the Shopify GID. Pass this value to POST /v2/public-api/prescriptions/{shop_identifier} as reserved_draft_order_id after the prescriptions are signed.

Error Responses