Skip to main content
Every shippo.api.* operation is listed below with parameter shapes and return types from the plugin Zod schemas.
New to Corsair? See API access, authentication, and error handling.

Addresses

create

addresses.create Create a reusable address. Only country is required, but buying a label needs a name and a street line Risk: write
Input Only country is required by the API, but buying a label needs name and a street line. An address with is_complete: false still gets rates. Output

get

addresses.get Read one saved address by object_id Risk: read
Input Output

list

addresses.list List the account’s saved addresses, most recent first Risk: read
Input Output

validate

addresses.validate Re-run validation on a saved address and read validation_results: whether it is valid, and what was corrected or could not be matched Risk: read
Input Reads validation_results: is_valid plus the corrections Shippo applied or the parts it could not match. Output

Batches

addShipments

batches.addShipments Add shipments to a batch that is still validating or valid Risk: write
Input
Output

create

batches.create Create a batch of shipments to buy labels for together. Validation runs asynchronously Risk: write
Input Each shipment needs a carrier and a servicelevel, from the entry or the batch defaults. Those two resolve independently.
Output

get

batches.get Read a batch: its status, per-shipment results and the merged label URLs once purchased Risk: read
Input Output

purchase

batches.purchase Buy every label in a batch: spends money per shipment and answers 202, so the labels arrive through batches.get Risk: write
Input Charges once per shipment and answers 202, so the merged label URLs arrive through batches.get, one PDF per 100 labels. Output

removeShipments

batches.removeShipments Remove shipments from a batch before it is purchased Risk: write
Input Output

Carrier Accounts

create

carrierAccounts.create Connect the caller’s own carrier account, with that carrier’s credential set Risk: write
Input Output

get

carrierAccounts.get Read one carrier account Risk: read
Input Output

list

carrierAccounts.list List the carrier accounts on the account. Every call that asks for rates depends on one of these being active Risk: read
Input Output

register

carrierAccounts.register Enrol a Shippo-supplied carrier account rather than the caller’s own Risk: write
Input Output

registrationStatus

carrierAccounts.registrationStatus Check whether a carrier has approved the account for live rates Risk: read
Input Output

update

carrierAccounts.update Change a carrier account’s credentials or switch it on or off Risk: write
Input Output

Customs Declarations

create

customsDeclarations.create Create a customs declaration for an international shipment, certifying its contents and naming what to do if it cannot be delivered Risk: write
Input
Output

get

customsDeclarations.get Read one customs declaration Risk: read
Input Output

list

customsDeclarations.list List customs declarations Risk: read
Input Output

Customs Items

create

customsItems.create Create a customs item: what it is, how many, its weight and declared value Risk: write
Input Output

get

customsItems.get Read one customs item Risk: read
Input Output

list

customsItems.list List customs items used in international declarations Risk: read
Input Output

Manifests

create

manifests.create Close out a carrier’s day with a manifest covering transactions not yet manifested Risk: write
Input Output

get

manifests.get Read one manifest and its document URLs Risk: read
Input Output

list

manifests.list List manifests, the end-of-day paperwork a carrier requires Risk: read
Input Output

Orders

create

orders.create Create an order so Shippo can group the labels bought to fulfil it Risk: write
Input
Output

get

orders.get Read one order with its line items and buyer address Risk: read
Input Output

list

orders.list List orders, filterable by status, shop app or when they were placed Risk: read
Input The status filter is sent as one order_status[] query parameter per status. The date filters are start_date and end_date, and they select on placed_at, not on when the object was created; Shippo answers 200 for an unknown query parameter, so a differently-named field would filter nothing. Output

Parcels

create

parcels.create Create a reusable parcel with its dimensions and weight, both as decimal strings Risk: write
Input Weight and dimensions are decimal strings, not numbers. Up to four decimal places.
Output

get

parcels.get Read one saved parcel by object_id Risk: read
Input Output

list

parcels.list List the account’s saved parcels Risk: read
Input Output

Parcel Templates

create

parcelTemplates.create Save a reusable parcel template, optionally based on a carrier template token Risk: write
Input Output

