GoatLabels GoatLabels
For the developers who searched for an API.

The shipping API Pirate Ship doesn't have


Free, unlimited, four carriers.

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.

Four carriers, one rate call

USPS, UPS, FedEx, and DHL quoted from a single endpoint — no per-carrier integration.

UPSFedExDHLUSPS all quoted
One rate call Four quotes back.
Quote = debit No day-after invoice.
Same via UI Endpoint or dashboard.

Metered by nothing, funded by a wallet

Calls are free and unlimited; labels come out of one prepaid balance you top up.

VisaMastercardAmerican ExpressApple PayGoogle PayBitcoinEthereumTether (USDT)
Prepaid Spent label by label.
No call metering Unlimited on Free.
Voids credited Straight back to the balance.
For developers

There is no Pirate Ship API. Here is what to build against instead.

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.

Three things you were about to build badly.

The scraper you didn't want to write

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.

The retry that bought two labels

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.

The polling loop for tracking

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.

And when Pirate Ship is the right choice

  • You do not actually need automation — you print a handful of labels a week by hand, and an API would be a solution looking for a problem.
  • Your volume already flows through a storefront Pirate Ship connects to, and nothing in your stack needs to create a label itself.
  • You only ship USPS domestic and the two-carrier lineup has never cost you a cheaper option.
Dashboard and endpoint, one balance

Everything the UI does, the API does too.

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.

1
Any order shape in
API POST, store sync, DM, or screenshot
maya_boutique

Hey! 2x hoodies (M) 1x tee (L) 😅 Ship to: Maya R. Austin, TX 78701

Shopify
Synced into To Ship
TikTok Shop
Synced into To Ship
DM screenshot
Order
#1847
Customer
Jordan Lee
Items
1x Hoodie (L)
Address
Brooklyn, NY
Drop the screenshot or paste the DM

REST API, connectors, DMs, and screenshots — one queue, no import mapping.

2 Billy AI

For the orders that never reach your backend.

Billy AI
  • Reads a DM, comment thread, voice note, or screenshot
  • Fills the addresses and the package details
  • Rate-shops USPS, UPS, FedEx, and DHL at the all-in price
  • Writes into the same queue your API calls do
Drafted. Checked. Yours to confirm.
3
Clean label out
Bought from the wallet
Paid from your prepaid balance
Card, Apple Pay, Google Pay, ACH, or crypto
$12.47
USPS
Label purchased
Bought via POST /shipments — all-in rate
$12.47

No monthly minimum to print, and no per-call charge. The API and the dashboard debit the same balance.

Not everything needs to go through your code.

Connectors for the storefronts, the API for everything else.

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.

13 connected today 2 via AI 8 coming soon
Connected today 13 storefronts sync to To Ship
Shopify logo Shopify
Etsy logo Etsy
WooCommerce logo WooCommerce
TikTok Shop logo TikTok Shop
Amazon logo Amazon
eBay logo eBay
Squarespace logo Squarespace
Wix logo Wix
Walmart logo Walmart
Square logo Square
BigCommerce logo BigCommerce
Magento logo Magento
Temu logo Temu
Via AI

DM and screenshot parsing — the AI builds the label.

Coming soon
Shopify Plus logo Shopify Plus Soon
Zapier logo Zapier Soon
NetSuite logo NetSuite Soon
Ecwid logo Ecwid Soon
Shein logo Shein Soon
ChannelAdvisor logo ChannelAdvisor Soon
SkuVault logo SkuVault Soon
Zoho Inventory logo Zoho Inventory Soon
A real API, and the things around it.

The API Pirate Ship never shipped.
Free and unlimited on every plan.

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.

One prepaid wallet,
five ways to fund it

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.

Wallet balance
$1,247.36 USD
AI

AI drafting for orders
that are not JSON

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.

Billy LIVE
Where's the package to Maya?
It's in transit via UPS. Expected Friday, Aug 7.
UPS
1Z8923A6B05G4123456
In transit
Austin, TX → Dallas, TX
Ask Billy anything...

No monthly minimum
to print

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.

Shipment summary
UPS Ground $12.49
Insurance $0.75
Fuel surcharge $0.32
Total $13.56

USPS, UPS, FedEx, and DHL
in one quote

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.

Compare rates
UPS UPS $12.48
FedEx FedEx $13.22
DHL DHL $14.10
USPS USPS $11.79
Duties & taxes paid

Idempotency and webhooks,
not just endpoints

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.

POST /v1/shipments
{
"to" : { "name" : "Maya" },
"from" : { "name" : "Alex" },
"service" : "ups_ground" ,
"label_format" : "pdf"
}
Webhook delivered
GoatLabels mobile shipments queue with all-in carrier prices
Billy drafting a label from a pasted DM on mobile

Label ready

CL-1038 · Brooklyn, NY

The dashboard your API users still want

A UI for the humans, an endpoint for the code.

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.

Every label the API buys shows up in the same shipments list a human can search.
Void from the app or from the endpoint — the credit goes to the same wallet either way.
USPS, UPS, FedEx, and DHL come back as four all-in prices on one screen.
One-tap print to a share sheet or a thermal printer over Wi-Fi for the manual exceptions.
Paste the DM, snap the thread, or drop the screenshot for orders that never hit your backend.
Debugging without a dashboard tab

