USPS
Priority Mail Intl
10–15 days$18.30
$10.00 of taxes & duties included
all-in · no surprises
Pirate Ship offers no public API; GoatLabels ships one free and unlimited, covering rates, label purchase, voiding, and tracking across USPS, UPS, FedEx and DHL.
USPS, UPS, FedEx, and DHL quoted from a single endpoint — no per-carrier integration.
Calls are free and unlimited; labels come out of one prepaid balance you top up.
If you found this page you probably searched for API docs, found a help article instead, and started wondering whether scraping a dashboard was really the answer. It is not. This is what a public, documented shipping API looks like when it costs nothing to call.
| GoatLabels | Pirate Ship | |
|---|---|---|
| Public API | Yes — documented REST endpoints for rates, labels, voids, and tracking. | No public API is offered to build against. |
| What automation looks like without one | A POST from your own backend, in whatever language it is written in. | Manual entry, CSV upload, or a supported store connection. |
| Carriers reachable programmatically | USPS, UPS, FedEx, and DHL from one rate call. | USPS and UPS, through the dashboard. |
| Call metering | Unlimited calls on every plan, including Free. Labels are what you pay for. | Not applicable — there are no calls to meter. |
| Refunds | Void via the API and the credit lands back in the prepaid wallet. | Handled in-app under their own refund process. |
| Event delivery | Signed webhooks for tracking and label events — no polling loop to run. | No webhook endpoint to subscribe to. |
Pirate Ship is a trademark of its owner and is not affiliated with GoatLabels. Their carrier lineup and rates change — check their current site before you decide.
Automating a tool with no API means driving a browser, and browser automation against someone else's dashboard breaks on their next deploy. A documented REST endpoint with a versioned contract is the difference between a script and a system.
Every naive label integration has this bug once: a timeout, a retry, two labels, one refund ticket. Idempotency keys are first-class here, so the same key on the same request returns the same label instead of buying another.
Checking a tracking number on a timer is how you turn a status update into a cron job and a rate limit. Signed webhooks push tracking and label events to your endpoint when they happen, and the signature is how you know it was us.
There is no second-class path here: the dashboard and the REST API create shipments, rate-shop USPS, UPS, FedEx, and DHL, buy labels, and void them against the same prepaid wallet, so there is nothing to reconcile between the two. Orders can arrive as an API POST from your own backend, as a store sync, or as a pasted DM that Billy reads into a draft — they all land in the same queue with the same all-in quotes. Calls are free and unlimited on every plan, including the free one; you pay for labels, not for requests. Signed webhooks push tracking and label events to your endpoint so nothing has to poll.
Hey! 2x hoodies (M) 1x tee (L) 😅 Ship to: Maya R. Austin, TX 78701
REST API, connectors, DMs, and screenshots — one queue, no import mapping.
No monthly minimum to print, and no per-call charge. The API and the dashboard debit the same balance.
Shopify, Etsy, WooCommerce, and TikTok Shop sync into To Ship without any integration work on your side, so the API is free to handle the parts that are actually yours — the internal tool, the fulfilment job, the marketplace nobody built a connector for.
Via AI tiles: an order that never became a record still becomes a label.
Rates, purchase, void, and tracking over REST, plus the pieces that make an integration survive production: idempotency keys, signed webhooks, and a wallet that both the API and the dashboard spend from.
Card, Apple Pay, Google Pay, ACH bank transfer, and crypto all top up the same balance, and the API spends from it exactly as the dashboard does. Void a shipment and the credit lands back in the wallet, available immediately.
Not every order reaches your backend as JSON. A DM, a comment thread, a voice note, a screenshot — Billy reads any of them and drafts the whole label into the same queue your API writes to.
No monthly minimum to print and no metering on calls: you can hammer the rate endpoint on Free and pay nothing for it. Pro is an optional flat plan for unlimited shipments and cheaper label pricing.
One rate call returns USPS, UPS, FedEx, and DHL as four live all-in numbers, so you are not writing four carrier integrations to find out which is cheapest. The number in the response is the exact amount that leaves the balance when you buy that rate. Shopify, Etsy, WooCommerce, and TikTok Shop sync into To Ship and get tracking pushed back when you print, but a connector is never a prerequisite.
REST and JSON, one Bearer header, idempotency keys so a retried request cannot double-buy a label, signed webhooks for tracking and label events instead of polling, and errors that name the field to fix. OpenAPI 3.1 spec, no SDK lock-in.


