Dreamship API
The Dreamship API is a free REST API for print on demand (POD) fulfillment. Your site, app or platform sends each order, and Dreamship prints it and ships it straight to your customer. As with dropshipping, you sell custom products without buying or storing any inventory.
curl https://api.dreamship.com/v1/orders/ \
-H "Authorization: Bearer $DREAMSHIP_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"reference_id": "1001",
"test_order": true,
"shipping_method": "economy",
"address": {
"first_name": "Jane",
"last_name": "Doe",
"street1": "123 Market St",
"city": "San Francisco",
"state": "CA",
"zip": "94105",
"country": "US"
},
"line_items": [{
"item_variant": 12345,
"quantity": 1,
"print_areas": [
{ "key": "front", "url": "https://example.com/design.png" }
]
}]
}'Send item variants, artwork URLs and a shipping address in one request. Look up any order, submit drafts or cancel an order before it goes into production.
Set test_order to true to try the whole flow. Test orders are never billed, printed or shipped.
Pull every catalog item with its variants, prices, print areas and stock status. Ship zones add shipping rates and delivery times by country.
Receive signed events when an order changes status or ships, and when an item's availability or price changes.
Save products with your artwork, generate their mockups and publish them to connected stores like Shopify and Etsy.
Pick a shipping method for each order, from economy to express. Eligible items can also get 48-hour fulfillment for an added fee, or ship on your own prepaid labels.
Create a free Dreamship account and copy your key from API settings.
Fetch the items and variants you want to offer.
Post each order with its artwork URLs and your customer's shipping address.
Webhooks tell you as each order is produced and shipped, with its tracking number.
You can send orders to Dreamship without writing a line of code.
Yes. The Dreamship API is included on every plan, including the free Basic plan. You only pay for the orders you place.
To authenticate, send your API key as a Bearer token in the Authorization header. Your key is in API settings in your Dreamship account.
The Dreamship API has no separate sandbox. Instead, set test_order to true on any order. A test order moves through every status and gets a test tracking number, but Dreamship never bills, prints or ships it.
Choose the events you want and add your webhook URLs in API settings. You can also set webhook_url on a single order. Dreamship posts each event to that order's webhook_url and to every webhook URL in your API settings, once per address. Each post carries an X-Dreamship-Signature header, an HMAC SHA-256 hash of the JSON body keyed with your API key, so you can check it came from Dreamship. Reply with status 200 within 30 seconds; any other reply counts as a failure. Dreamship then tries again up to 10 times, waiting up to 10 minutes between tries. If every try fails, Dreamship turns that webhook URL off and emails your admins, or clears the order's webhook_url.
The Dreamship API allows 60 requests per minute for each API key. A request over the limit gets a 429 response that says how many seconds to wait. The X-RateLimit-Burst-Remaining header shows how many requests you have left. High-volume businesses can ask Dreamship for a higher limit.