Get started
API Endpoint
https://api.bigvanet.com/v3
The Qstomizer API provides programmatic access to read the customizations data made with the Qstomizer App. Retrieve a list of customization orders, order details, high-resolution design files, etc.
To use this API, you need an V3 API key. You can get an API key from the App backend. You need to have subscribed to a specific subscription Plan. Check the website for more details. Please contact us at info@bigvanstudio.com if you have any doubt.
To make a call, it is necessary to pass the API key in the header of the call with the format API_KEY. See the examples for more info.
get orders
Get a list of product customizations included in orders.
# Here is a curl example
curl \
--location \
--request GET 'https://api.bigvanet.com/v3/orders?shop=mystore.myshopify.com
&date_start=2000-01-01 00:00:00
&date_end=2022-12-31 23:59:59
&limit=2
&included_in_order=1' \
--header 'API_KEY: [YOUR V3 API KEY]'
# Here is a NodeJS example using Axios
var axios = require('axios');
var config = {
method: 'get',
url: 'https://api.bigvanet.com/v3/orders?shop=mystore.myshopify.com
&date_start=2000-01-01 00:00:00
&date_end=2022-12-31 23:59:59
&limit=2',
headers: {
'API_KEY': '[YOUR V3 API KEY]'
}
};
axios(config)
.then(function (response) {
console.log(JSON.stringify(response.data));
})
.catch(function (error) {
console.log(error);
});
# Here is a PHP example using CURL
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => 'https://api.bigvanet.com/v3/orders?shop=mystore.myshopify.com
&date_start=2000-01-01%2000:00:00
&date_end=2022-12-31%2023:59:59
&limit=2',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => '',
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 0,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => 'GET',
CURLOPT_HTTPHEADER => array(
'API_KEY: [YOUR V3 API KEY]'
),
));
$response = curl_exec($curl);
curl_close($curl);
echo $response;
CALL (GET):
https://api.bigvanet.com/v3/orders
Result example :
{
"statusCode": 200,
"headers": {
"Content-type": "application/json",
"access-control-allow-origin": "*",
"API": "Qstomizer API v3.0"
},
"body": {
"version": 3,
"error": false,
"error_message": "",
"data": [
{
"order_id": 779092,
"order_date": "2022/09/01 01:43",
"status_id": 1,
"status_date": "2022/09/01 01:43",
"hex_color": "",
"template_id": 522273,
"product_title": "2\" x 2\" Custom Rubber Stamp - No Handle / No Ink",
"comments": "",
"user_notes": "Please, contact us before proceed.",
"user_agent": ""
},
{
"order_id": 779092,
"order_date": "2022/09/01 01:43",
"status_id": 1,
"status_date": "2022/09/01 01:43",
"hex_color": "",
"template_id": 512275,
"product_title": "2\" x 2\" Custom Rubber Stamp - Add Handle / No Ink",
"comments": "",
"user_notes": "Please, contact us before proceed.",
"user_agent": ""
}
]
}
}
QUERY PARAMETERS
| Field | Type | Description |
|---|---|---|
| shop | String | Shopify store URL with the format [merchanstore].myshopify.com. Example: mystore.myshopify.com
|
| date_start | String | Start date with the format YEAR-MONTH-DAY HOUR:MINUTE:SECOND. |
| date_end | String | End date with the format YEAR-MONTH-DAY HOUR:MINUTE:SECOND. |
| limit | Number | (optional - default 25) A limit on the number of objects to be returned, between 1 and 250. |
RESULTS
| Field | Type | Description |
|---|---|---|
| order_id | Number | ID of the customization order in the Qstomizer system. |
| order_date | String | Date and hour of the customization with the format YEAR-MONTH-DAY HOUR:MINUTE. |
| status_id | Number |
Status of the order. Possible values: 1: Pending 2: Stopped 3: In Production 4: Finished 5: Canceled 6: Deleted 7: Artwork approval pending |
| status_date | String | Date and hour of the order status with the format YEAR-MONTH-DAY HOUR:MINUTE. |
| hex_color | String | Color of the product in Hexadecimal format. |
| template_id | Number | ID of the product template. |
| comments | String | Comments added by the merchant to the store. |
| user_notes | String | Notes added by the client to the customization order. |
| user_agent | String | Information about the device and browser where the customization was made. |
get order
Get information about a specific customization order. Each side in the response includes a design_hd_url field that you can use to download the high-resolution design file on demand (see Get HD Design below).
# Here is a curl example
curl \
--location \
--request GET 'https://api.bigvanet.com/v3/order?shop=mystore.myshopify.com
&orderId=1727839' \
--header 'API_KEY: [YOUR V3 API KEY]'
# Here is a NodeJS example using Axios
var axios = require('axios');
var config = {
method: 'get',
url: 'https://api.bigvanet.com/v3/order?shop=mystore.myshopify.com&orderId=1727839',
headers: {
'API_KEY': '[YOUR V3 API KEY]'
}
};
axios(config)
.then(function (response) {
console.log(JSON.stringify(response.data));
})
.catch(function (error) {
console.log(error);
});
# Here is a PHP example using CURL
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => 'https://api.bigvanet.com/v3/order?shop=mystore.myshopify.com&orderId=1727839',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => '',
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 0,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => 'GET',
CURLOPT_HTTPHEADER => array(
'API_KEY: [YOUR V3 API KEY]'
),
));
$response = curl_exec($curl);
curl_close($curl);
echo $response;
CALL (GET):
https://api.bigvanet.com/v3/order
Result example :
{
"statusCode": 200,
"headers": {
"Content-type": "application/json",
"access-control-allow-origin": "*",
"API": "Qstomizer API v3.0"
},
"body": {
"version": 3,
"error": false,
"error_message": "",
"data": {
"customization_date": "2022/09/01 15:09",
"status_id": 1,
"status_date": "2022/09/01 15:09",
"hex_color": "",
"template_id": 52275,
"comments": "",
"user_notes": "Please, contact us before proceed.",
"user_agent": "",
"sides": [
{
"side_id": 8443,
"side_name": "Front",
"image_url": "https://cdn.bigvanet.com/mystore.myshopify.com/orderimages/r57tmGMP5GNABA5RVJ7pj0p3b1664443576571.jpg",
"design_png": "https://cdn.bigvanet.com/mystore.myshopify.com/orderimages/r57tmGMP5GNABA5RVADssJ7pj0p3b1664443576571.png",
"design_hd_url": "https://qstomizer.bigvanet.com/backend/index.php?page=apiGenerateDesign&id_order=1789921&sideid=8443",
"generator_tool": "https://qstomizer.bigvanet.com/generator_tool/?sideid=8443&orderid=1789921&orderkey=633564ba88044428mh6j6h6x6pwjm8mqwp6j6cwfu46lw86o6cmhwc68wjwcuewem",
"nodes": [
{
"type": "image",
"formatOrigen": "clipart",
"id": "grupoimage0",
"position": { "x": 308.94, "y": 160.99 },
"scale": { "x": 0.9505, "y": 0.9505 },
"rotation": 0,
"size": { "width": 200, "height": 202 },
"src": "https://cdn.bigvanet.com/clipart/people/00-png/basketball-player.png",
"keepRatio": true,
"globalScale": 1,
"isEditable": false,
"originalFileUrl": "https://cdn.bigvanet.com/clipart/people/00-png/basketball-player.png"
},
{
"type": "text",
"id": "grupotexto1",
"position": { "x": 321.78, "y": 365.14 },
"fill": "#ffe599",
"hasStroke": true,
"stroke": "#000000",
"strokeWidth": 1.97,
"align": "center",
"fontSize": 40,
"fontFamily": "Carter One",
"text": "BASKETBALL",
"fillpattern": "",
"scale": { "x": 0.6845, "y": 0.6845 },
"rotation": -5.208,
"keepRatio": true,
"lineHeight": 1,
"globalScale": 1,
"shadowEnabled": true,
"shadowColor": "#fff",
"shadowOffset": { "x": 0, "y": 0 },
"shadowBlur": 0
}
]
},
{
"side_id": 8414,
"side_name": "Back",
"image_url": "https://cdn.bigvanet.com/mystore.myshopify.com/orderimages/sZABUV0DTaVpcpRbZ6sDuIr2U1664443576548.jpg",
"design_png": "",
"design_hd_url": "https://qstomizer.bigvanet.com/backend/index.php?page=apiGenerateDesign&id_order=1789921&sideid=8414",
"generator_tool": "https://qstomizer.bigvanet.com/generator_tool/?sideid=8414&orderid=1789921&orderkey=633564ba880428mh6j6h6x6pwjm8mqwp6j6cwfu46lw86o6cmhwc68wjwcuewem",
"nodes": []
}
],
"options_selected": {
"variation_id": "32277",
"option1": "Size",
"option1_value": "Small",
"option2": "Color",
"option2_value": "White",
"option3": null,
"option3_value": null,
"color": "#FFFFFF",
"color_des": "White",
"variantSelected": {
"id": 42232624808105,
"title": "Small / White",
"price": "500.00",
"sku": "",
"inventory_quantity": 1000,
"qty": 1
},
"isProductSummary": true
},
"orders": [
{
"shopify_order_id": 4889333336255,
"shopify_order_name": "#3891",
"shopify_id_product": 7504436314495,
"shopify_variant_id": 42618944895551,
"quantity": 1
}
]
}
}
}
QUERY PARAMETERS
| Field | Type | Description |
|---|---|---|
| shop | String | Shopify store URL with the format [merchanstore].myshopify.com. Example: mystore.myshopify.com
|
| orderId | Number | Id of the customization order in the Qstomizer system. |
RESULTS
| Field | Type | Description |
|---|---|---|
| customization_date | String | Date and hour of the customization with the format YEAR-MONTH-DAY HOUR:MINUTE. |
| status_id | Number |
Status of the order. Possible values: 1: Pending 2: Stopped 3: In Production 4: Finished 5: Canceled 6: Deleted 7: Artwork approval pending |
| status_date | String | Date and hour of the order status with the format YEAR-MONTH-DAY HOUR:MINUTE. |
| hex_color | String | Color of the product in Hexadecimal format. |
| template_id | Number | ID of the product template. |
| comments | String | Comments added by the merchant to the order. |
| user_notes | String | Notes added by the client to the customization order. |
| user_agent | String | Information about the device and browser where the customization was made. |
| orders | JSON |
Information about the Shopify orders that contain this customization. The customer can order this product one or more times. shopify_order_id: The Shopify internal ID of the order. shopify_order_name: The order name used by the merchant (e.g. #1046). shopify_id_product: ID of the product in Shopify. shopify_variant_id: ID of the product variant in Shopify. quantity: Quantity ordered. |
| sides | JSON |
Customization data separated by product sides. Each side contains: side_id: ID of the side. side_name: Name of the side (e.g. Front, Back). image_url: URL of the customization preview image for that side. design_png: URL of the design in PNG format, cropped using the die-cut lines. design_hd_url: Endpoint to request the high-resolution design file on demand. Requires your API_KEY header. See Get HD Design. generator_tool: URL that opens the generator tool to access and download the design. nodes: JSON array with all the design element specs (images and texts used to create the design). options_selected: JSON object with the product variation selected by the customer. |
get hd design
Returns a temporary signed URL to download the high-resolution design file (PNG or PDF) for a specific order side. The file is generated on demand using the product's print settings and cached automatically for subsequent requests.
This is a two-step workflow: first call Get Order to retrieve the design_hd_url for each side,
then call that URL with your API_KEY header to get the signed download link.
# Here is a curl example
curl \
--location \
--request GET 'https://qstomizer.bigvanet.com/backend/index.php
?page=apiGenerateDesign
&id_order=1789921
&sideid=8443' \
--header 'API_KEY: [YOUR V3 API KEY]'
# Here is a NodeJS example using Axios
var axios = require('axios');
// Step 1 — get the order to obtain design_hd_url for each side
var orderRes = await axios.get('https://api.bigvanet.com/v3/order', {
params: { shop: 'mystore.myshopify.com', orderId: 1789921 },
headers: { 'API_KEY': '[YOUR V3 API KEY]' }
});
var sides = orderRes.data.body.data.sides;
// Step 2 — request the HD file for each side
for (var side of sides) {
var hdRes = await axios.get(side.design_hd_url, {
headers: { 'API_KEY': '[YOUR V3 API KEY]' }
});
if (hdRes.data.ok) {
console.log('Side:', side.side_name);
console.log('Download URL:', hdRes.data.url); // signed S3 URL, valid 15 min
console.log('Expires at:', hdRes.data.expires_at);
console.log('Cached:', hdRes.data.cached);
}
}
# Here is a PHP example using CURL
function getHDDesignUrl($designHdUrl, $apiKey) {
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => $designHdUrl,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => '',
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => 'GET',
CURLOPT_HTTPHEADER => array(
'API_KEY: ' . $apiKey
),
));
$response = json_decode(curl_exec($curl), true);
curl_close($curl);
return $response;
}
// Step 1 — get the order
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => 'https://api.bigvanet.com/v3/order?shop=mystore.myshopify.com&orderId=1789921',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_CUSTOMREQUEST => 'GET',
CURLOPT_HTTPHEADER => array('API_KEY: [YOUR V3 API KEY]'),
));
$order = json_decode(curl_exec($curl), true);
curl_close($curl);
// Step 2 — download HD file for each side
foreach ($order['body']['data']['sides'] as $side) {
$result = getHDDesignUrl($side['design_hd_url'], '[YOUR V3 API KEY]');
if ($result['ok']) {
// $result['url'] is a signed S3 URL valid for 15 minutes
file_put_contents('side_' . $side['side_id'] . '.png', file_get_contents($result['url']));
}
}
CALL (GET):
https://qstomizer.bigvanet.com/backend/index.php?page=apiGenerateDesign
Result example :
{
"ok": true,
"url": "https://s3.amazonaws.com/qstomizeruserimages/mystore.myshopify.com/hd/order-1789921-side-8443.png?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Expires=900&...",
"expires_at": "2025-06-09T16:00:00Z",
"cached": false
}
REQUEST HEADERS
| Header | Required | Description |
|---|---|---|
| API_KEY | Yes |
Your V3 API Key. Also accepted as x-api-key or Authorization: Bearer <key>.
|
QUERY PARAMETERS
| Field | Type | Description |
|---|---|---|
| page | String | Must be apiGenerateDesign. |
| id_order | Number |
Qstomizer customization order ID. Obtained from Get Orders or Get Order.
|
| sideid | Number |
Side ID to generate. Obtained from sides[].side_id in the Get Order response.
|
RESULTS
| Field | Type | Description |
|---|---|---|
| ok | Boolean |
true if the HD file was generated or retrieved successfully.
|
| url | String | Signed S3 URL to download the HD design file. Valid for 15 minutes. Download the file before it expires; after that, call this endpoint again to get a fresh URL. |
| expires_at | String | ISO 8601 datetime indicating when the signed URL expires. |
| cached | Boolean |
true if the file was already cached from a previous request (faster response). false if it was generated fresh.
|
ERROR RESPONSES
| HTTP Code | error value | Description |
|---|---|---|
| 401 | Missing API_KEY header | No API_KEY header was included in the request. |
| 401 | Invalid API_KEY | The API key does not exist or the account does not have API access. |
| 400 | Missing id_order or sideid | One or both required parameters are missing or zero. |
| 404 | Order not found | The order does not exist or does not belong to your store. |
| 429 | quota_exceeded | Monthly HD generation limit reached for your subscription plan. |
| 503 | (generation error) | The HD file generation failed. Wait a few seconds and retry. |