NAV undefined
undefined

Introduction

Welcome to the Sqquid.com API! You can use our API to access a store's catalog information or modify inventory levels. At Sqquid, each account is identified with a unique catalog which has products, product attributes, inventory, integrations, and orders.

Throttling

The rate limits are designed to allow your system to make steady requests over time while also having the capacity to make infrequent bursts. The rate limits use a leaky bucket algorithm. The bucket size and leak rate properties determine the API's burst behavior and request rate.

Rate Limit: 2 per second
Bucket Size: 40

If the bucket size is exceeded, then an HTTP 429 Too Many Requests error is returned. The bucket empties at a leak rate of two requests per second. To avoid being throttled, you can build your system to average two requests per second.

Authentication

Key Based Authentication

This is the preferred authentication method for system integrations with Sqquid's API. Each account is able to manage their API keys through the dashboard. It is possible to have multiple API keys as needed and name them to identify which app uses which key.

To use this authentication method, the 3rd party application provides this API key and Sqquid returns a token that can be used for any subsequent API calls until it expires.

API Keys should be used as one per application and we encourage this integration method for all your needs.

POST https://api.sqquid.com/v1/login

Content-Type: application/json

{
   "api_key": "APP_API_KEY"
}

Response

Content-Type: application/json
Status: 200

{"token": "eyJhbGciOiJIUzI1NiIsfdfsdfsI6IkpXVCJ9.eyJ1c2VybmFtZSI6InRlc3RwcmVsInVzZXJfaWQiOjE3LCJlbWFpbCI6InRlc3RwcmVzcy5pbkBnbWFpbC5jb20iLCJleHAiOjE0NDc4MzMyMjl9.Ik_yi4lHbNbrRGhqmRpsW82Nls_O9lgXakk_syV-vSw"}

HTTP Request

POST https://api.sqquid.com/v1/login

Request Body

key type description
api_key string The app-specific api key (obtained via the UI)

Response

The response will return a token which should be prefixed with Bearer and included in all API requests to the server in a header that looks like the following:

Authorization: Bearer auth-token-string

(You must replace auth-token-string with the token you got from the response.)

User Based Authentication

For ad-hoc API operations it is possible to authenticate using your account's username and password. Same as the other, it will return a token that can be used to authenticate any subsequent API calls until it expires.

Please make sure you take all security measures if using this authentication mechanism, including where you store the credentials on your end.

POST https://api.sqquid.com/v1/login

Content-Type: application/json

{
   "username": "your@email.com",
   "password": "password"
}

Response

Content-Type: application/json
Status: 200

{"token": "eyJhbGciOiJIUzI1NiIsfdfsdfsI6IkpXVCJ9.eyJ1c2VybmFtZSI6InRlc3RwcmVsInVzZXJfaWQiOjE3LCJlbWFpbCI6InRlc3RwcmVzcy5pbkBnbWFpbC5jb20iLCJleHAiOjE0NDc4MzMyMjl9.Ik_yi4lHbNbrRGhqmRpsW82Nls_O9lgXakk_syV-vSw"}

This endpoint provides an authentication token to get access to private resources in Sqquid.

HTTP Request

POST https://api.sqquid.com/v1/login

Request Body

The username and password should be sent as a JSON object in the body of the request.

key type description
username string Username of the user (right now an email address)
password string Password of the user

Response

The response will return a token which should be prefixed with Bearer and included in all API requests to the server in a header that looks like the following:

Authorization: Bearer auth-token-string

(You must replace auth-token-string with the token you got from the response.)

Products

Get Products Count

Successful products count response:

{
    "Products": 1000
}

This endpoint gets the number of orders since a specified date (or all if dates are blank). This also intended to use alongside the page and output limits associated with /products API endpoint.

HTTP Request

GET https://api.sqquid.com/v1/products/count

Query Parameters

Parameter Required Description
created_at_min optional Count products created after date
(format: 2017-09-25T16:15:47-04:00)
updated_at_min optional Count products created after date
(format: 2017-09-25T16:15:47-04:00)

Get Products

Successful orders response:

{
    "Products": [
        {
            "id": 123,
            "sku": "645506-493-123",
            "name": "Women's Challenge Ss Jersey - Game Royal/white",
            "description": "Women's Challenge SS Jersey - Game Royal/White",
            "short_description": "",
            "weight": null,
            "price": "40.0000",
            "price_special": "34.0000",
            "price_msrp": null,
            "created_at": "2017-08-30T17:20:40.000Z",
            "updated_at": "2017-08-30T17:20:40.000Z",
            "Attributes": [
                {
                    "label": "Brand",
                    "value": "Acme",
                },
                {
                    "label": "Color1",
                    "value": "GAME ROYAL"
                },
                {
                    "label": "Color2",
                    "value": "WHITE"
                }
            ],
            "Categories": [
                "Team"
            ],
            "Child_Products": [
                {
                    "id": 124,
                    "sku": "1523532750",
                    "name": "Women's Challenge Ss Jersey - Game Royal/white",
                    "description": "Wmn's Challenge Jsy Royal",
                    "short_description": "645506-493",
                    "weight": "1.5000",
                    "price": "40.0000",
                    "price_special": "34.0000",
                    "price_msrp": null,
                    "created_at": "2017-08-30T17:20:40.000Z",
                    "updated_at": "2017-08-30T17:20:41.000Z",
                    "Attributes": [
                        {
                            "label": "Size",
                            "value": "M",
                        },
                        {
                            "label": "Brand",
                            "value": "Acme"
                        },
                        {
                            "label": "ALU",
                            "value": "884776750365"
                        }
                    ],
                    "qty": 1
                }
            ]
        }
    ]
}

This endpoint retrieves a list of products with all the associated order details.

HTTP Request

GET https://api.sqquid.com/v1/products

URL Parameters

Parameter Required Description
limit optional Amount of results (default: 50) (maximum: 250)
page optional Page to show (default: 1)
created_at_min optional Count products created after date
(format: 2017-09-25T16:15:47-04:00)
updated_at_min optional Count products updated after date
(format: 2017-09-25T16:15:47-04:00)

Update Product Inventory

Successful orders response:

{
    "message": "success"
}

This endpoint retrieves a list of products with all the associated order details.

HTTP Request

POST https://api.sqquid.com/v1/products/inventory/update

URL Parameters

Parameter Required Description
sku required String or comma-separated list of product SKUs (list max 250)
qty required Integer or comma-separated list of integers (list max 250)

Products (New!)

Overview

Use our products API to create and manage products. A product in Sqquid is a global object that contains all of your data related to a specific product in your catalog. That includes: Sku/Style/Barcode, name, description, pricing data, brand, any other data, and the variants to the product itself such as color or size. Each channel has a copy of the global product data and can have channel specific data that will make it unique per channel. Some operations are only done on the global products such as create and delete. Some operations can be done on both the global and/or channel specific products: update, list.

Sqquid's product APIs can be used by POS and ERP systems to sync catalog information. This includes new product creation, updating, and deleting. When a POS or ERP system manages the catalog we recommend using the global product exclusively. This way the user can modify each channel with Sqquid's Merchandiser tool which is available from the dashboard.

Products in Sqquid

Products in Sqquid have a 2 layers structure of parent and child. The child product represents the variation of the product. Products have 1 or more variations and you have access to fully configurable variation attributes.