Ask Billy where a shipment actually is.

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.

goatlabels.io/dashboard/shipments — Billy
Billy reading back a parcel's tracking history over the purchased labels list

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.

All-in quotes

One rate call, every carrier back.

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.

US → DE 2.6 lbs 12×8×4 in
USPS

USPS

Priority Mail Intl

10–15 days

$18.30

$10.00 of taxes & duties included

all-in · no surprises

Best balance
FedEx

FedEx

Intl Connect Plus

3–5 days

$22.80

$11.00 of taxes & duties included

all-in · no surprises

DHL

DHL

Express Worldwide

1–2 days

$26.20

$12.20 of taxes & duties included

all-in · no surprises

No carrier invoice the day after Void → credit back to the wallet you funded Multi-currency display
Public API v1

The API that doesn't exist over there.

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.

Create, rate-shop, and buy — the same three calls you already write
Signed webhooks for tracking and label events instead of polling
Real idempotency keys — a retried request never buys two labels
OpenAPI 3.1 spec, no SDK lock-in, unlimited calls on every plan
Read the API docs Get an API key $0 on every plan
curl https://api.goatlabels.io/api/v1/shipments
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"
}
No plan to clear first

No plan to clear first.

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.

Pro

Most popular
$40 / month
Unlimited shipments — no monthly cap
Cheaper label pricing that scales down as your volume grows
Billy AI on Telegram — draft a label without opening the dashboard
API access still free and unlimited

Volume pricing

illustrative
less volume more volume

more volume → lower per-label rates

Free

$0 / forever

Enough to put a real integration into production without a card on file.

50 shipments a month, no monthly minimum to print
The full REST API with unlimited calls and signed webhooks
USPS, UPS, FedEx, and DHL rate-shopped on every parcel
Billy AI in the web app, unlimited — paste, screenshot, or speak
Shopify, Etsy, WooCommerce, and TikTok Shop sync included

Billy is not a paid tier

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.

Web — every plan Telegram — Pro

API free on every plan

GET /api/v1/shipments

200 OK · plan: free

Unlimited calls on Free — still unlimited on Pro.

Bring the invoice you pay today

On Pro we will work with you to beat the label rates you are already getting from

ShippoPirateShipShipStation
No contracts No monthly minimum to print Start in seconds
USPS UPS FedEx DHL

Label 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

Who needs the endpoint

Not every Pirate Ship user needs an API.

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.

Teams automating a drop

TikTok Shop & live commerce

Prepaid

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.

4 carriers per quote no monthly minimum bulk print
goatlabels.io/dashboard/shipments
GoatLabels shipments queue with purchased labels

Shops with an internal tool

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

Sellers living in the DMs

The orders that never became JSON

got the dress! can you ship to Austin?
Label drafted · CL-1024

Devs who want the dashboard too

REST and the UI, one balance

1

wallet behind the API and the dashboard

Real sellers, real words

Sellers and devs who stopped automating a dashboard by hand.

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.
E

Early customer · TikTok

TikTok Shop seller

TikTok Shop
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.
E

Early customer · Etsy

Etsy maker

Etsy
The API is what every shipping API pretends to be. Idempotency that actually works.
S

Sasha R.

Staff engineer, marketplace

API user

Pirate Ship API alternative — FAQ

Does Pirate Ship have an API?
Not a public one you can build against. Automation there means the dashboard, a CSV upload, or a supported store connection. If your requirement is code creating labels directly, that is the gap this page is about — GoatLabels offers a documented REST API covering rates, label purchase, voiding, and tracking.
What does the GoatLabels API cost?
Calls are free and unlimited on every plan, including the free one. You pay for labels, not for requests, so a chatty rate endpoint costs nothing to hammer. There is also no monthly minimum to print, so an integration can sit idle for a month without costing anything.
Which carriers can I quote programmatically?
USPS, UPS, FedEx, and DHL, all from one rate call. The response contains live all-in prices, and the number you see is the exact amount debited from your prepaid wallet when you buy that rate — no carrier invoice arriving afterwards with an adjustment on it.
How do you prevent a retry from buying two labels?
Idempotency keys. Send the same key on a retried purchase request and you get the original label back rather than a second one, which is the failure mode every naive label integration hits the first time a request times out mid-flight.
How do I get tracking updates?
Signed webhooks. Register an endpoint and tracking and label events are pushed to it as they happen, with a signature so you can verify the request came from us. There is no polling loop to write and no rate limit to design around.
Can I void a label through the API?
Yes, and the refund goes back to your prepaid wallet balance where it is immediately available for the next purchase. That is deliberately different from a card refund: there is nothing to reconcile against a statement and no multi-week wait.
Do I need to connect a store to use the API?
No. Connectors for Shopify, Etsy, WooCommerce, and TikTok Shop exist and sync into the same queue, but the API works standalone — create a shipment, rate it, buy it, and never connect a storefront at all.

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.

Get a key and buy one label from a terminal.

Stop automating a dashboard.
Start calling an endpoint.

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.