- Synchronous: Ship one order and receive the label file in the response. Best suited for one-off shipments or low volume.
- Asynchronous: Ship one or multiple orders in a single request. Recommended for batch processing. The response returns parcel references and any per-order errors. Labels are retrieved separately.
- Shipping to addresses and service points
- Applying Shipping Rules and Shipping Defaults
- Adding brand information to labels and tracking emails
Before you begin
Before calling the Ship an Order API:Have an order available in Sendcloud
Orders can be created via the Orders API or through a plug-and-play integration (Shopify, eBay, WooCommerce, etc).
Confirm the order is ready for shipping (if needed)
You can use the Retrieve an order endpoint to confirm the order is available.
Orders are saved asynchronously. If you create an order and immediately request a label, it may not yet be available. If you receive an “order not found” error, retrieve the order first and retry.
(Optional) Configure Shipping Defaults
Shipping Defaults can automatically fill in missing shipment data (for example weight, insurance, or preferred shipping method).
Shipping defaults
Read about setting up shipping defaults in our help center
(Optional) Configure Shipping Rules
Shipping Rules allow you to automatically determine how an order should be shipped based on conditions.
To apply them during label creation, set
To apply them during label creation, set
apply_shipping_rules: true in your request.Shipping rules
Learn more about shipping rules in our help center
Request a label for a single order synchronously
Use the synchronous endpoint when you need the label returned immediately in the response.| Key details | |
|---|---|
| Endpoint | Request a label for a single order synchronously |
| Max orders per request | 1 |
| HTTP status code | 201 |
| Response | Parcel reference + Base64-encoded label file |
Request labels for one or more orders asynchronously
Use the asynchronous endpoint for batch shipping. This endpoint fails gracefully — one order failing does not block others.| Key details | |
|---|---|
| Endpoint | Request a label for one or more orders asynchronously |
| Max orders per request | 1–20 |
| HTTP status code | 202 |
| Response | Parcel references for successful orders + errors array for failed ones |
All orders in an asynchronous request must belong to the same
integration_id.Request examples
Asynchronous request
Example request body for the asynchronous endpoint
Synchronous request
Example request body for the synchronous endpoint
Common fields you may include
Depending on your flow, your request may include:Required fields
integration_id(required)order(required, synchronous only)orders(required, asynchronous only; 1–20 orders)order_idororder_number(at least one required per order): If both are provided, they must reference the same order under the specifiedintegration_id.
Optional fields
ship_with: explicitly setshipping_option_codeand optionalcontract_idsender_address_id: override default sender addressbrand_id: apply branding to labels and tracking emailsThe Brands API is currently only available in API v2. This reference will be updated when a v3 version becomes available. If you are curious to learn more about setting up and managing brands see this Help Center article.apply_shipping_rules(per order): apply Shipping Rules before label creationlabel_details(synchronous only): control label format (mime type, DPI)
Shipping method resolution priority
When creating the label, Sendcloud determines the shipping method in the following order:- Shipping Rules (if
apply_shipping_rules= true) ship_with.shipping_option_code- Existing
shipping_methodon the order - Shipping Defaults
- Fallback to Unstamped Letter (if no carriers are enabled)
Contract selection
- If
contract_idis provided, that contract is used. - If omitted, Sendcloud uses your direct carrier contract (if available).
- Otherwise, Sendcloud rates are applied.
Finding related IDs and codes
You may need to retrieve supporting values before calling this endpoint:- Use the Retrieve a list of integrations endpoint to get a list of all your integrations.
- To find which
shipping_option_codevalues are available for a given shipment context, use the Shipping Options API (see Shipping options & quotes endpoint).- If you’ve hardcoded shipping method IDs in your system, you can use the Compat API to map them to the equivalent
shipping_option_code.
- If you’ve hardcoded shipping method IDs in your system, you can use the Compat API to map them to the equivalent
- Use the Retrieve a list of contracts endpoint to get a list of your contracts.
- Use the Retrieve a list of sender addresses endpoint to get a list of your sender addresses.
Retrieving labels
If you used the asynchronous endpoint
The async endpoint returns parcel references. Use the Parcel Documents API and to retrieve the label file, make aGET request to the retrieve a parcel document endpoint.
You can control the output format using:
dpi(query parameter)- Accept header (MIME type)
Request method, URL and headers
If you used the synchronous endpoint
The label file is included directly in the JSON response (Base64-encoded). No additional API call is required.Request method, URL and body
parcel_idlabel.file(Base64-encoded)label.mime_typelabel.dpi
Error handling
Order not found: If the order was recently created, it may not yet be available. Retrieve the order first using Retrieve an order endpoint and retry. Partial failures (asynchronous endpoint): The asynchronous endpoint may return both successful parcel references and per-order errors in the same response. Inspect theerrors array to determine which orders failed and why.
Carrier or announcement errors: For synchronous requests, errors are returned directly in the response.
For asynchronous requests, inspect the response and relevant parcel in the Sendcloud platform if needed.
Limitations of Ship an Order
Compared to the Shipments API, Ship an Order is more limited and does not (yet) support:- Synchronous multicollo shipping
- Order splitting
- Setting parcel-specific details such as:
- Weight or dimensions per parcel
- Items per parcel
- Insurance per parcel
- Label notes or delivery dates per parcel