Products are flexible and can acommodate any number of attributes and/or variations. The minimal requirement for a product is a SKU and 1 variation. The variation carries the inventory location information for the products.

It is possible to filter and sort the product list results with the following defined product data fields:

Field Name Type Required Searchable Sortable Default
sku string Yes Yes Yes N/A
name string No Yes Yes ""
description string No Yes No ""
alu string No Yes No ""
price float No No No NULL
price_special float No No No NULL
brand string No Yes Yes ""
data Object No No No {}
attributes Object No No No {}
created_at
(read only)
Datetime Yes No Yes N/A
updated_at
(read only)
Datetime Yes No Yes N/A

List products

This endpoint allows you to list the products in your catalog. Products can be listed with or without filters. Filters can be applied with any combination of the optional parameters. The list result can be sorted by a specified field or it will be sorted by the "created_at" field by default. This endpoint allows pagination and a maximum limit of 200 products per page. You can also choose to retrieve variants along with the products with a flag.

GET https://api.sqquid.com/v2/products?channel_id=1&variants=true&sort=name&sort_direction=asc Retrieve products with its variants

Response

Content-Type: application/json
Status: 200

{
    "total": 3,
    "limit": 20,
    "offset": 0,
    "results": [
        {
            "sku": "9023",
            "price": 32.00,
            "price_special": 4.45,
            "name": "Adidas Supernova",
            "alu": "",
            "description": "my Adidas Supernova shoes",
            "brand": "Adidas",
            "created_at": "2020-03-24T19:35:58.000Z",
            "updated_at": "2020-03-24T22:07:12.000Z",
            "variants": [],
            "data": {}
        },
        {
            "sku": "333556",
            "price": 54.40,
            "name": "Asics Nimbus 20",
            "brand": "Asics",
            "description": "",
            "alu": "",
            "created_at": "2020-03-24T19:35:58.000Z",
            "updated_at": "2020-03-24T22:07:12.000Z",
            "variants": [
                {
                    sku: "111111111",
                    "name": "",
                    "alu": "",
                    "description": "",
                    "brand": "",
                    "created_at": "2020-03-24T19:35:58.000Z",
                    "updated_at": "2020-03-24T22:07:12.000Z",
                    "attributes": {
                        "color": "Red",
                        "size": "9.5"
                    },
                    "data": {
                        "weight": 9
                    }
                }
            ]
        },
        {
            "sku": "11122006",
            "name": "Mizuno Wave 9",
            "description": "These are some super awesome shoes",
            "brand": "Mizuno",
            "alu": "212214415535266436",
            "created_at": "2020-03-24T19:35:58.000Z",
            "updated_at": "2020-03-24T22:07:12.000Z",
            "variants": [],
            "data": {
                "categories": [
                    ["Some", "Category"],
                    ["Another", "Special", "List"]
                ]
            }
        }
    ]
}

GET https://api.sqquid.com/v2/products?channel_id={channel_id}

Querystring Parameters

key type description
channel_id integer (required) export channel id for products retrieved
search string (optional) Search string (match in description, brand, and name)
skus string (optional) comma separated list of skus to filter by
brand string (optional) filter by a specific brand
sort string (optional) sort by a specific field. The field must be sortable (see the table). Default is "created_at"
sort_direction string (optional) sort direction, either "asc" or "desc". defaults to "asc"
variants boolean (optional) retrieve products with variants. 'true' or 'false' (default)
limit integer (optional) limits the amount of results. Default 20. Maximum 200
offset integer (optional) results to skip, for pagination

Errors

Status Code Error code Message
401 NotAuthenticated The auth token was not provided or is invalid
403 Forbidden The user doesn't have permission to perform this operation
500 Fatal <Variable, internal error message>

Create a product

Create a new global product. A copy of the product is created for each channel. If a product with the sku provided already exists, it updates the product.

Note: products don't hold inventory, product variations do. Hence it is key that once a product was created the matching variation will also be created, then a matching inventory record can be created.

POST https://api.sqquid.com/v2/products

Content-Type: application/json

{
    "sku": "00933321",
    "price": 34.22,
    "name": "Mizuno Wave 9",
    "description": "some description",
    "brand": "Mizuno",
    "data": {
        "weight": 10,
        "short_description": "short"
    }
}

Response

Content-Type: application/json
Status: 200

{
    "sku": "00933321",
    "price": 34.22,
    "name": "Mizuno Wave 9",
    "description": "some description",
    "brand": "Mizuno",
    "data": {
        "short_description": "short",
        "weight": 10
    },
    "created_at": "2020-03-26T06:12:26.000Z",
    "updated_at": "2020-03-26T16:04:31.000Z"
}

POST https://api.sqquid.com/v2/products

Request Body

key type description
sku string (required) Unique sku for the product
name string (optional) Product name
brand string (optional) Product's brand
description string (optional) Product description
alu string (optional) The product's ALU
price number (optional) Price for the product. defaults to 0
price_special number (optional) Special price for the product
data object (optional) Object containing custom data you want stored

Errors

Status Code Error code Message
400 BadRequest Invalid format for request body. Please make sure you provide a valid JSON
401 NotAuthenticated The auth token was not provided or is invalid
403 Forbidden The user doesn't have permission to perform this operation
500 Fatal <Variable, internal error message>

Update a product

Updates a product for all export channels, or for a specific channel if provided. The object fields are merged (simple merge) with the existing value.

PATCH https://api.sqquid.com/v2/products/322542342

Content-Type: aplication/json

{
    "price": 34.22,
    "name": "Mizuno Wave 9",
    "description": "some description",
    "data": {
        "weight": 20
    }
}

Response

Content-Type: application/json
Status: 200

{
    "sku": "322542342",
    "price": 34.22,
    "name": "Mizuno Wave 9",
    "alu": "",
    "description": "some description",
    "brand": "Mizuno",
    "data": {
        "short_description": "short",
        "weight": 20
    }
    "created_at": "2020-03-26T06:12:26.000Z",
    "updated_at": "2020-03-26T16:04:31.000Z"
}

PATCH https://api.sqquid.com/v2/products/{sku}

URL Parameters

key type description
sku string sku of the product to be updated

Request Body

key type description
channel_id number (optional) If provided, updates the copy of the product for this channel only
name string (optional) Product name
brand string (optional) Product's brand
description string (optional) Product description
alu string (optional) The product's ALU
price number (optional) Price for the product. defaults to 0
price_special number (optional) Special price for the product
data object (optional) Object containing custom data you want stored

Errors

Status Code Error code Message
400 BadRequest Invalid format for request body. Please make sure you provide a valid JSON
401 NotAuthenticated The auth token was not provided or is invalid
403 Forbidden The user doesn't have permission to perform this operation
404 NotFound Product not found
500 Fatal <Variable, internal error message>

Delete a product

Deletes the product, along with all its variants

DELETE https://api.sqquid.com/v2/products/3234556
Delete product with sku 3234556

Response

Content-Type: application/json
Status: 200

"OK"

DELETE https://api.sqquid.com/v2/products/{sku}

URL Parameters

key type description
sku string sku of the product

Errors

Status Code Error code Message
401 NotAuthenticated The auth token was not provided or is invalid
403 Forbidden The user doesn't have permission to perform this operation
404 NotFound Product not found
500 Fatal <Variable, internal error message>

List product variants

This endpoint allows you to list the product variants. You can also get the channel-specific copy of them.

