[GET] Offer detail
* Authentication
Required Authorization
Limit throttle:30,1
Endpoint [GET] - /shop-api/pre-order/get/{offer_id}
Headers
Authorization
Yes
Shop public API key Bearer token
Content-Type
Yes
application/json
1. Request Payload
Path parameter (no JSON body).
id
path
integer | string
Yes
Offer (profile) ID
Example
GET /shop-api/pre-order/get/123
Authorization: Bearer token ************2. Success Response 200
{
"success": true,
"data": {
"id": 123,
"offer_name": "Summer Pre-order",
"start_date": "2026-08-01 00:00:00",
"end_date": "2026-09-30 23:59:59",
"countdown_before_preorder_start": true,
"countdown_before_preorder_end": false,
"apply_to": "product",
"preorder_condition_inventory": "outofstock",
"fulfillment_status": "ON_HOLD",
"fulfillment_shipping_date": "2026-10-15",
"turn_on_continue_selling_when_preorder_start": true,
"turn_off_continue_selling_when_preorder_end": true,
"status": 1,
"products": [
{
"product_id": 7890123456789,
"variant_id": 4567890123456,
"limit": 100
},
{
"product_id": 7890123456790,
"variant_id": 4567890123457,
"limit": null
}
],
"full_payment_discount_type": "percentage",
"full_payment_discount_value": 10,
"partial_payment_value": 30,
"partial_payment_value_type": "percentage",
"partial_payment_discount_value": 5,
"partial_payment_discount_type": "percentage",
"partial_payment_remaining_balance_charge_date": "2026-10-01"
}
}Difference from List: Detail returns the full products list stored on the offer. List only returns a sample first product when apply_to = product.
3. Response Keys & Fields
Top-level
success
boolean
true when the offer is found
data
object
Offer detail object
data offer object
id
integer
Offer ID
offer_name
string
Offer name
start_date
string | null
Pre-order start datetime
end_date
string | null
Pre-order end datetime; null if unlimited / not set
countdown_before_preorder_start
boolean
Countdown before start enabled
countdown_before_preorder_end
boolean
Countdown before end enabled
apply_to
string
product | collection | all
preorder_condition_inventory
string
Inventory trigger, e.g. now, outofstock, instock
fulfillment_status
string | null
ON_HOLD | UNFULFILLMENT | SCHEDULED
fulfillment_shipping_date
string
Present when fulfillment uses exact shipping date
fulfillment_after_checkout
mixed
Present when fulfillment uses days after checkout
turn_on_continue_selling_when_preorder_start
boolean
Auto-enable continue selling when offer starts
turn_off_continue_selling_when_preorder_end
boolean
Auto-disable continue selling when offer ends
status
integer | null
Offer status
1 is active 0 is draft
products
array
Only when apply_to = product
collection_id
integer
Only when apply_to = collection
collection_name
string
Optional collection title when stored on the offer
full_payment_discount_type
string
Full-payment discount type percentage fixed
full_payment_discount_value
number
Full-payment discount value
partial_payment_value
number | null
Deposit / partial amount (only if partial payment enabled)
partial_payment_value_type
string
Partial amount type (percentage | fixed)
partial_payment_discount_value
number
Discount on partial payment
partial_payment_discount_type
string
Partial discount type (percentage | fixed)
partial_payment_remaining_balance_charge_date
string | null
Remaining balance charge date (exact-time trigger)
product_id
integer
Shopify product ID
variant_id
integer
Shopify variant ID
limit
integer | null
Unit limit; null = unlimited
Conditional fields by apply_to
apply_to
Included fields
product
products
collection
collection_id (+ optional collection_name)
all
neither
Conditional fulfillment / payment fields
Exact shipping date
fulfillment_shipping_date
Days after checkout
fulfillment_after_checkout
Mutual exclusivity
Only one of the two fulfillment timing fields
Partial payment enabled
partial_payment_* fields
4. Failed Response
Unauthorized — 401
Missing ID — HTTP 200
Offer not found — HTTP 200
Returned when the ID does not exist, or belongs to another shop.
Unexpected server error — HTTP 200
Last updated
Was this helpful?