Totes (also known as bins or containers) are used in warehouse picking and packing operations to organize and transport items. With the /v2/totes endpoint, you can create, list, update, and delete totes, as well as track tote quantities across warehouses.
Totes are physical containers used in warehouse operations to:
- Organize items during the picking process
- Transport products from storage locations to packing stations
- Group multiple items for batch processing
- Improve warehouse efficiency and accuracy
Each tote has a unique identifier and can be assigned to a specific warehouse. Totes can also have barcodes for quick scanning and identification.
| Property | Type | Description |
|---|---|---|
tote_id | string | Generated automatically when you create a tote. This unique identifier is required to get, update, or delete a specific tote. |
inventory_warehouse_id | string | The warehouse where this tote is located. Required when creating or updating a tote. You can also use it as a query parameter when listing totes to filter by warehouse. |
tote_name | string (max 100 characters) | The name of the tote. This is required when creating or updating a tote and should be unique within the warehouse for easy identification. |
tote_barcode | string (max 100 characters) | Optional barcode identifier for the tote. Used for scanning during warehouse operations. |
created_at | string (date-time) | The date and time the tote was created. |
Get all totes, optionally filtered by warehouse.
GET /v2/totes
inventory_warehouse_id(optional): Filter totes by a specific warehouse ID
- Productionhttps://api.shipstation.com/v2/totes
- curl
- JavaScript
- Node.js
- Python
- Java
- C#
- PHP
- Go
- Ruby
- R
- Payload
curl -i -X GET \
'https://api.shipstation.com/v2/totes?inventory_warehouse_id=se-28529731' \
-H 'api-key: YOUR_API_KEY_HERE'Get a count of how many totes exist in each warehouse.
GET /v2/totes/quantities
This endpoint is useful for warehouse management and inventory tracking, allowing you to see tote distribution across your warehouses at a glance.
- Productionhttps://api.shipstation.com/v2/totes/quantities
- curl
- JavaScript
- Node.js
- Python
- Java
- C#
- PHP
- Go
- Ruby
- R
- Payload
curl -i -X GET \
https://api.shipstation.com/v2/totes/quantities \
-H 'api-key: YOUR_API_KEY_HERE'Retrieve details of a single tote by its ID.
GET /v2/totes/{tote_id}
- Productionhttps://api.shipstation.com/v2/totes/{tote_id}
- curl
- JavaScript
- Node.js
- Python
- Java
- C#
- PHP
- Go
- Ruby
- R
- Payload
curl -i -X GET \
https://api.shipstation.com/v2/totes/se-28529731 \
-H 'api-key: YOUR_API_KEY_HERE'Create multiple totes at once. This endpoint accepts an array of totes and returns both successfully created totes and any failures.
POST /v2/totes
The request body should contain:
totes: An array of tote objects to create, each with:inventory_warehouse_id(required)tote_name(required)tote_barcode(optional)
return_succeeded_totes(optional): Set totrueif you need print information for labels
The response includes two arrays:
succeeded_totes: Totes that were successfully createdfailed_totes: Totes that failed to create, with error messages explaining why
This allows you to handle partial success scenarios where some totes are created successfully while others fail (e.g., due to duplicate names).
- Productionhttps://api.shipstation.com/v2/totes
- curl
- JavaScript
- Node.js
- Python
- Java
- C#
- PHP
- Go
- Ruby
- R
- Payload
curl -i -X POST \
https://api.shipstation.com/v2/totes \
-H 'Content-Type: application/json' \
-H 'api-key: YOUR_API_KEY_HERE' \
-d '{
"totes": [
{
"inventory_warehouse_id": "se-789012",
"tote_name": "Tote-B5",
"tote_barcode": "TOTE789012"
}
],
"return_succeeded_totes": false
}'Update the name or barcode of an existing tote.
PUT /v2/totes/{tote_id}
- Productionhttps://api.shipstation.com/v2/totes/{tote_id}
- curl
- JavaScript
- Node.js
- Python
- Java
- C#
- PHP
- Go
- Ruby
- R
- Payload
curl -i -X PUT \
https://api.shipstation.com/v2/totes/se-28529731 \
-H 'Content-Type: application/json' \
-H 'api-key: YOUR_API_KEY_HERE' \
-d '{
"inventory_warehouse_id": "se-789012",
"tote_name": "Tote-B5-Updated",
"tote_barcode": "TOTE789012-NEW"
}'Delete a tote by its ID.
DELETE /v2/totes/{tote_id}
Deleting a tote is permanent and cannot be undone. Ensure the tote is no longer in use before deleting it.
- Productionhttps://api.shipstation.com/v2/totes/{tote_id}
- curl
- JavaScript
- Node.js
- Python
- Java
- C#
- PHP
- Go
- Ruby
- R
- Payload
curl -i -X DELETE \
https://api.shipstation.com/v2/totes/se-28529731 \
-H 'api-key: YOUR_API_KEY_HERE'When setting up a new warehouse, you can create multiple totes in batch:
- Create your warehouse using the
/v2/inventory_warehousesendpoint - Use the batch create endpoint to add all totes at once
- Assign barcodes to totes for scanning during operations
Use the quantities endpoint to monitor tote distribution:
- Call
GET /v2/totes/quantitiesto see tote counts per warehouse - Identify warehouses that may need more or fewer totes
- Reallocate totes as needed by updating their warehouse assignment
During picking and packing:
- Scan a tote barcode and retrieve its details with
GET /v2/totes/{tote_id} - Use the tote to organize items during picking
- Track which totes are in use for better workflow management