ShipStation API v2 (2.0.0)

Download OpenAPI description
Overview
License MIT
Languages
Servers
Mock server
https://docs.shipstation.com/_mock/openapi/
Production
https://api.shipstation.com/

Batches

Process labels in bulk and receive a large number of labels and customs forms in bulk responses. Batching is ideal for workflows that need to process hundreds or thousands of labels quickly.

Operations

Carriers

Retreive useful details about the carriers connected to your accounts, including carrier IDs, service IDs, advanced options, and available carrier package types.

Operations

Downloads

Download your label files in PDF, PNG, and ZPL.

Operations

Inventory

Manage inventory, adjust quantities, and handle warehouses and locations.

Operations

Get SKU Inventory Levels

Request

Query
skustring

Optional list of SKUs to filter down to

inventory_warehouse_idstring
inventory_location_idstring
group_bystring

Get counts for SKUs across locations or warehouses

Enum"warehouse""location"
limitinteger
curl -i -X GET \
  'https://docs.shipstation.com/_mock/openapi/v2/inventory?group_by=warehouse&inventory_location_id=string&inventory_warehouse_id=string&limit=0&sku=string' \
  -H 'api-key: YOUR_API_KEY_HERE'

Responses

Inventory levels for SKUs

Bodyapplication/json
inventoryArray of objects
totalinteger
pageinteger
pagesinteger
linksobject
Response
application/json
{ "inventory": [ {} ], "total": 0, "page": 0, "pages": 0, "links": { "first": {}, "last": {}, "prev": {}, "next": {} } }

Update SKU Stock Levels

Request

Bodyapplication/jsonrequired
transaction_typestringrequired

The type of update to perform: increment: Add inventory to a location. decrement: Remove inventory from a location given a set of filters. Either all of the inventory will be removed (204 response), or none of it will (400 response with reason). adjust: Adjust on hand quantity of inventory in a location to the quantity specified. This is done by either adding or removing inventory in the condition specified. modify: Modify attributes on a set of inventory. The filters work the same as for decrement transaction type.

Enum"increment""decrement""adjust""modify"
inventory_location_idstringrequired
skustringrequired
quantityintegerrequired
costobject
conditionstring
Enum"sellable""damaged""expired""qa_hold"
lotstring
usable_start_datestring(date-time)
usable_end_datestring(date-time)
effective_atstring(date-time)
reasonstring
notesstring
new_inventory_location_idstring

Used with the modify transaction type to move inventory to a new location

new_costobject

Used with the modify transaction type to update the cost of existing inventory

new_conditionstring

Used with the modify transaction type to change the condition of existing inventory

Enum"sellable""damaged""expired""qa_hold"
curl -i -X POST \
  https://docs.shipstation.com/_mock/openapi/v2/inventory \
  -H 'Content-Type: application/json' \
  -H 'api-key: YOUR_API_KEY_HERE' \
  -d '{
    "transaction_type": "increment",
    "inventory_location_id": "string",
    "sku": "string",
    "quantity": 0,
    "cost": {
      "amount": 0,
      "currency": "string"
    },
    "condition": "sellable",
    "lot": "string",
    "usable_start_date": "2019-08-24T14:15:22Z",
    "usable_end_date": "2019-08-24T14:15:22Z",
    "effective_at": "2019-08-24T14:15:22Z",
    "reason": "string",
    "notes": "string",
    "new_inventory_location_id": "string",
    "new_cost": {
      "amount": 0,
      "currency": "string"
    },
    "new_condition": "sellable"
  }'

Responses

Inventory successfully updated

List all inventory warehouses

Request

Query
limitinteger
curl -i -X GET \
  'https://docs.shipstation.com/_mock/openapi/v2/inventory_warehouses?limit=0' \
  -H 'api-key: YOUR_API_KEY_HERE'

Responses

List of inventory warehouses

Bodyapplication/json
inventory_warehousesArray of objects
totalinteger
pageinteger
pagesinteger
linksobject
Response
application/json
{ "inventory_warehouses": [ {} ], "total": 0, "page": 0, "pages": 0, "links": { "first": {}, "last": {}, "prev": {}, "next": {} } }

Add new inventory warehouse

Request

Bodyapplication/jsonrequired
namestringrequired
curl -i -X POST \
  https://docs.shipstation.com/_mock/openapi/v2/inventory_warehouses \
  -H 'Content-Type: application/json' \
  -H 'api-key: YOUR_API_KEY_HERE' \
  -d '{
    "name": "string"
  }'

Responses

Inventory warehouse successfully created

Bodyapplication/json
inventory_warehouse_idstring
namestring
created_atstring(date-time)
updated_atstring(date-time)
Response
application/json
{ "inventory_warehouse_id": "string", "name": "string", "created_at": "2019-08-24T14:15:22Z", "updated_at": "2019-08-24T14:15:22Z" }

Get inventory warehouse by ID

Request

Path
inventory_warehouse_idstringrequired
curl -i -X GET \
  'https://docs.shipstation.com/_mock/openapi/v2/inventory_warehouses/{inventory_warehouse_id}' \
  -H 'api-key: YOUR_API_KEY_HERE'

Responses

Inventory warehouse details

Bodyapplication/json
inventory_warehouse_idstring
namestring
created_atstring(date-time)
updated_atstring(date-time)
Response
application/json
{ "inventory_warehouse_id": "string", "name": "string", "created_at": "2019-08-24T14:15:22Z", "updated_at": "2019-08-24T14:15:22Z" }

