USPS · UPS · FedEx labels over HTTPS

Shipping labels,
bought from your own code.

Compare USPS, UPS and FedEx in one quote, then buy, cancel and track labels with one API key. Postage comes out of a prepaid wallet, and every change reaches you as a signed webhook.

PDF 4×6USPS · UPS · FedExGround to overnightNo subscription
GROUND
ADVANTAGEUS POSTAGE PAID
8 OZ · 10×8×1 IN
FROMTEGO LLC
HOUSTON TX 77042
JANE DOE
100 MAIN ST
AUSTIN TX 78701-1234
TRACKING #9400 1118 9922 3814 6720 55
REF SHOP-1042lbl_3Qm8…

Three calls
to a label

Your server asks for rates, buys the one you pick, and listens for what happens next. The order matters: a quote is what locks the price you are charged.

Step 1 · POST /rates

Get quotes

Send the destination and parcel. You get every carrier and service your account can use, each with a price and a quote_id that holds for 15 minutes.

$ curl https://labels.inkteo.com/v1/rates \
  -H "X-Api-Key: ink_live_…" \
  -d '{"ship_to":{…},
       "parcel":{"weight_oz":8,"length_in":10,
                  "width_in":8,"height_in":1}}'
Step 2 · POST /labels

Buy the label

Buy a quote with an Idempotency-Key. A retry after a timeout returns the same label and never charges twice.

$ curl https://labels.inkteo.com/v1/labels \
  -H "X-Api-Key: ink_live_…" \
  -H "Idempotency-Key: SHOP-1042" \
  -d '{"quote_id":"qt_8Hk2…"}'
Step 3 · Webhooks

Hear what happens

Purchases, cancellations, tracking updates and carrier adjustments are posted to your URL, signed with your secret.

X-Inkteo-Event: tracking.updated
X-Inkteo-Signature: t=1790777963,v1=9f2c…
{ "status": "out_for_delivery" }

Built for
production

The parts that go wrong in label integrations are handled on our side: double charges on retries, unsigned callbacks, and charges you cannot trace back to a label.

Safe retries

Every purchase needs an Idempotency-Key. The same key and body return the same label; a different body with the same key is rejected.

Signed webhooks

HMAC-SHA256 over the timestamp and raw body. Failed deliveries retry for up to a day, and you can resend any delivery from the panel.

Wallet and history

Top up once and labels draw from the balance. GET /transactions lists every charge, refund and adjustment with its label.

Cancel requests

Cancel an unused label with one call. The refund lands in your wallet when the cancellation is approved, and a webhook tells you.

Tracking

Normalized statuses from pre_transit to delivered, on request or pushed to your webhook.

Your ship-from

Labels print your registered warehouse address. Keys, webhooks and API labels are managed from your Inkteo panel.

The specs

What the API supports today. Everything is versioned by path, and fields are only ever added.

CarriersUSPS, UPS and FedEx in a single rate request
USPSGround Advantage, Priority Mail, Priority Mail Express
UPSGround
FedEx2Day
Label formatPDF, 4×6 in
PaymentPrepaid wallet, per label. No subscription or minimums.
AuthenticationX-Api-Key header. Up to 5 active keys per account, test and live environments.
Rate limits120 requests per minute per key; 30 purchases per minute. Over the limit: 429 with Retry-After.
QuotesValid for 15 minutes, usable once
Daily spend capSet per account across all keys, adjustable on request
Errors{"error":{"code","message","request_id"}} with stable codes

Webhook events

label.purchasedlabel.cancel_requestedlabel.cancelledlabel.cancel_rejectedtracking.updatedadjustment.chargedbalance.low

Questions

Short answers. The full reference is in your panel under Shipping → Label API → API Docs.

How is the price set?

Each account has its own rates for every carrier. The price in the quote is the price charged; if the carrier price changes before you buy, the purchase is refused and you ask for a new quote.

Do I need to talk to sales?

No. Sign up, add funds and create a key in your panel. Accounts start with a daily spend cap; contact us at info@inkteo.com if you need it raised.

Can I test without buying real postage?

Yes. We can open a test-environment account with ink_test_… keys so you can build the integration and your webhook handler before buying live labels. Email info@inkteo.com to get one.

What happens if my request times out?

Send the same request again with the same Idempotency-Key. If the label was bought, you get it back; you are never charged twice.

What if the carrier adjusts the postage later?

If a package is reweighed or remeasured and the carrier bills more, the difference is charged to your wallet, listed in your transactions against that label, and sent as an adjustment.charged webhook.

Which carriers and services can I use?

USPS, UPS and FedEx for US domestic shipments. One call to /rates returns every service enabled on your account, so you can pick the cheapest or the fastest. International and more services are on the way.

Live in an afternoon

Use the Inkteo account you already have, or create one. Everything below happens in your panel under Shipping → Label API, no sales call needed.

  1. Sign up and verify your email.
  2. Add funds to your wallet. Labels draw from the balance.
  3. Create an API key and add your webhook URL.
  4. Buy your first label with POST /labels.