GET https://api.sqquid.com/v2/products/2344/variants?channel_id=1 Retrieve variants for product with sku 2344 on channel 1

Response

Content-Type: application/json
Status: 200

[
    {
        "sku": "9023",
        "alu": "329025982598598332905",
        "name": "",
        "brand": "",
        "description": "",
        "attributes": {
            "color": "Red",
            "size": "9.5"
        },
        "data": {},
        "created_at": "2020-03-24T19:35:58.000Z",
        "updated_at": "2020-03-24T22:07:12.000Z"
    },
    {
        "sku": "333556",
        "price_special": 4.40,
        "name": "SPECIAL BUY NOW - Mizuno Wave 9",
        "brand": "",
        "price": 34.00,
        "description": "",
        "data": {
            "weight": 2.3,
            "special_price_end": "2020-08-24T19:35:58.000Z"
        }
        "attributes": {
            "color": "Blue",
            "size": "10"
        }
        "created_at": "2020-03-24T19:35:58.000Z",
        "updated_at": "2020-03-24T22:07:12.000Z"
    }
]

GET https://api.sqquid.com/v2/products/{sku}/variants?channel_id={channel_id}

URL Parameters

key type description
sku string sku of the parent product

Querystring Parameters

key type description
channel_id integer (require) channel id for products retrieved

Errors

Status Code Error code Message
401 NotAuthenticated The auth token was not provided or is invalid
403 Forbidden The user doesn't have permission to perform this operation
500 Fatal <Variable, internal error message>

Create a product variant

Create a new product variant for all your channels. If a product variant with the sku provided already exists, it updates the variant

POST https://api.sqquid.com/v2/products/2344/variants

Content-Type: application/json

{
    "sku": "00933321",
    "price": 34.22,
    "name": "Mizuno Wave 9",
    "description": "some description",
    "brand": "Mizuno",
    "data": {
        "weight": 10,
        "short_description": "short"
    },
    "attributes": {
        "color": "Blue",
        "size": "10"
    }
}

Response

Content-Type: application/json
Status: 200

{
    "sku": "00933321",
    "price": 34.22,
    "name": "Mizuno Wave 9",
    "description": "some description",
    "brand": "Mizuno",
    "alu": "",
    "data": {
        "weight": 10,
        "short_description": "short"
    },
    "attributes": {
        "color": "Blue",
        "size": "10"
    }
    "created_at": "2020-03-26T06:12:26.000Z",
    "updated_at": "2020-03-26T16:04:31.000Z"
}

POST https://api.sqquid.com/v2/products/{sku}/variants

Request Body

key type description
sku string (required) Unique sku for the product
name string (optional) Product name
brand string (optional) Product's brand
description string (optional) Product description
alu string (optional) The product's ALU
price number (optional) Price for the product. defaults to 0
price_special number (optional) Special price for the product
data object (optional) Object containing custom data you want stored
attributes object variation attributes (such as color, size, width, etc)

Errors

Status Code Error code Message
400 BadRequest Invalid format for request body. Please make sure you provide a valid JSON
401 NotAuthenticated The auth token was not provided or is invalid
403 Forbidden The user doesn't have permission to perform this operation
500 Fatal <Variable, internal error message>

Update a product variant

Updates a product variant for all export channels, or for a specific channel if provided. The "data" field will be merged with the existing value. Same for the "attributes" field

PATCH https://api.sqquid.com/v2/products/2344/variants/45566 update variant with sku 45566 for product 2344

Content-Type: aplication/json

{
    "price": 34.22,
    "name": "Mizuno Wave 9AAA",
    "description": "description"
}

Response

Content-Type: application/json
Status: 200

{
    "sku": "00933321",
    "price": 34.22,
    "name": "Mizuno Wave 9AAA",
    "description": "description",
    "brand": "Mizuno",
    "alu": "",
    "data": {
        "weight": 10,
        "short_description": "short"
    },
    "attributes": {
        "color": "Blue",
        "size": "10"
    }
    "created_at": "2020-03-26T06:12:26.000Z",
    "updated_at": "2020-03-26T16:04:31.000Z"
}

PATCH https://api.sqquid.com/v2/products/{sku}/variants/{variantSku}

URL Parameters

key type description
sku string sku of the parent product
variantSku string sku of the product to be updated

Request Body

key type description
channel_id number (optional) If provided, updates the copy of the product for this channel only
name string (optional) Product name
brand string (optional) Product's brand
description string (optional) Product description
alu string (optional) The product's ALU
price number (optional) Price for the product. defaults to 0
price_special number (optional) Special price for the product
data object (optional) Object containing custom data you want stored
attributes object (optional) variation attributes (such as color, size, width, etc)

Errors

Status Code Error code Message
400 BadRequest Invalid format for request body. Please make sure you provide a valid JSON
401 NotAuthenticated The auth token was not provided or is invalid
403 Forbidden The user doesn't have permission to perform this operation
404 NotFound Product or variant not found
500 Fatal <Variable, internal error message>

Delete a product variant

Deletes a product variant

DELETE https://api.sqquid.com/v2/products/3234556/1234
Delete variant with sku 1234 for product with sku 3234556

Response

Content-Type: application/json
Status: 200

"OK"

DELETE https://api.sqquid.com/v2/products/{sku}/variants/{variantSku}

URL Parameters

key type description
sku string sku of the product
variantSku string sku of the product to be updated

Errors

Status Code Error code Message
401 NotAuthenticated The auth token was not provided or is invalid
403 Forbidden The user doesn't have permission to perform this operation
404 NotFound Product or variant not found
500 Fatal <Variable, internal error message>

Inventory

Sqquid's Inventory APIs allow users to set, update, get and/or delete inventory for products and specify quantities by location. The APIs are built to support small and large catalogs. There are two main concepts in order to achieve real time inventory data flow: full sync and partial sync. The full sync is meant to be used anywhere between once per day to once per week and serves as a regular reset with a bigger payload. The partial sync is meant to be used on demand for specific skus that have changed in real time. The combination of both concepts guarantees accurate inventory data consistent across the entire catalog and in real time.

Inventory Location

Sqquid offers a flexible inventory model to support catalogs with various scenarios. Each product variation or individual sku has a unique inventory record which is shared across all channels in the account. Sqquid's inventory record supports a couple of location levels: location and bin. Although less preferred, Sqquid's model supports inventory without location information by using default locations and default bins. It's possible to use locations and ignore bins.

Locations for inventory can be set before or after an inventory location record is created. Managing locations can be done via the dashboard or the Locations API

Product Inventory

Each inventory record maps to a product. Inventory can be set before or after a product was created. However, products without an inventory record will always produce 0 qty_on_hand. Inventory records without products are meaningless but can exist. Either options may happen temporarily until the product record to match is created.

Managing products can be done via the Products API

Defaults

In all endpoints of the inventory APIs, the following defaults are applied:

Default location - If no location is specified for an item, inventory will be assigned to a default location all accounts have. This way, if you don't need support for inventory by location you are not forced to use it.

Default bin - If no bin data is provided for a sku in any given location, we will assign the inventory to the "default" bin.

Update Inventory - Partial

This endpoint sets the inventory quantities by location for each specified skus. A partial update call can be structured one sku at a time and hit our API as frequently as needed (although keep in mind throttling) or it can aggregate several skus and send a batch at a time. There is no functional difference.

PATCH https://api.sqquid.com/v1/inventory/partial

Example 1: with inventory location and no bins