Update inventory warehouse

Request

Path
inventory_warehouse_idstringrequired
Bodyapplication/jsonrequired
namestring
curl -i -X PUT \
  'https://docs.shipstation.com/_mock/openapi/v2/inventory_warehouses/{inventory_warehouse_id}' \
  -H 'Content-Type: application/json' \
  -H 'api-key: YOUR_API_KEY_HERE' \
  -d '{
    "name": "string"
  }'

Responses

Inventory warehouse successfully updated

Delete inventory warehouse

Request

Path
inventory_warehouse_idstringrequired
Query
remove_inventorystring

If 1, remove all inventory from the warehouse before deleting it. If 0 or missing and the warehouse has On Hand inventory, the request will fail.

Enum"0""1"
curl -i -X DELETE \
  'https://docs.shipstation.com/_mock/openapi/v2/inventory_warehouses/{inventory_warehouse_id}?remove_inventory=0' \
  -H 'api-key: YOUR_API_KEY_HERE'

Responses

Inventory warehouse successfully deleted

List all inventory locations

Request

Query
limitinteger
curl -i -X GET \
  'https://docs.shipstation.com/_mock/openapi/v2/inventory_locations?limit=0' \
  -H 'api-key: YOUR_API_KEY_HERE'

Responses

List of inventory locations

Bodyapplication/json
inventory_locationsArray of objects
totalinteger
pageinteger
pagesinteger
linksobject
Response
application/json
{ "inventory_locations": [ {} ], "total": 0, "page": 0, "pages": 0, "links": { "first": {}, "last": {}, "prev": {}, "next": {} } }

Add new inventory location

Request

Bodyapplication/jsonrequired
namestringrequired
inventory_warehouse_idstringrequired
curl -i -X POST \
  https://docs.shipstation.com/_mock/openapi/v2/inventory_locations \
  -H 'Content-Type: application/json' \
  -H 'api-key: YOUR_API_KEY_HERE' \
  -d '{
    "name": "string",
    "inventory_warehouse_id": "string"
  }'

Responses

Inventory location successfully created

Bodyapplication/json
inventory_location_idstring
namestring
inventory_warehouse_idstring
created_atstring(date-time)
updated_atstring(date-time)
Response
application/json
{ "inventory_location_id": "string", "name": "string", "inventory_warehouse_id": "string", "created_at": "2019-08-24T14:15:22Z", "updated_at": "2019-08-24T14:15:22Z" }

Get inventory location by ID

Request

Path
inventory_location_idstringrequired
curl -i -X GET \
  'https://docs.shipstation.com/_mock/openapi/v2/inventory_locations/{inventory_location_id}' \
  -H 'api-key: YOUR_API_KEY_HERE'

Responses

Inventory location details

Bodyapplication/json
inventory_location_idstring
namestring
inventory_warehouse_idstring
created_atstring(date-time)
updated_atstring(date-time)
Response
application/json
{ "inventory_location_id": "string", "name": "string", "inventory_warehouse_id": "string", "created_at": "2019-08-24T14:15:22Z", "updated_at": "2019-08-24T14:15:22Z" }

Update inventory location

Request

Path
inventory_location_idstringrequired
Bodyapplication/jsonrequired
namestring
curl -i -X PUT \
  'https://docs.shipstation.com/_mock/openapi/v2/inventory_locations/{inventory_location_id}' \
  -H 'Content-Type: application/json' \
  -H 'api-key: YOUR_API_KEY_HERE' \
  -d '{
    "name": "string"
  }'

Responses

Inventory location successfully updated

Delete inventory location

Request

Path
inventory_location_idstringrequired
Query
remove_inventorystring

If 1, remove all inventory from the location before deleting it. If 0 or missing and the location has On Hand inventory, the request will fail.

Enum"0""1"
curl -i -X DELETE \
  'https://docs.shipstation.com/_mock/openapi/v2/inventory_locations/{inventory_location_id}?remove_inventory=0' \
  -H 'api-key: YOUR_API_KEY_HERE'

Responses

Inventory location successfully deleted

Labels

Purchase and print shipping labels for any carrier active on your account. The labels endpoint also supports creating return labels, voiding labels, and getting label details like tracking.

Operations

Manifests

A manifest is a document that provides a list of the day's shipments. It typically contains a barcode that allows the pickup driver to scan a single document to register all shipments, rather than scanning each shipment individually.

Operations

Package Pickups

Scheduled pickups and manage pickup requests for supported carriers.

Operations

Package Types

Create custom package types to use for your shipments, rather than the carriers' default package types.

Operations

Rates

Quickly compare rates using the Rates endpoint. You can see and compare rates for the carriers connected to your account (as long as they support sending rates).

Operations

Shipments

Shipments are at the core of most ShipStation capabilities. Shipment objects are required for cretaing labels and manifests, as well as getting rates.

Operations

Tags

Tags are text-based identifiers you can add to shipments to help in your shipment management workflows.

Operations

Tracking

Use the tracking endpoint to stop receiving tracking updates (more dedicated tracking endpoint methods coming soon).

Operations

Warehouses

Get warehouse details like warehouse ID and related addresses using the warehouses endpoint.

Operations

Webhooks

Webhooks are a powerful feature that can save you from sending repeated polling requests to check on the state of something. With webhooks, ShipStation will automatically contact your servers when the stage changes. This can include parcel tracking events, notification when a batch operation completes, and more.

Operations