delete

parcelTemplates.delete Delete one of the account’s parcel templates. Anything still referring to its token stops resolving Risk: destructive · Irreversible
Input Output

get

parcelTemplates.get Read one of the account’s parcel templates Risk: read
Input Output

getCarrier

parcelTemplates.getCarrier Read one carrier parcel template by its token Risk: read
Input Output

list

parcelTemplates.list List the account’s own parcel templates Risk: read
Input Output

listCarrier

parcelTemplates.listCarrier List the carrier’s predefined parcel templates, whose tokens can be reused instead of dimensions Risk: read
Input Output

update

parcelTemplates.update Change one of the account’s parcel templates Risk: write
Input Output

Pickups

create

pickups.create Ask a carrier to collect parcels, naming the transactions it covers and a pickup window Risk: write
Input
Output

Rates

get

rates.get Read one rate by object_id. Rates older than 390 days are gone Risk: read
Input Output

Refunds

create

refunds.create Ask the carrier to void a bought label and refund it. The carrier may refuse, so the outcome arrives as a status Risk: write
Input Asks the carrier to void the label. The carrier can refuse, so the outcome arrives as a status, not as a success. Output

get

refunds.get Read one refund request Risk: read
Input Output

list

refunds.list List refund requests and their outcomes Risk: read
Input This route is /refunds/ with a trailing slash; /refunds answers 404. Output

Shipments

create

shipments.create Create a shipment from an origin, destination and one or more parcels; Shippo starts computing carrier rates. Pass async: false to get them back in the response Risk: write
Input Shippo defaults async to true, returning before rates exist. Pass async: false to get rates in the response, or read them later with shipments.rates.
Output

get

shipments.get Read one shipment, including any rates already computed Risk: read
Input Output

list

shipments.list List shipments, optionally limited to a creation-date window Risk: read
Input Output

rates

shipments.rates List the rates computed for a shipment. This is what you call after an async create returned no rates Risk: read
Input Call this after an async create returned status: QUEUED with no rates. Output

ratesInCurrency

shipments.ratesInCurrency List a shipment’s rates expressed in a chosen currency Risk: read
Input Output

Tracks

get

tracks.get Read a tracking status and history for a carrier and tracking number Risk: read
Input Output

register

tracks.register Register a tracking number Shippo has not seen, usually from a label bought elsewhere. From then on track_updated webhooks fire for it Risk: write
Input Registers a tracking number Shippo has not seen, usually from a label bought elsewhere. track_updated webhooks fire for it afterwards. Output

Transactions

create

transactions.create Buy a label from a rate: spends money on the account’s carrier and cannot be undone except by a refund Risk: write
Input Spends money on the account’s carrier. Pass async: false to wait for label_url. label_file_type takes any of PNG, PNG_2.3x7.5, PDF, PDF_2.3x7.5, PDF_4x6, PDF_4x8, PDF_A4, PDF_A5, PDF_A6 or ZPLII; omitting it uses the dashboard default. Never retried on a 5xx, because the carrier may already have applied it. Output

get

transactions.get Read one bought label. Re-read this rather than reusing a label_url, which expires Risk: read
Input label_url expires; its Expires query parameter is a Unix timestamp. Re-read the transaction instead of reusing an old URL. Output

list

transactions.list List bought labels, filterable by rate, object status or tracking status Risk: read
Input Output

Webhooks

create

webhooks.create Subscribe one URL to tracking, transaction or batch events, or to all of them Risk: write
Input url, event and is_test are the only fields this route accepts, so an HMAC secret is arranged with Shippo support rather than passed here. One subscription per event, but a label it sells creates its own tracking webhook. Output

delete

webhooks.delete Delete a webhook subscription. Shippo keeps creating tracking webhooks for labels it sells, so this only removes the one named Risk: destructive · Irreversible
Input Output

get

webhooks.get Read one webhook subscription Risk: read
Input Output

list

webhooks.list List the webhook subscriptions on the account Risk: read
Input Output

update

webhooks.update Change a subscription’s URL or event, or switch it on or off Risk: write
Input Output