Content-Type: application/json

[
    {
        "sku": "609465503218",
        "inventory": [
            {
                "location_external_id": "50",
                "qty_on_hand": 3
            },
            {
                "location_external_id": "32",
                "qty_on_hand": 4
            }
        ]
    },
    {
        "sku": "609465503219",
        "inventory": [
            {
                "location_external_id": "50",
                "qty_on_hand": 30
            },
            {
                "location_external_id": "32",
                "qty_on_hand": 30
            }
        ]
    }
]

Example 2: with inventory location and bins

Content-Type: application/json

[
    {
        "sku": "609465503218",
        "inventory": [
            {
                "location_external_id": "50",
                "bin": "front",
                "qty_on_hand": 10
            },
            {
                "location_external_id": "50",
                "bin": "back",
                "qty_on_hand": 15
            },
            {
                "location_external_id": "32",
                "bin": "front",
                "qty_on_hand": 0
            }
        ]
    }
]

Example 3: inventory only, no location data (old)

Content-Type: application/json

[
    {
        "sku": "609465503219",
        "inventory": [
            {
                "qty_on_hand": 3
            }
        ]
    },
    {
        "sku": "609465503217",
        "inventory": [
            {
                "qty_on_hand": 100
            }
        ]
    }
]

Response

Content-Type: application/json
Status: 200

"OK"

HTTP Request

PATCH https://api.sqquid.com/v1/inventory/partial

Request Body

The body for this request is a JSON array with objects. Each object has a sku and an array of inventory location items. Each inventory location item must contain an attribute called qty_on_hand.

key type description
sku string (required) sku the inventory corresponds to
inventory array (required) array of inventory records for the product
inventory > qty_on_hand integer (required) quantity to set the inventory record to. Set within each inventory item.
inventory > location_external_id string (optional) external identifier for the store. if none is provided we set it to "default". Set within each inventory item.
inventory > bin string (optional) Bin for the inventory record. If none is provided, we set it to "default". Set within each inventory item.

Errors

Status Code Error code Message
400 BadRequest The request body is invalid
401 NotAuthenticated The auth token was not provided or is invalid
403 Forbidden The user doesn't have permission to perform this operation
500 Fatal <Variable, internal error message>

Notes

Update Inventory - Full

Similar to update inventory partial, this endpoint sets inventory quantities by location for each sku however it also assumes that the list sent is the complete list of active skus and anything outside of this list is out of stock. Hence any inventory in Sqquid for skus that were not included with the call will be set to 0.

PATCH https://api.sqquid.com/v1/inventory/full

Example of a full update. Any inventory records missing will be set to zero (0)

Content-Type: application/json

[
    {
        "sku": "609465503175",
        "inventory": [
            {
                "location_external_id": "6050",
                "qty_on_hand": 43
            },
        ]
    },
    {
        "sku": "609465503176",
        "inventory": [
            {
                "location_external_id": "50",
                "qty_on_hand": 32
            }
        ]
    },
    {
        "sku": "609465503177",
        "inventory": [
            {
                "location_external_id": "50",
                "qty_on_hand": 32
            }
        ]
    }
]

Response

Content-Type: application/json
Status: 200

"OK"

HTTP Request

PATCH https://api.sqquid.com/v1/inventory/full

Request Body

The body for this request is a JSON array with objects. Each object has a sku and an array of inventory location items. Each inventory location item must contain an attribute called qty_on_hand.

key type description
sku string (required) sku the inventory corresponds to
inventory array (required) array of inventory records for the product
inventory > qty_on_hand integer (required) quantity to set the inventory record to. Set within each inventory item.
inventory > location_external_id string (optional) external identifier for the store. if none is provided we set it to "default". Set within each inventory item.
inventory > bin string (optional) Bin for the inventory record. If none is provided, we set it to "default". Set within each inventory item.

Errors

Status Code Error code Message
400 BadRequest The request body is invalid
401 NotAuthenticated The auth token was not provided or is invalid
403 Forbidden The user doesn't have permission to perform this operation
500 Fatal <Variable, internal error message>

Notes

List inventory

This endpoint allows you to fetch all inventory records in sets of a maximum of 1000 records. You can filter the request by skus, location_external_id and bin.

GET https://api.sqquid.com/v1/inventory?skus=99845,222345&location_external_id=234&bin=aisle-5&limit=2

Response

Content-Type: application/json
Status: 200

{
    total: 12,
    offset: 0,
    limit: 2,
    results: [
        {
            "sku": "99845",
            "inventory": [
                {
                    "qty_on_hand": 4,
                    "location_external_id": "234",
                    "bin": "aisle-5"
                }
            ]
        },
        {
            "sku": "222345",
            "inventory": [
                {
                    "qty_on_hand": 9,
                    "location_external_id": "234",
                    "bin": "aisle-5"
                }
            ]
        }
    ]
}

GET https://api.sqquid.com/v1/inventory

Querystring Parameters

key type description
skus string comma-separated list of skus. At least one needs to be provided. Maximum http request url length applies
location_external_id string location id inventory records retrieved
bin string retrieve inventory records only for this bin
limit integer (optional) limits the amount of results. Default 20. Maximum 1000
offset integer (optional) results to skip, for pagination

Errors

Status Code Error code Message
400 BadRequest The request can't be understood
401 NotAuthenticated The auth token was not provided or is invalid
403 Forbidden The user doesn't have permission to perform this operation
500 Fatal <Variable, internal error message>

Get inventory by SKU

This endpoint allows you to fetch all inventory records by location for the specified sku.

GET https://api.sqquid.com/v1/inventory/443332324

Response

Content-Type: application/json
Status: 200

[
    {
        "id": 1,
        "qty_on_hand": 4,
        "location_external_id": "234",
        "bin": "aisle-5"
    }
]

Update inventory by SKU

This endpoint allows you to provide inventory data for a single location with the specified location, bin and quantity. Unlike the massive updates (partial and full) this endpoint executes the update immediately and responds with the result of this operation.

PATCH https://api.sqquid.com/v1/inventory/443332324

Content-Type: application/json

{
    "qty_on_hand": 9,
    "location_external_id": "234",
    "bin": "aisle-5"
}

Response

Content-Type: application/json
Status: 200

{
    "id": 212345556,
    "qty_on_hand": 9,
    "location_external_id": "234",
    "bin": "aisle-5"
}

PATCH https://api.sqquid.com/v1/inventory/{sku}

URL Parameters

key type description
sku string (required) SKU you want to update inventory for

Request body

key type description
qty_on_hand string (required) quantity to set the inventory record to
location_external_id string (optional) external identifier for the store. if none is provided we set it to "default"
bin string (optional) Bin for the inventory record. If none is provided, we set it to "default".

Errors

Status Code Error code Message
400 BadRequest The request can't be understood
401 NotAuthenticated The auth token was not provided or is invalid
403 Forbidden The user doesn't have permission to perform this operation
500 Fatal <Variable, internal error message>

Delete inventory by SKU

This endpoint deletes all inventory location records by sku.

DELETE https://api.sqquid.com/v1/inventory/609465503177
Delete inventory record for sku 609465503177

Response

Content-Type: application/json
Status: 200

"OK"

DELETE https://api.sqquid.com/v1/inventory/{sku}

URL Parameters

key type description
sku string sku of the inventory record to be deleted

Errors

