Skip to main content

Shipping Channels API

Welcome to the Shipping Channels API documentation. This comprehensive guide will help you integrate with our shipping solutions platform to create shipments, generate labels, track parcels, and receive real-time notifications.

Overview

Shipping Channels is a unified shipping platform that connects your application to multiple shipping providers through a single API. Instead of integrating with each carrier separately, you can use our API to:

  • Create shipments with automatic label generation
  • Track parcels across all carriers with standardized statuses
  • Manage multiple carriers through a single integration
  • Receive webhooks for real-time status updates

Key Features

Multi-Carrier Support

Integrate with 13+ shipping providers through a single API:

ProviderCodeRegion
PPLpplCzech Republic, Slovakia
DHLdhlWorldwide
DHL Polanddhl_plPoland
DPDdpdEurope
DPD Polanddpd_plPoland
GLSglsEurope
GLS Polandgls_plPoland
SPX (Shopee Express)spxSE Asia, Central Europe
MRWmrwSpain, Portugal
Poste Italianeposte_italianeItaly, Europe, Americas
AllegroallegroPoland
BaselinkerbaselinkerMultiple
OneDeliveryonedeliveryCzech Republic, Slovakia

Multi-Parcel Shipments

Create shipments with multiple parcels in a single API call. Each parcel receives its own tracking number, and labels are automatically combined into a single downloadable file.

Cash on Delivery (COD)

Support for COD payments with automatic product switching for providers that require separate COD products.

Real-Time Tracking

Monitor shipment status with standardized tracking statuses across all carriers. Receive webhook notifications when statuses change.

Label Generation

Generate shipping labels in multiple formats:

  • PDF - For standard office printers
  • ZPL - For Zebra thermal printers
  • EPL - For other thermal printers (provider-dependent)

Quick Start

1. Get Your API Key

Sign up at shipping-channels.com and generate an API key from your dashboard.

2. Create a Shipping Channel

Configure your carrier credentials:

curl -X POST https://api.shipping-channels.com/v1/shipping-channels \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"name": "My PPL Channel",
"provider": "ppl",
"settings": {
"clientId": "your-client-id",
"clientSecret": "your-client-secret",
"productType": "BUSS",
"sandboxMode": true
}
}'

3. Create a Shipment

Create a shipment with one or more parcels:

curl -X POST https://api.shipping-channels.com/v1/shipments \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"shipping_channel_id": "ch_123456",
"label_format": "pdf",
"sender_contact": {
"company_name": "My Company",
"email_address": "sender@example.com",
"phone_number": "+420123456789"
},
"recipient_contact": {
"first_name": "Jan",
"last_name": "Novak",
"email_address": "jan@example.com",
"phone_number": "+420987654321"
},
"origin_address": {
"street_name": "Hlavni",
"house_number": "1",
"city_name": "Praha",
"postal_code": "11000",
"country_code": "CZ"
},
"destination_address": {
"street_name": "Namesti",
"house_number": "5",
"city_name": "Brno",
"postal_code": "60200",
"country_code": "CZ"
},
"parcels": [
{
"parcel_type": "package",
"length_dimension": 30,
"width_dimension": 20,
"height_dimension": 15,
"dimension_unit": "CM",
"weight_amount": 2.5,
"weight_unit": "KG"
}
]
}'

4. Download the Label

curl -X GET https://api.shipping-channels.com/v1/shipments/sh_123456/label \
-H "Authorization: Bearer YOUR_API_KEY"

Authentication

All API requests require authentication using API keys. Include your API key in the Authorization header:

Authorization: Bearer YOUR_API_KEY

API keys can be created and managed from your dashboard. Keep your API keys secure and never expose them in client-side code.

Learn more about authentication.


Base URL

All API requests should be made to:

https://api.shipping-channels.com/v1

Request Format

Headers

HeaderRequiredDescription
AuthorizationYesBearer YOUR_API_KEY
Content-TypeYes*application/json (for POST/PUT/PATCH requests)
AcceptNoapplication/json

Request Body

All request bodies should be valid JSON:

{
"field_name": "value",
"nested_object": {
"property": "value"
},
"array_field": [
{ "item": 1 },
{ "item": 2 }
]
}

Response Format

All responses are returned in JSON format with a consistent structure.

Successful Response

{
"data": {
"id": "sh_123456",
"status": "pending",
...
},
"message": "Shipment created successfully"
}

List Response (Paginated)

{
"data": [
{ "id": "sh_123456", ... },
{ "id": "sh_123457", ... }
],
"meta": {
"current_page": 1,
"last_page": 5,
"per_page": 15,
"total": 73
},
"links": {
"first": "https://api.shipping-channels.com/v1/shipments?page=1",
"last": "https://api.shipping-channels.com/v1/shipments?page=5",
"prev": null,
"next": "https://api.shipping-channels.com/v1/shipments?page=2"
}
}

Error Response

{
"message": "The given data was invalid.",
"errors": {
"field_name": [
"The field_name field is required."
]
}
}

HTTP Status Codes

CodeDescription
200OK - Request succeeded
201Created - Resource created successfully
204No Content - Request succeeded with no response body
400Bad Request - Invalid request format
401Unauthorized - Invalid or missing API key
403Forbidden - Insufficient permissions
404Not Found - Resource not found
422Unprocessable Entity - Validation errors
429Too Many Requests - Rate limit exceeded
500Internal Server Error - Server error
503Service Unavailable - Provider unavailable

Common Use Cases

E-commerce Order Fulfillment

  1. Customer places an order
  2. Your system calls the API to create a shipment
  3. Download and print the shipping label
  4. Hand over parcel to carrier
  5. Receive webhook notifications as package moves through delivery

Multi-Carrier Shipping

  1. Create shipping channels for each carrier you use
  2. Select the appropriate channel based on destination, service level, or cost
  3. Create shipments through the unified API
  4. Track all shipments regardless of carrier

Tracking Existing Shipments

  1. Create a tracking parcel with the carrier's tracking number
  2. Receive automatic status updates
  3. Get webhook notifications on status changes
  4. Display tracking information to your customers

Cash on Delivery

  1. Configure COD settings in your shipping channel
  2. Include cash_on_delivery_amount and cash_on_delivery_currency in shipment
  3. System automatically handles COD product requirements
  4. Receive confirmation when COD is collected

Guides

Get started with our detailed guides:

GuideDescription
Shipping ChannelsConfigure carrier connections
ShipmentsCreate and manage shipments
Tracking ParcelsTrack shipments and status updates
WebhooksSet up real-time notifications
Error HandlingHandle API errors gracefully

API Reference

Explore the complete API documentation:

EndpointDescription
Shipping ChannelsManage carrier connections
ShipmentsCreate shipments and labels
Tracking ParcelsTrack shipment status
WebhooksConfigure notifications

Rate Limits

API requests are subject to rate limiting to ensure fair usage. Current limits:

PlanRequests per minute
Free60
Standard300
EnterpriseCustom

When you exceed the rate limit, you'll receive a 429 Too Many Requests response. See Rate Limits for details.


Versioning

The API is versioned through the URL path (/v1/). We maintain backwards compatibility within a major version. Breaking changes will be released in a new version.

Current version: v1


Need Help?


Changelog

Stay updated with the latest API changes and improvements. Major updates include:

  • Multi-parcel shipments - Create shipments with multiple parcels
  • Combined labels - Download all parcel labels in a single file
  • New providers - Added support for Allegro, Baselinker, and OneDelivery