Welcome to the API documentation for Quickbutik! Our API has resource-orientated, predictable URLs which use HTTP codes to indicate the status for the call. All results will be returned in JSON, including error messages. We hope this makes it easy to work with.
The Quickbutik API endpoint is always: https://api.quickbutik.com/v1
All feature requests, feedback or technical questions are greatly appreciated: support@quickbutik.com.
Happy coding!
All calls are made using the Basic Authorization authentication method that is sent with all calls. This is used to identify you as an API user with the Quickbutik you would like access to.
Basic Authorization is the easiest method for managing access and permissions in a standardized way. It mainly consists of an HTTP Authorization Basic header followed by the user information (username and password) - encoded with base64.
For calls to the Quickbutik API, use the API key as username and password. api_key:api_key (base64-encoded).
Example header would look like this:
Authorization: Basic YXBpX2tleV9oZXJlOmFwaV9rZXlfaGVyZQ ==
Your API key
can be created and managed in Quickbutik’s control panel under ** Settings> API ** by the store owner.
All API calls must be made over HTTPS. All calls with standard HTTP are denied and the same for calls without authentication.
Update: Have you already been working with Quickbutik API before? The older authentication method (apiKey-query) will be discontinued shortly and we therefore recommend that you update to the above authentication method.
This section lists all changes to the API by date.
2021-12-08
- Added
billing_details
toorder.customer
.
2021-12-01
- Added
refunds
to theget
orders endpoints.
2021-06-03
- Added
paymethod_activate
-field to PUTorders
-endpoint.
2021-04-01
- Added
countries
-field toshippingmethod
-endpoint.
2020-11-23
- Added a
delete
-endpoint to products. - Added ability to add and update
images
to products.
2020-11-02
- The
include_details
option can be used on the ordersget
-endpoints in order to show additional details, including the products contained in the order.
2020-10-16
- Added custom product fields to the
get
products endpoints.
2020-10-07
- Added
price
field to thecreate
&update
orders endpoints. - Added
total_weight
to theget
orders endpoints. - Custom Payment methods now visible in paymethods endpoints.
- The
include_details
option can be used on the productsget
-endpoints in order to show additional details, such as variants. This includes custom data fields. - Added
category_id
,category_name
andcategory_path
to productsget
-endpoints.
2020-09-08
- Added
qty
field toorder.products
- Added
currency
field toorder.payment
Fetch products in store
Request parameters
Specific id for product
The maximum number of rows returned. The default is 100, and the value may not exceed 500.
The amount of rows to skip before returning. This can be used to loop through all objects if there are more than the limit allows to be returned.
Indicates whether or not details (such as variants and images) are returned. Default is false for multiple products, true for single products.
Request body
Responses
(without product_id)
(with product_id)
Product/s could not be found
Specific product requested, full product information return.
GET https://api.quickbutik.com/v1/products?product_id=123 HTTP/1.1
Content-Type: application/json
Non specific request - 50 latest products returns (product information summary only - not full).
GET https://api.quickbutik.com/v1/products HTTP/1.1
Content-Type: application/json
Create and add products to store
Request body
Article Number (SKU)
Product title
Product description. Accepts HTML.
Price
Compare price
Purchase price (excl. vat)
VAT percent (%)
Weight (in grams)
Stock quantity
Stock: Disable minus quantity?
EAN-number / GTN (Global Trade Item Number)
Category name if product should be placed into a new category.
Visibility in store
An array containing one or more sub-arrays with a required url and an optional alttext.
[
[
"url": "https://quickbutik.com/logo.png",
"alttext": "Our logo"
],
[
"url": "https://quickbutik.com/logo2.png",
"alttext": "Our second logo"
]
]
Responses
Product created, returns array of created product ids.
Body
An error occurred.
[
{
"sku": "SHIRT-123",
"title": "T-shirt",
"description":"<p><strong>This is so cool!</strong> Heee</p>",
"price": 199
},
"created": [
{
"product_id": 1
}
],
"success": 1
]
[
{
"sku": "SHIRT-123",
"title": "T-shirt",
"description":"<p><strong>This is so cool!</strong> Heee</p>",
"price": 199
},
{
"sku": "SHIRT-333",
"title": "T-shirt Special",
"description":"<p><strong>This is so so cool!</strong> Heee</p>",
"price": 399
},
"created": [
{
"product_id": 1
},
{
"product_id": 2
}
],
"success": 1
]
Update products in store.
Product can be identified by product_id/variant_id or directly with SKU/Article Number if unique.
Request body
Product id - which you would like to update.
Product variant id (if specific variant)
(OR) Article Number - on product/variant which you would like to update.
Product title
Price
Compare price
Purchase price (excl. vat)
VAT percentage (%)
Stock quantity
Stock location
Disable minus stock (dont allow the stock to go negative)
Product description
EAN number (GTIN)
Supplier name
Supplier SKU/article number
Data field #1
Data field #2
Data field #3
SEO description (if specific)
SEO title (if specific)
Weight (in grams)
An array containing one or more sub-arrays with a required url and an optional alttext.
[
[
"url": "https://quickbutik.com/logo.png",
"alttext": "Our logo"
],
[
"url": "https://quickbutik.com/logo2.png",
"alttext": "Our second logo"
]
]
Responses
Product updated
Body
An error occurred.
An error occurred.
[
{
"sku": "SHIRT-123",
"title": "T-shirt",
"description":"<p><strong>This is so cool!</strong> Heee</p>",
"supplier_name": "Shirt Factory",
"supplier_sku": "SHIRT-WHITE-123",
"datafield_1": "CustomData",
"gtin": "Shirt-100BNMB"
}
]
[
{
"sku": "SHIRT-123",
"title": "ASUS",
"title": "T-shirt",
"description":"<p><strong>This is so cool!</strong> Heee</p>",
"supplier_name": "Shirt Factory",
"supplier_sku": "SHIRT-WHITE-123",
"datafield_1": "CustomData",
"gtin": "Shirt-100BNMB"
},
{
"product_id": 1,
"variant_id": 2,
"price": 123
},
{
"sku": "SHIRT-123",
"price": 120
}
]
Fetch store orders.
Request parameters
Order number for the order you would like to load
Fetch paid orders since a specific date. UNIX timestamp should be used here.
Fetch paid orders up to a specific date. UNIX timestamp should be used here.
Fetch orders since a specific status transition date. UNIX timestamp should be used here.
Fetch orders with a specific status. Can be used together with from_date_paid parameter.
Optional. Used together with a specific order_id and will return app specific order data (such as productproperties from the order).
Indicates whether or not details (such as products contained in the order) are returned. Default is false for multiple orders, true for single orders.
Request body
Responses
with order_id
Body
(without order_id)
Body
Specific order: 12345, full order information.
GET https://api.quickbutik.com/v1/orders?order_id=12345 HTTP/1.1
Content-Type: application/json
None specific order, summarized order information (not full).
GET https://api.quickbutik.com/v1/orders?from_date_paid=1596097247&status=1 HTTP/1.1
Content-Type: application/json
Create new order and add order content. Status for new orders will always be set to unpaid (can be updated with Update order status request).
Request body
Must be of value create to create a new order.
Responses
Body
POST https://api.quickbutik.com/v1/orders HTTP/1.1
Content-Type: application/json
[
{
"order_id": "create",
"customer": {
"type": "business",
"email": "kalle@anka.com",
"phone": "+46123456789",
"shipping_details": {
"company_name": "Name AS",
"firstname": "Kalle",
"lastname": "Anka Ankesson",
"address": "Gladagatan 10",
"address2": "",
"city": "Ankeborg",
"zipcode": "12345",
"country": "SE, DK, NO"
}
},
"shipping": {
"id": 1,
"name": "Postnord Parcel Special"
},
"products": [
{
"sku": "SHIRT-123"
}
]
}
]
curl -X POST "http://api.quickbutik.com/v1/v1/orders" \
-H "Content-Type: application/json" \
-d '[
{
"order_id": "create",
"customer": {
"type": "business",
"email": "kalle@anka.com",
"phone": "+46123456789",
"shipping_details": {
"company_name": "Name AS",
"firstname": "Kalle",
"lastname": "Anka Ankesson",
"address": "Gladagatan 10",
"address2": "",
"city": "Ankeborg",
"zipcode": "12345",
"country": "SE, DK, NO"
}
},
"shipping": {
"id": 1,
"name": "Postnord Parcel Special"
},
"products": [
{
"sku": "SHIRT-123"
}
]
}
]'
Update orders and add/modify order content.
Request body
Enter order_id you would like to update with content
Responses
Body
the updated order_id
PUT https://api.quickbutik.com/v1/orders HTTP/1.1
Content-Type: application/json
[
{
"order_id": 12345,
"customer": {
"type": "business",
"email": "kalle@anka.com",
"phone_number": "+46123456789",
"shipping_details": {
"company_name": "Name AS",
"firstname": "Kalle",
"lastname": "Anka Ankesson",
"address": "Gladagatan 10",
"address2": "",
"city": "Ankeborg",
"zipcode": "12345",
"country": "SE, DK, NO"
},
"newsletter_subscribe": "true",
"login_create": ""
},
"payment": {
"method": "MySaleChannel",
"transaction_id": ""
},
"shipping": {
"id": 1,
"name": "Postnord Parcel",
"price": ""
},
"products": [
{
"sku": "SHIRT-123",
"product_id": ""
}
],
"discount_add": {
"amount": 100
}
}
]
HTTP/1.1 200 OK
Content-Type: application/json
{
"results": {
"12345": {
"order_id": 55750,
"success": 1
}
}
}
curl -X PUT "http://api.quickbutik.com/v1/v1/orders" \
-H "Content-Type: application/json" \
-d '[
{
"order_id": 12345,
"customer": {
"type": "business",
"email": "kalle@anka.com",
"phone_number": "+46123456789",
"shipping_details": {
"company_name": "Name AS",
"firstname": "Kalle",
"lastname": "Anka Ankesson",
"address": "Gladagatan 10",
"address2": "",
"city": "Ankeborg",
"zipcode": "12345",
"country": "SE, DK, NO"
},
"newsletter_subscribe": "true",
"login_create": ""
},
"payment": {
"method": "MySaleChannel",
"transaction_id": ""
},
"shipping": {
"id": 1,
"name": "Postnord Parcel",
"price": ""
},
"products": [
{
"sku": "SHIRT-123",
"product_id": ""
}
],
"discount_add": {
"amount": 100
}
}
]'
Change order state (status) for one or more orders.
Request body
Enter order_id you would like to update status on.
Changes state of the order.
Valfritt: I samband med status done.
Spårningsnummer
Fraktföretag
Valfritt: I samband med status done. Skicka fraktbekräftelse till kund?
Valfritt: I samband med status paid.
Valfritt: I samband med status done. Default är true.
Valfritt: I samband med status paid.
Valfritt: I samband med status paid. Two-letter language code (ISO 639-1).
Responses
Body
Mark order paid. Order confirmation will be sent to customer.
[
{
"order_id": 55750,
"status": "paid"
}
]
Mark order paid. Order confirmation will NOT be sent to the customer (use case: if taken care of from the third party system).
[
{
"order_id": 55750,
"status": "paid",
"email_confirmation": false
}
]
[
{
"order_id": 55750,
"status": "paid",
"email_confirmation": false
},
{
"order_id": 55750,
"status": "paid",
"email_confirmation": false
}
]
[
{
"order_id": 1111,
"status": "done"
},
{
"order_id": 2222,
"status": "done",
"shipping_info": {
"trackingnumber": "NAJ10192938",
"company": "Postnord"
}
}
]
[
{
"order_id": 1111,
"status": "paid"
},
{
"order_id": 2222,
"status": "done",
"shipping_info": {
"trackingnumber": "NAJ10192938",
"company": "Postnord"
}
},
{
"order_id": 3333,
"status": "cancelled"
}
]
Fetch store shipping methods.
Request parameters
Optional. Enter if you would like to fetch a specific shipping_id.
Request body
Responses
Body
Lists the countries this shipping method is able to ship to.
Fetch store payment methods
Request parameters
Optional. Enter if you would like to fetch a specific payment method.
Request body
Responses
Body
Fetch store categories
Request parameters
Optional. Enter if you would like to fetch data from a specific category_id.
Request body
Responses
Body
Returns NULL if this category is main
{scope}
/{id}
{scope}
/{id}
{scope}
/{id}
{scope}
/{id}
strong textGet metadata for selected scope and id
Path variables
order|product|customer
Id of the selected scope. E.g when scope is “product” and id is 1, metadata for product with id 1 will be returned
Responses
Body
value
GET https://api.quickbutik.com/v1/v1/metadata/product/1 HTTP/1.1
HTTP/1.1 200 OK
Content-Type: application/json
{
"topseller": "yes",
"external.id": "abc-123"
}
{scope}
/{id}
Add metadata to selected scope.
Path variables
order|product|customer
Id of the selected scope. E.g when scope is “product” and id is 1, metadata for product with id 1 will be returned
Request body
POST https://api.quickbutik.com/v1/v1/metadata/{scope}/{id} HTTP/1.1
Content-Type: application/json
[
{
"key": "external.id",
"value": "abc-123"
}
]
POST https://api.quickbutik.com/v1/v1/metadata/{scope}/{id} HTTP/1.1
Content-Type: application/json
[
{
"key": "topseller",
"value": "yes"
},
{
"key": "external.id",
"value": "cde-456"
}
]
{scope}
/{id}
Update metadata to selected scope. Delete when empty value
Path variables
order|product|customer
Id of the selected scope. E.g when scope is “product” and id is 1, metadata for product with id 1 will be returned
Request body
PUT https://api.quickbutik.com/v1/v1/metadata/product/1 HTTP/1.1
Content-Type: application/json
[
{
"key": "topseller",
"value": "yes"
},
{
"key": "external.id",
"value": "cde-456"
}
]
PUT https://api.quickbutik.com/v1/v1/metadata/product/1 HTTP/1.1
Content-Type: application/json
[
{
"key": "external.id",
"value": ""
}
]
If customer.type is business, please specify a company_name.
Two-letter country code (ISO 3166-1 alpha-2 format)
Two-letter country code (ISO 3166-1 alpha-2 format)
{
"type": "consumer",
"email": "kalle@anka.com",
"phone_number": "+46123456789",
"shipping_details": {
"firstname": "Kalle",
"lastname": "Anka Ankesson",
"address": "Gladagatan 10",
"address2": "",
"city": "Ankeborg",
"zipcode": "12345",
"country": "SE, DK, NO"
},
"newsletter_subscribe": "true",
"login_create": ""
}
{
"type": "business",
"email": "kalle@anka.com",
"phone_number": "+46123456789",
"shipping_details": {
"company_name": "Bolaget AB",
"firstname": "Kalle",
"lastname": "Anka Ankesson",
"address": "Gladagatan 10",
"address2": "",
"city": "Ankeborg",
"zipcode": "12345",
"country": "SE, DK, NO"
},
"newsletter_subscribe": "true",
"login_create": ""
}
Optional. Enter if purchase is not made in store checkout.
Optional. Order reference from the payment method.
Must be one of the example values.
Leave as null or dont specify at all.
{
"method": null,
"transaction_id": null
}
Specify method and transaction_id for reference.
{
"method": "MySaleChannel",
"transaction_id": "ABC-QWERY-123456-1"
}
shippingmethod_id (from the /shippingmethods available in the store)
Shipping method name (optional, uses title from shippingmethod otherwise if id specified)
Shipping amount (optional, uses price from shippingmethod otherwise if id specified)
{
"id": 1,
"name": "Postnord Parcel",
"price": "49"
}
Specify products in this order. When used, all other existing products in the order will be removed and be replaced with the ones specified here.
Specify products in this order. When used, all other existing products in the order will be removed and be replaced with the ones specified here.
Optional. You can use this parameter, or product_id/variant_id parameters, to identify product.
The quantity of this product in the order. Defaults to 1.
[
{
"sku": "SHIRT-123"
},
{
"product_id": 10,
"variant_id": 43
},
{
"product_id": 10,
"variant_id": null
}
]
Specify the content of the order through SKUs only.
[
{
"sku": "SHIRT-123"
},
{
"sku": "GLASS-456"
},
{
"sku": "TIE-789"
}
]
[
{
"product_id": 10
"variant_id": 59
},
{
"product_id": 11,
"variant_id": 60
},
{
"product_id": 329
}
]
Optional. If you would like to add products from the order. You can pass multiple objects/products into this parameter, to add multiple at once.
Optional. If you would like to add products from the order. You can pass multiple objects/products into this parameter, to add multiple at once.
Optional. You can use this parameter, or product_id/variant_id parameters, to identify product.
[
{
"sku": "SHIRT-123"
},
{
"product_id": 10,
"variant_id": 43
},
{
"product_id": 10,
"variant_id": null
}
]
[
{
"sku": "SHIRT-123"
},
{
"sku": "GLASS-456"
},
{
"sku": "TIE-789"
}
]
Optional. If you would like to remove products from the order. You can pass multiple objects/products into this parameter, to remove multiple at once.
Optional. If you would like to remove products from the order. You can pass multiple objects/products into this parameter, to remove multiple at once.
Optional. You can use this parameter, or product_id/variant_id parameters, to identify product.
[
{
"sku": "SHIRT-123"
},
{
"product_id": 10,
"variant_id": 43
},
{
"product_id": 10,
"variant_id": null
}
]
[
{
"sku": "SHIRT-123"
},
{
"sku": "GLASS-456"
},
{
"sku": "TIE-789"
}
]
Optional. Set only if you would like to add a discount for this order.
Optional. Set only if you would like to add a discount for this order.
Valfritt. Ange rabattvärde.
Specify if you would like to add a discount value on the order.
{
"amount": 100
}
Optional. Set only if you would like to add a discount for this order.
Optional. Set only if you would like to add a discount for this order.
Boolean (true) if you would like to remove the current discount added for the order.
true
Webhooks can be activated by the store owner in Quickbutiks control panel.
A webhook can be seen as a technical notice or “pling” that tells a third party that a certain event has occurred. It can be a new incoming order or something else. We call this an event Event and Events can send Webhooks (notice of an event) to one / several specified urls.
All Events are sent with GET parameters, always consisting of at least event_type
which tells what the event is.
Webhooks are most often used together with the API to obtain the necessary additional information.
Example
- Webhook with Event
order.new
is received in your system. With that, you get the order number that then can be used to load the complete order via the API to process/handle it further.
Available Events:
order
- event_type: order.new
New order (paid). Sent with parameter
order_id
.
- event_type: order.done
Order marked as done (sent). Sent with parameter
order_id
.
- event_type: order.cancelled
Order marked as cancelled. Sent with parameter
order_id
.
product
- event_type: product.add
Product added. Sent with parameter
product_id
.
- event_type: product.update
Product updated. Sent with parameter
product_id
.
- event_type: product.delete
Product deleted. Sent with parameter
product_id
.