Status Code Error code Message
400 BadRequest The request body is invalid
401 NotAuthenticated The auth token was not provided or is invalid
403 Forbidden The user doesn't have permission to perform this operation
500 Fatal <Variable, internal error message>

Delete inventory by Id

This endpoint deletes a single inventory location record by for the specified sku.

DELETE https://api.sqquid.com/v1/inventory/609465503177/111223234
Delete inventory record with id 111223234 for sku 609465503177

Response

Content-Type: application/json
Status: 200

"OK"

DELETE https://api.sqquid.com/v1/inventory/{sku}/{inventory_id}

URL Parameters

key type description
sku string sku of the inventory record to be deleted
inventory_id number id of the inventory record to be deleted

Errors

Status Code Error code Message
400 BadRequest The request body is invalid
401 NotAuthenticated The auth token was not provided or is invalid
403 Forbidden The user doesn't have permission to perform this operation
500 Fatal <Variable, internal error message>

Orders

Get Orders Count

Successful orders count response:

{
    "Orders": 28
}

This endpoint gets the number of orders since a specified date (or all if dates are blank). This API call is intended to be queried on a cron basis to check if we have any orders to fetch. The response is also intended to use alongside the page and output limits associated with /orders API endpoint.

HTTP Request

GET https://api.sqquid.com/v1/orders/count

Query Parameters

Parameter Required Description
created_at_min optional Count orders created after date
(format: 2017-09-25T16:15:47-04:00)

Get Orders

Successful orders response:

{
    "Orders": [
        {
            "order_items": [
                {
                    "id": 1,
                    "tax": "0.00",
                    "qty": 1,
                    "sku": "ABC",
                    "price": "19.99",
                    "discount": "0.00",
                    "total": "19.99",
                    "store_id": 123
                }
            ],
            "id": 1,
            "external_id": "100000007",
            "created_at": "2017-07-13T22:32:42.000Z",
            "total": "24.99",
            "tax": "0.00",
            "receipt_id": "194860",
            "source": "-",
            "shipping_method": "Flat Rate - Fixed",
            "shipping_address1": "123 Main St",
            "shipping_address2": "",
            "shipping_name": "Thomas Smith",
            "shipping_city": "San Francisco",
            "shipping_state": "California",
            "shipping_zipcode": "94414",
            "shipping_country": "US",
            "shipping_phone": "123123131",
            "shipping_charge": "5.00",
            "billing_name": "Thomas Smith",
            "billing_address1": "123 Main St",
            "billing_address2": "",
            "billing_city": "San Francisco",
            "billing_state": "California",
            "billing_zipcode": "94414",
            "billing_country": "US",
            "billing_phone": "123123131",
            "customer_id": "9809372-98",
            "customer_email": "email@gmail.com",
            "customer_name": "Thomas Smith"
        }
    ]
}

This endpoint retrieves a list of orders with all the associated order details.

HTTP Request

GET https://api.sqquid.com/v1/orders

URL Parameters

Parameter Required Description
ids optional A comma-separated list of order ids (list max 250)
limit optional Amount of results (default: 50) (maximum: 250)
page optional Page to show (default: 1)
created_at_min optional Count orders created after date
(format: 2017-09-25T16:15:47-04:00)

Returns (Coming Soon)

Overview

The returns API allows you to mark items in an order to be returned and see all existing returns for an order. Returning items in an order will remove them from the items to be shipped and can, depending on your integrations settings, send the return against your POS system or export it to the sales channel the order was imported from.

Returns are formed by items being returned and an optional adjusment value. Each item always references a product being returned (by its sku), the quantity being returned and which one of your store locations is receiving that returned item.

The adjustment on the other hand is an optional number that you can use to return the customer certain charges such as shipping costs. The adjusment can also be nagative, which means you want to return some items but a portion of the total (for example, to fund your handling costs).

! To learn more on how to create locations in Sqquid, please visit the Locations section.

List returns

This endpoint allows you to list the returns for an order.

GET https://api.sqquid.com/v2/orders/2345/returns Retrieve returns for order with id 2345

Response

Content-Type: application/json
Status: 200

[
  {
    "id": 1,
    "external_id": "331298352354-R1",
    "channel_id": 3,
    "tax": "24.00",
    "total": "200.02",
    "items": [
      {
        "sku": "2334555",
        "store_id_return": "store1",
        "qty": 2,
        "tax": "12.00",
        "price": "88.01",
        "total": "200.02"
      }
    ],
    "created_at": "2020-06-12 12:34:00"
  }
]

GET https://api.sqquid.com/v2/orders/{order_id}/returns

Path Parameters

key type description
order_id integer (required) order id in Sqquid

Errors

Status Code Error code Message
401 NotAuthenticated The auth token was not provided or is invalid
403 Forbidden The user doesn't have permission to perform this operation
500 Fatal <Variable, internal error message>

Create a return

Given an order, you can return items in it, either fully or partially. You need to specify the store you're returning to. You can return items that are ready to be shipped, on hold or to ship, but not those that have been cancelled. You can't return items that have already been shipped or in quantities higher than the amount shipped. You can't return 0 quantity. You can define any adjustment you see fit, either positive or negative.

POST https://api.sqquid.com/v2/orders/1234/returns

Content-Type: aplication/json

{
  "items": [
    {
    "sku": "1234",
    "store_id_return": "store2",
    "qty": 1 
    }
  ]
}

Response

Content-Type: application/json

{
  "id": 4,
  "external_id": "331298352354-R3",
  "channel_id": 3,
  "tax": "4.00",
  "total": "14.00",
  "items": [
    {
      "sku": "1234",
      "store_id_return": "store2",
      "qty": 1,
      "tax": "4.00",
      "price": "10.00",
      "total": "14.00"
    }
  ],
  "created_at": "2020-06-18 22:00:00"
}

POST https://api.sqquid.com/v2/orders/1234/returns

Content-Type: aplication/json

{
  "adjustment": -2.34
  "items": [
    {
    "sku": "1234",
    "store_id_return": "store2",
    "qty": 1 
    }
  ]
}

Response

Content-Type: application/json

{
  "id": 5,
  "external_id": "331298352354-R4",
  "channel_id": 3,
  "adjustment": "-2.34"
  "tax": "4.00",
  "total": "11.56",
  "items": [
    {
      "sku": "1234",
      "store_id_return": "store2",
      "qty": 1,
      "tax": "4.00",
      "price": "10.00",
      "total": "14.00"
    }
  ],
  "created_at": "2020-06-18 22:00:00"
}

POST https://api.sqquid.com/v2/orders/{channel_id}/{order_no}/returns

Path Parameters

key type description
order_id integer (required) order id in Sqquid

Request Body

key type description
adjustment float (optional) a number to be added to the return's total
items array (required) order items to be returned
items > sku string (required) Sku of the order item being returned
items > store_id_return string (required) Store the order item is being returned to
items > qty integer (required) Quantity being returned. Has to be greater than 0

Errors

Status Code Error code Message
400 BadRequest The message varies
401 NotAuthenticated The auth token was not provided or is invalid
403 Forbidden The user doesn't have permission to perform this operation
500 Fatal <Variable, internal error message>

Dynamic Buffers

Overview

Dynamic buffers are a way to adjust inventory location quantities globally, by channel, by location, and/or by sku. Sqquid feeds inventory and/or inventory location quantities to all active online channels in real time. Dynamic buffers offers a way for users to adjust the quantities Sqquid will feed into the channels. We refer to the adjusted inventory quantities as calculated quantities.