Label ready
CL-1038 · Brooklyn, NY
Automating labels rarely means nobody ever touches one. Support needs to reprint, the warehouse needs to void, and somebody needs to see what the API bought — all of it is in the same app, on the same balance, from a phone.
When a customer asks about an order your code created, you should not need to open a tracking site. Ask Billy in plain English, and it looks up the shipment, reads back the tracking state, and can draft the replacement label against your prepaid balance. This is the real product, not a render.

Listening
"Where's Maya's package?"
Out for delivery
CL-1039 · Austin, TX · by 6 PM
Plain English in — names, addresses, weights, carriers, services · same shipments the API created · reads the all-in rate back before a cent leaves the wallet · phone, browser, or Telegram.
The same parcel priced by more than one carrier in a single response, each an all-in number that is exactly what leaves your prepaid balance on purchase. Nothing arrives the day after with an adjustment on it, and a void credits the wallet rather than a card statement three weeks out.
Priority Mail Intl
10–15 days$18.30
$10.00 of taxes & duties included
all-in · no surprises
Intl Connect Plus
3–5 days$22.80
$11.00 of taxes & duties included
all-in · no surprises
Express Worldwide
1–2 days$26.20
$12.20 of taxes & duties included
all-in · no surprises
REST, JSON, one Bearer header. Create a shipment, rate-shop four carriers, buy the winner, void it back to the wallet, and receive signed webhooks for tracking. Unlimited calls on every plan — you pay for labels, never for requests.
POST /api/v1/shipments
Authorization: Bearer sk_live_…
Idempotency-Key: ord_8421
{
"to": { "name": "Joyce", "city": "Berlin", "country": "DE" },
"parcel": { "weight": 1.2, "weight_unit": "kg" },
"service": "fedex_intl_priority"
}
Free covers 50 shipments a month with the public API, the store connectors, and Billy all unlimited underneath it — we make a little on each label instead. Pro is a flat monthly fee for unlimited shipments and cheaper label pricing. The API is not the thing being sold on either tier: calls stay free and unlimited whichever plan you are on.
Volume pricing
illustrativemore volume → lower per-label rates
$0 / forever
Enough to put a real integration into production without a card on file.
The assistant that reads a DM, a screenshot, or a voice note into a drafted label runs unlimited in the web app on Free. Pro adds Billy on Telegram.
GET /api/v1/shipments
200 OK · plan: free
Unlimited calls on Free — still unlimited on Pro.
On Pro we will work with you to beat the label rates you are already getting from
ShippoPirateShipShipStationLabel prices are quoted live from USPS, UPS, FedEx, and DHL and shown as one all-in number — the same number that leaves your wallet. Pirate Ship's rates and features move, so compare against their current site rather than a figure on ours. Full pricing details
If you print by hand and it works, an integration is a liability, not an upgrade. These are the teams for whom the missing API is the actual blocker.
TikTok Shop & live commerce
A thousand orders in an evening is not a manual workflow. A rate call and a buy call in a fulfilment job turns the whole night into a queue your code drains while you sleep.

Etsy & independent creators
If you already built the admin panel that tracks orders, the label belongs inside it. One Bearer header and two calls put buying and voiding a label right in the screen your team already uses.
One queue, connector or not
Order #1024 · pasted from a comment thread
The orders that never became JSON
REST and the UI, one balance
1
wallet behind the API and the dashboard
A video took off and I had 80 TikTok Shop orders by morning. I printed every label from my phone on the bus to the post office.
Early customer · TikTok
TikTok Shop seller
I run my Etsy shop from the kitchen. The AI reads the order, picks the carrier, the label prints. That's the whole workflow now.
Early customer · Etsy
Etsy maker
The API is what every shipping API pretends to be. Idempotency that actually works.
Sasha R.
Staff engineer, marketplace
Also comparing tools? See the full GoatLabels vs Pirate Ship breakdown, the FedEx and DHL carrier gap, or the step-by-step switch. Evaluating API-first platforms specifically? GoatLabels vs EasyPost covers per-call metering and carrier accounts.
Create an account, fund a wallet with card, Apple Pay, Google Pay, ACH, or crypto, and rate-shop a real parcel across USPS, UPS, FedEx, and DHL with one POST before you write anything else.
Sign up in seconds. No card required. No monthly minimum.