Syncing Products
Qraga offers a CRUD API for real-time product synchronization. Additionally, we provide a bulk API for the initial creation of products.
Create an API key;
Ensure to copy your api key before closing the dialog.
API Endpoints
Qraga API endpoints are based in the US region at https://api-us.qraga.com
Currently, the United States region is the sole region available.
Base API structure https://${API_URL}/v1/site/${site_id}
Products API
Qraga product objects contains variants. Each product must have at least one variant. Single product variants are simply the product without variants.
Sample product object;
{ "title": "V-Neck T-Shirt", "description": "Elevate your everyday wardrobe with the V-Neck T-Shirt, a versatile staple crafted for ultimate comfort and timeless style. Made from soft, breathable 100% cotton, this classic design features clean lines and a tailored fit that flatters all body types. Perfect for casual outings, layering, or pairing with your favorite jeans. Designed with durability and ease in mind, it’s an essential piece for any season.", "categories": [ "apparel & accessories", "clothing", "clothing tops", "t-shirts" ], "tags": [ "fashion", "comfortable", "casual", "breathable" ], "features": { "color_options": [ "Green", "Blue" ], "size_options": [ "XL", "S", "L", "M" ], "age-group": [ "Adults" ], "target-gender": [ "Male" ], "fabric": [ "Cotton" ], "neckline": [ "V-neck" ], "sleeve-length-type": [ "Short" ], "color-pattern": [ "Green", "Blue" ], "size": [ "XL", "S", "L", "M" ] }, "variants": [ { "id": "44564309147701", "title": "Green / XL", "price": { "amount": 1400, "currency": "USD", "discount": 0, "amount_before_discount": 0 }, "inventory_quantity": 1, "features": { "color": "Green", "size": "XL" }, "images": [ "https://cdn.shopify.com/s/files/1/0678/0010/5013/files/prompts_tshirts_vneck_1.png?v=1750759951" ] }, { "id": "44564309180469", "title": "Green / S", "price": { "amount": 1400, "currency": "USD", "discount": 0, "amount_before_discount": 0 }, "inventory_quantity": 1, "features": { "color": "Green", "size": "S" }, "images": [ "https://cdn.shopify.com/s/files/1/0678/0010/5013/files/prompts_tshirts_vneck_1.png?v=1750759951" ] }, { "id": "44564309213237", "title": "Green / L", "price": { "amount": 1400, "currency": "USD", "discount": 0, "amount_before_discount": 0 }, "inventory_quantity": 1, "features": { "color": "Green", "size": "L" }, "images": [ "https://cdn.shopify.com/s/files/1/0678/0010/5013/files/prompts_tshirts_vneck_1.png?v=1750759951" ] }, { "id": "44564309246005", "title": "Green / M", "price": { "amount": 1400, "currency": "USD", "discount": 0, "amount_before_discount": 0 }, "inventory_quantity": 1, "features": { "color": "Green", "size": "M" }, "images": [ "https://cdn.shopify.com/s/files/1/0678/0010/5013/files/prompts_tshirts_vneck_1.png?v=1750759951" ] }, { "id": "44564309278773", "title": "Blue / XL", "price": { "amount": 1400, "currency": "USD", "discount": 0, "amount_before_discount": 0 }, "inventory_quantity": 2, "features": { "color": "Blue", "size": "XL" }, "images": [ "https://cdn.shopify.com/s/files/1/0678/0010/5013/files/prompts_tshirts_vneck_3.png?v=1750759951" ] }, { "id": "44564309311541", "title": "Blue / S", "price": { "amount": 1400, "currency": "USD", "discount": 0, "amount_before_discount": 0 }, "inventory_quantity": 2, "features": { "color": "Blue", "size": "S" }, "images": [ "https://cdn.shopify.com/s/files/1/0678/0010/5013/files/prompts_tshirts_vneck_3.png?v=1750759951" ] }, { "id": "44564309344309", "title": "Blue / L", "price": { "amount": 1400, "currency": "USD", "discount": 0, "amount_before_discount": 0 }, "inventory_quantity": 2, "features": { "color": "Blue", "size": "L" }, "images": [ "https://cdn.shopify.com/s/files/1/0678/0010/5013/files/prompts_tshirts_vneck_3.png?v=1750759951" ] }, { "id": "44564309377077", "title": "Blue / M", "price": { "amount": 1400, "currency": "USD", "discount": 0, "amount_before_discount": 0 }, "inventory_quantity": 2, "features": { "color": "Blue", "size": "M" }, "images": [ "https://cdn.shopify.com/s/files/1/0678/0010/5013/files/prompts_tshirts_vneck_3.png?v=1750759951" ] } ], "slug": "v-neck-t-shirt", "id": "7921908613173" }
id*: This field represents the unique identifier of the product saved to Qraga. It is recommended to use the original product id to facilitate easy tracking.
slug: This field is optional and can be utilized by setting it at the Site configuration of the product path for recommendation URLs.
title*: This is a text field used for the title of the product.
description: This field contains the text describing the product.
categories: This is an array of strings that defines the category of the product hierarchy. It is used for searching, comparing, and recommending products, as well as scoping rules and documents with category.
tags: This is an array of strings that defines distinctive keywords. Rules and documents can be scoped with tags.
features: These are key-value objects for the base product. Common features should be put in the base, while distinctive features should be put in the variants.
variants: This is an array of variants, with each product having at least one variant. For single products, one variant should be created.
id*: This is the id for the variant. For single variant products, you can set this as 'default'.
title*: This is the title for the variant. For single variant products, you can set this as 'default title'.
price: This is the price object for the variant. For single variant products, this represents the actual product price.
amount: This field contains the actual price value for the variant.
amount_before_discount: This field contains the price value before any discount is applied.
discount: This field represents the discount applied to the variant/product, if applicable.
currency: This field represents the currency value to display at the widget. The values must be ISO 4217 currency codes.
inventory_quantity: This is a numeric integer value representing the quantity of the variant/product.
features: These are variant-specific features stored as key-value objects.
Images: This is an array of image URLs. The URLs must be publicly available, as Qraga does not save or host them.
*fields are mandatory
- Bulk Product Create
curl -X POST "${API_URL}/v1/site/${site_id}/products/bulk" \ -H "Content-Type: application/x-ndjson" \ -H "Authorization: ${API_KEY}" \ --data-binary "@sample_products.ndjson"
sample_products.ndjson file contains product data at each row contains new line at the end.
product_object_1\n product_object_2\n
Bulk product creation is best suited for initial product catalog sync.
- Single Product Creation
curl -X POST "${API_URL}/v1/site/${site_id}/products" \ -H "Content-Type: application/json" \ -H "Authorization: ${API_KEY}" \ -d @product.json
If you create a new product with same id, it will completely be overridden.
- Single Product Update
curl -X PUT "${API_URL}/site/${site_id}/products/${PRODUCT_ID}" \ -H "Content-Type: application/json" \ -H "Authorization: ${API_KEY}" \ -d @update_product.json
Update api expects full product data with updated information.
- Get A Product
curl -X GET "${API_URL}/site/${site_id}/products/${PRODUCT_ID}" \ -H "Authorization: ${API_KEY}"
- Delete A Product
curl -X DELETE "${API_URL}/site/${site_id}/products/${PRODUCT_ID}" \ -H "Authorization: ${API_KEY}"
We encourage you to contact us regarding API client requests for specific languages.