The dynamic buffer concept: A buffer is any combination of the tuple <sku, channel_id, location_external_id> it applies to a quantity. Buffers can be created, listed and manipulated from our APIs, giving users tremendous flexibility over the calculated quantities Sqquid uses for channels.

Dynamic Buffers by example

Hot products A product starts selling fast, you have only 20 left and you don't want to run out of stock in your stores in case someone comes in while at the same time you're selling that same product on Amazon and your own website(s). Adding a dynamic buffer for these skus can protect your inventory at your brick and mortar stores. In some cases you might want to selectively add dynamic buffers for the sku for certain locations only. Adding a dynamic buffer for the sku AND the location would achieve that.

Hot locations A certain brick and mortar location is experiencing a higher than your average in store sales. As a result of your success you wish to protect inventory and fulfill online web orders with other locations. Adding a dynamic buffer to that location will help by automatically routing web orders elswhere and increase your keep in-store customer satisfaction high.

Reservations A retailer wishes to enable reservations for specific product quantities. Once a reservation is made, the product quantity should be taken out of inventory for all channels. Hence, adding a dynamic buffer for each corresponding sku will enable this in real time. In order to achieve that the buffers get created and assigned the desired quantity, when a reservation is complete the buffers quantities are set to 0 and when no longer needed they are deleted. If future reservations for the same SKUs are expected, the ids for the buffers can be saved and the update buffer diff endpoint can be used to indicate changes to the quantities. All operations will trigger new calculated inventory quantity updates to all active channels for the account.

List buffers

This endpoint allows you to list the buffers in our platform. You can filter buffers by channel, sku and location, or simply get all buffers you have.

GET https://api.sqquid.com/v1/buffers?channel_id=3

Response

Content-Type: application/json
Status: 200

{
    "total": 3,
    "limit": 20,
    "offset": 0,
    "results": [
        {
            "id": 1,
            "channel_id": 3,
            "qty": 4,
            "created_at": "2020-03-24T19:35:58.000Z",
            "updated_at": "2020-03-24T22:07:12.000Z"
        },
        {
            "id": 4,
            "channel_id": 3,
            "sku": "3376447211",
            "qty": 2,
            "created_at": "2020-03-24T19:35:58.000Z",
            "updated_at": "2020-03-24T22:07:12.000Z"
        },
        {
            "id": 4,
            "channel_id": 3,
            "location_external_id": 4,
            "sku": "1111122331",
            "qty": 2,
            "created_at": "2020-03-24T19:35:58.000Z",
            "updated_at": "2020-03-24T22:07:12.000Z"
        }
    ]
}

GET https://api.sqquid.com/v1/buffers

Querystring Parameters

key type description
channel_id integer (optional) channel id for buffers retrieved
location_external_id string (optional) location id for buffers retrieved
sku string (optional) retrieve only for this sku
limit integer (optional) limits the amount of results. Default 20. Maximum 200
offset integer (optional) results to skip, for pagination

Errors

Status Code Error code Message
401 NotAuthenticated The auth token was not provided or is invalid
403 Forbidden The user doesn't have permission to perform this operation
500 Fatal <Variable, internal error message>

Create a buffer

Create a new buffer. The new buffer will apply to the inventory exposed to your different sales channels at the most granular possible level, taking into account channel, location and sku.

POST https://api.sqquid.com/v1/buffers
Create a buffer with quantity 10 for the channel with id 3 and apply it to all locations in case of inventory by location

Content-Type: application/json

{
    "sku": "00933321",
    "channel_id": 3,
    "qty": 10
}

Response

Content-Type: application/json
Status: 200

{
    "id": 1,
    "sku": "00933321",
    "channel_id": 3,
    "qty": 10,
    "created_at": "2020-03-26T06:12:26.000Z",
    "updated_at": "2020-03-26T16:04:31.000Z"
}

POST https://api.sqquid.com/v1/buffers

Request Body

key type description
channel_id integer (optional) apply buffer to this channel only
location_external_id string (optional) apply buffer to this location only
sku string (optional) apply buffer to a specific sku
qty integer (required) quantity to set the buffer to.

Errors

Status Code Error code Message
400 BadRequest Invalid format for request body. Please make sure you provide a valid JSON
401 NotAuthenticated The auth token was not provided or is invalid
403 Forbidden Invalid channel id. Please use a channel id that is associated with your Sqquid account.
403 Forbidden The user doesn't have permission to perform this operation
500 Fatal <Variable, internal error message>

Update a buffer

Sets the quantity of a buffer.

PATCH https://api.sqquid.com/v1/buffers/37
Set the buffer quantity to 2 for buffer with id 37

Content-Type: aplication/json

{
    "qty": 2
}

Response

Content-Type: application/json
Status: 200

{
    "id": 37,
    "sku": "00933321",
    "channel_id": 3,
    "qty": 2,
    "updated_at": "2020-03-26T06:16:07.432Z",
    "created_at": "2020-03-26T06:16:07.432Z"
}

PATCH https://api.sqquid.com/v1/buffers/{buffer_id}

URL Parameters

key type description
buffer_id integer id of the bufffer to be updated

Request Body

key type description
qty integer (required) new quantity for the buffer.

Errors

Status Code Error code Message
400 BadRequest Invalid format for request body. Please make sure you provide a valid JSON
400 BadRequest Buffer id needs to be an integer
401 NotAuthenticated The auth token was not provided or is invalid
403 Forbidden The user doesn't have permission to perform this operation
404 NotFound Buffer not found
500 Fatal <Variable, internal error message>

Update a buffer quantity (diff)

Applies the difference (addition or subtraction) onto the quantity to a specified buffer.

PATCH https://api.sqquid.com/v1/buffers/2/add
Request: Add -10 for buffer with id 2 (original quantity of 12)

Content-Type: application/json

{
    "qty": -10
}

Response

Content-Type: application/json
Status: 200

{
    "id": 2,
    "sku": "00933321",
    "channel_id": 3,
    "qty": 2,
    "created_at": "2020-03-26T06:12:26.000Z",
    "updated_at": "2020-03-26T16:04:31.000Z"
}

PATCH https://api.sqquid.com/v1/buffers/{buffer_id}/add

URL Parameters

key type description
buffer_id integer id of the bufffer to be updated

Request Body

key type description
qty integer (required) +/- quantity for the buffer.

Errors

Status Code Error code Message
400 BadRequest Invalid format for request body. Please make sure you provide a valid JSON
400 BadRequest Buffer id needs to be an integer
401 NotAuthenticated The auth token was not provided or is invalid
403 Forbidden The user doesn't have permission to perform this operation
404 NotFound Buffer not found
500 Fatal <Variable, internal error message>

Delete a buffer

Deletes the buffer record with specified id.

DELETE https://api.sqquid.com/v1/buffers/2
Delete buffer with id 2

Response

Content-Type: application/json
Status: 200

"OK"

DELETE https://api.sqquid.com/v1/buffers/{buffer_id}

URL Parameters

key type description
buffer_id integer id of the bufffer to be deleted

Errors

Status Code Error code Message
401 NotAuthenticated The auth token was not provided or is invalid
403 Forbidden The user doesn't have permission to perform this operation
404 NotFound Buffer not found
500 Fatal <Variable, internal error message>

Locations

Overview

A location is a physical or a logical store location. Each location can have a store_id field, identifier which will be used as an external key to match with other systems (for example, a POS or ERP system), along with the store's information such as address and phone number.

Location types

A location in Sqquid has a type that affects how the fulfillment module works. Following is a list of the possible Location types and their meaning.

Type Meaning
Geo Routing This location type will make an assesment of the proximity of the shipping address to all locations that can ship the order. There will be a higher priority for keeping the shipment to less boxes but given two or more locations with similar inventories, the order will route to the closest location.
Priority Shipping The priority location type will force any order items that exist in these locations to be routed here first. This helps protect store fronts when you have inventory in warehouses or distribution centers. More than one such location can be setup.
Dropship The dropship location type should be setup with a virtual store location within your POS. Sqquid will route order items based on SKU/Barcode into this store location and it should simplify handling of dropship items.
Out of stock This location type is a catch-all. If none of the other locations had the order items in stock at the moment of processing the order for whatever reason, the order items and possibly the entire order will be assigned to this location.

Get locations

This endpoint allows you to list the locations you registered in Sqqiud. You can filter locations several attributes in order to narrow down your search/list

GET https://api.sqquid.com/v1/locations

Response

Content-Type: application/json
Status: 200

{
    "total": 2,
    "limit": 20,
    "offset": 0,
    "results": [
        {
            "id": 1,
            "type_id": 0,
            "enabled": true,
            "store_id": "Store 1",
            "address": "Evergreen 123",
            "city": "Springfield",
            "state": "IL",
            "zip": "1234",
            "phone": "111111122222"
        },
        {
            "id": 2,
            "type_id": 3,
            "enabled": true,
            "store_id": "0",
            "address": "Default",
            "city": "Los Angeles",
            "state": "CA",
            "zip": "1234",
            "phone": "1111111111"
        }
    ]
}

GET https://api.sqquid.com/v1/locations

Querystring Parameters

key type description
type_id integer location type
store_id string store id for the location
enabled boolean retrieve only enabled/disabled locations

Errors

Status Code Error code Message
401 NotAuthenticated The auth token was not provided or is invalid
403 Forbidden The user doesn't have permission to perform this operation
500 Fatal <Variable, internal error message>

Create a location

Create a new location. The operation fails if a location with the same store id exists for the account or the type it's a Geo Routing (type 0) and the zip code is invalid.

POST https://api.sqquid.com/v1/locations

Content-Type: application/json

{
    "type_id": 0,
    "enabled": true,
    "store_id": "Store 1",
    "address": "Evergreen 123",
    "city": "Springfield",
    "state": "IL",
    "zip": "1234",
    "phone": "111111122222"
}

Response

Content-Type: application/json
Status: 200

{
    "id": 1,
    "type_id": 0,
    "enabled": true,
    "store_id": "Store 1",
    "address": "Evergreen 123",
    "city": "Springfield",
    "state": "IL",
    "zip": "1234",
    "phone": "111111122222"
}

POST https://api.sqquid.com/v1/locations

Request Body

key type description
type_id integer (optional) location type. defaults to 3
store_id string (required) external identifier for the store
enabled boolean (optional) Is the locaiton enabled. defaults to true
zip string Zip code. Required if type_id is 0
address string (optional) Address line for the store
city string (optional) City of the store
state string (optional) State of the store

Errors

Status Code Error code Message
401 NotAuthenticated The auth token was not provided or is invalid
403 Forbidden The user doesn't have permission to perform this operation
400 BadRequest Invalid zip code - Duplicate store id - Malformed payload
500 Fatal <Variable, internal error message>

Update a location

Updates a location.

PATCH https://api.sqquid.com/v1/locations/2

Content-Type: aplication/json

{
    "type_id": 0,
    "enabled": true,
    "store_id": "Store 1",
    "address": "Evergreen 123",
    "city": "Springfield",
    "state": "IL",
    "zip": "1234",
    "phone": "111111122222"
}

Response

Content-Type: application/json
Status: 200

{
    "id": 2,
    "type_id": 0,
    "enabled": true,
    "store_id": "Store 1",
    "address": "Evergreen 123",
    "city": "Springfield",
    "state": "IL",
    "zip": "1234",
    "phone": "111111122222"
}

PATCH https://api.sqquid.com/v1/locations/{location_id}

URL Parameters

key type description
location_id integer id of the location to be updated

Request Body

key type description
type_id integer (optional) location type. defaults to 3
store_id string (required) external identifier for the store
enabled boolean (optional) Is the locaiton enabled. defaults to true
zip string Zip code. Required if type_id is 0
address string (optional) Address line for the store
city string (optional) City of the store
state string (optional) State of the store

Errors

Status Code Error code Message
401 NotAuthenticated The auth token was not provided or is invalid
403 Forbidden The user doesn't have permission to perform this operation
400 BadRequest Invalid zip code - Duplicate store id - Malformed payload
500 Fatal <Variable, internal error message>

Delete a location

Deletes the location record with specified id.

DELETE https://api.sqquid.com/v1/locations/2

Response

Content-Type: application/json
Status: 200

"OK"

DELETE https://api.sqquid.com/v1/locations/{location_id}

URL Parameters

key type description
location_id integer id of the location to be deleted

Errors

Status Code Error code Message
401 NotAuthenticated The auth token was not provided or is invalid
403 Forbidden The user doesn't have permission to perform this operation
404 NotFound Can't find the specified location
500 Fatal <Variable, internal error message>

Shipments

Get Shipments Count

Successful shipments count response:

{
    "Shipments": 28
}

This endpoint gets the number of shipments since a specified date (or all if dates are blank). This API call is intended to be queried periodically to check if there are any new shipments. The response is also intended to use alongside the page and output limits associated with /shipments API endpoint.

HTTP Request

GET https://api.sqquid.com/v1/shipments/count

Query Parameters

Parameter Required Description
order_ids optional A comma-separated list of order ids (list max 250)
created_at_min optional Count orders created after date
(format: 2017-09-25T16:15:47-04:00)
catalog_integration_id optional Integer for specific integration lookup

Get Shipments

Successful shipments response:

{
    "Shipments": [
        {
            "id": 2,
            "order_id": 50,
            "catalog_integration_id": 98,
            "seller_fulfillment_id": null,
            "distribution_center_id": 123,
            "shipment_status": null,
            "shipping_carrier": null,
            "shipping_class": null,
            "tracking_number": "1234abcd",
            "tracking_urls": null,
            "shipment_date": "2012-05-01T18:22:25.000Z",
            "created_at": "2017-10-21T02:20:26.000Z",
            "updated_at": "2017-10-21T02:20:26.000Z",
            "order_items": [
                {
                    "id": 77,
                    "qty": 1
                }
            ]
        },
        {
            "id": 3,
            "order_id": 50,
             "catalog_integration_id": 100,
            "seller_fulfillment_id": null,
            "distribution_center_id": 123,
            "shipment_status": null,
            "shipping_carrier": null,
            "shipping_class": null,
            "tracking_number": "trackthisthing",
            "tracking_urls": null,
            "shipment_date": "2012-06-01T18:22:25.000Z",
            "created_at": "2017-10-21T15:54:48.000Z",
            "updated_at": "2017-10-21T15:54:48.000Z",
            "order_items": [
                {
                    "id": 76,
                    "qty": 1
                }
            ]
        }
    ]
}

This endpoint retrieves a list of shipments with all the associated details.

HTTP Request

GET https://api.sqquid.com/v1/shipments

URL Parameters

Parameter Required Description
order_ids optional A comma-separated list of order ids (list max 250)
created_at_min optional Count orders created after date
(format: 2017-09-25T16:15:47-04:00)
catalog_integration_id optional Integer for specific integration lookup
limit optional Amount of results (default: 50) (maximum: 250)
page optional Page to show (default: 1)

Order Specific HTTP Request (depreciated)

GET https://api.sqquid.com/v1/order/#{order_id}/shipments

Query Parameters

Parameter Required Description
order_id yes (URL param)

Create Shipments For Order

EXAMPLE REQUEST: Fulfill a single line item by explicitly specifying the line items to be fulfilled. (Here we do not give the explicitly QTY. This results in shipping the entire line item QTY )

{
    "distribution_center_id": "123",
    "shipment_date": "2012-05-01T14:22:25-04:00",
    "tracking_number": "trackthisthing",
    "order_items": [
        {
            "id": 76
        }
       ]
}

EXAMPLE REQUEST: Fulfill all line items. Not specifying line item IDs causes all unfulfilled and partially fulfilled line items for the order to be fulfilled.

{
    "distribution_center_id": "123",
    "shipment_date": "2012-05-01T14:22:25-04:00",
    "shipping_carrier": "carrier",
    "shipping_class": "class",
    "tracking_number": "trackthisthing",
}

EXAMPLE REQUEST: Partially fulfill a single line item by explicitly specifying the line item and quantity to be fulfilled.

{
    "tracking_number": "trackthisthing",
    "order_items": [
        {
            "id": 76,
            "qty": 1
        }
       ]
}

Successful shipment creation response:

{
    "message": "success"
}

Error response (400):

{
    "message": "Order items have already been fully shipped: 76"
}

This endpoint creates a shipment for a particular order.

HTTP Request

POST https://api.sqquid.com/v1/order/#{order_id}/shipments

URL Parameters

Parameter Required Description
order_id yes (URL param)
shipment_status optional String (maximum length: 200)
tracking_number optional String (maximum length: 200)
shipping_carrier optional String (maximum length: 200)
shipping_class optional String (maximum length: 200)
seller_fulfillment_id optional Int
distribution_center_id optional Int
shipment_date optional Specify the shipment date
(format: 2017-09-25T16:15:47-04:00)
order_items optional Array of order IDs and (optional) qty

Shipment Items

Get Shipment Items Count

Successful shipment items count response:

{
    "shipmentitems": 17
}

Similar to the fulfillment page in our app, ShipmentItems represents the list of order items in the context of shipments. You can search ShipmentItems by scope (ToShip, Shipped, Cancelled, Flagged), by date range, by catalog_integration_id or any combination thereof. By default it will search all ShipmentItems that are marked ToShip for all catalog integrations under this account. This API call is intended to be queried periodically to check if there are any new shipment items. The response is also intended to use alongside the page and output limits associated with /shipmentitems API endpoint.

HTTP Request

GET https://api.sqquid.com/v1/shipmentitems/count

Query Parameters

Parameter Required Description
scope optional 'toship', 'shipped', 'cancelled', 'flagged', (default: 'toship')
created_at_min optional Count orders created after date
(format: 2019-09-25T16:15:47-04:00)
created_at_max optional Count orders created before date
(format: 2019-11-25T16:15:47-04:00)
catalog_integration_id optional Integer for specific catalog integration lookup (default: null)

Get Shipment Items

Successful shipment items response:

{
    "shipmentitems": [
        {
            "id": 2,
            "external_order_id": 50,
            "external_receipt_id": 651987,
            "catalog_integration_id": 98,
            "distribution_center_id": 123,
            "billing_name": "John Smith",
            "shipping_name": "John Smith",
            "shipping_address1": "123 Sepulveda Ave",
            "shipping_address2": "Suite 200",
            "shipping_city": "Los Angeles",
            "shipping_state": "CA",
            "shipping_zip": "90066",
            "item_sku": "124589772987",
            "item_brand": "Brand",
            "item_parent_sku": "ABC-7865",
            "item_qty": 1,
            "shipping_carrier": null,
            "shipping_class": null,
            "tracking_number": "1234abcd",
            "tracking_urls": null,
            "shipment_status": null,
            "shipment_date": "2019-10-21T18:22:25.000Z",
            "created_at": "2019-10-21T02:20:26.000Z",
        },
        {
            "id": 3,
            "external_order_id": 50,
            "external_receipt_id": 651123,
            "catalog_integration_id": 98,
            "distribution_center_id": 123,
            "billing_name": "John Smith",
            "shipping_name": "John Smith",
            "shipping_address1": "123 Sepulveda Ave",
            "shipping_address2": "Suite 200",
            "shipping_city": "Los Angeles",
            "shipping_state": "CA",
            "shipping_zip": "90066",
            "item_sku": "124589772000",
            "item_brand": "Brand",
            "item_parent_sku": "ZZZ-7865",
            "item_qty": 2,
            "shipping_carrier": null,
            "shipping_class": null,
            "tracking_number": "1234abcd765",
            "tracking_urls": null,
            "shipment_status": null,
            "shipment_date": "2019-10-21T18:22:25.000Z",
            "created_at": "2019-10-21T02:20:26.000Z",
        },
    ]
}

This endpoint retrieves a list of shipment items with all the associated details.

HTTP Request

GET https://api.sqquid.com/v1/shipmentitems

URL Parameters

Parameter Required Description
scope optional 'toship', 'shipped', 'cancelled', 'flagged', (default: 'toship')
created_at_min optional Count orders created after date
(format: 2019-09-25T16:15:47-04:00)
created_at_max optional Count orders created before date
(format: 2019-09-25T16:15:47-04:00)
catalog_integration_id optional Integer for specific catalog integration lookup (default: null)
limit optional Amount of results (default: 50) (maximum: 250)
page optional Page to show (default: 1)

Cancel a shipment item

Cancels a shipment item. Equivalent to cancelling the shipment item from the frontend fulfillment dashboard.

PATCH https://api.sqquid.com/v1/shipmentitems/2/cancel
Cancel shipment item with id 2

Response

Content-Type: application/json
Status: 200

"OK"

PATCH https://api.sqquid.com/v1/shipmentitems/{id}/cancel

URL Parameters

key type description
id integer id of the shipment item to be cancelled. The id can be fetched from the GET shipment items above.

Errors

Status Code Error code Message
400 BadRequest Message may vary
401 NotAuthenticated The auth token was not provided or is invalid
403 Forbidden The user doesn't have permission to perform this operation
404 NotFound Buffer not found
500 Fatal <Variable, internal error message>

Errors

The Sqquid API uses the following error codes:

Error Code Meaning
400 Bad Request -- Your request sucks
401 Unauthorized -- Your API key is wrong or login credentials are incorect
403 Forbidden -- The requested is hidden for administrators only
404 Not Found -- The specified resource could not be found
405 Method Not Allowed -- You tried to access a resource with an invalid method
406 Not Acceptable -- You requested a format that isn't json
410 Gone -- The resource requested has been removed from our servers
418 I'm a teapot
429 Too Many Requests -- You're requesting too many resource! Slow down!
500 Internal Server Error -- We had a problem with our server. Try again later.
503 Service Unavailable -- We're temporarially offline for maintanance. Please try again later.