ShipEngine API
    ADDRESSES
    Parse an address Validate An Address
    BATCHES
    List Batches Create A Batch Get Batch By External ID Delete Batch By Id Get Batch By ID Update Batch By Id Add to a Batch Get Batch Errors Process Batch ID Labels Remove From Batch
    CARRIER_ACCOUNTS
    Connect a carrier account Disconnect a carrier Get carrier settings Update carrier settings
    CARRIERS
    List Carriers Get Carrier By ID Add Funds To Carrier Get Carrier Options List Carrier Package Types List Carrier Services
    DOWNLOADS
    Download File
    INSURANCE
    Disconnect a Shipsurance Account Connect a Shipsurance Account Add Funds To Insurance Get Insurance Funds Balance
    LABELS
    List labels Purchase Label Get Label By External Shipment ID Purchase Label with Rate ID Purchase Label with Shipment ID Get Label By ID Create a return label Get Label Tracking Information Void a Label By ID
    MANIFESTS
    List Manifests Create Manifest Get Manifest By Id
    PACKAGE_TYPES
    List Custom Package Types Create Custom Package Type Get Custom Package Type By ID Update Custom Package Type By ID Delete A Custom Package By ID
    RATES
    Get Shipping Rates Get Bulk Rates Estimate Rates Get Rate By ID
    SHIPMENTS
    List Shipments Create Shipments Get Shipment By External ID Parse shipping info Get Shipment By ID Update Shipment By ID Cancel a Shipment Get Shipment Errors Get Shipment Rates Add Tag to Shipment Remove Tag from Shipment
    TAGS
    Get Tags Create a New Tag Delete Tag Update Tag Name
    TRACKING
    Get Tracking Information Start Tracking a Package Stop Tracking a Package
    WAREHOUSES
    List Warehouses Create Warehouse Get Warehouse By Id Update WareHouse By Id Delete Warehouse By ID
    WEBHOOKS
    Get Webhook By ID Update a Webhook Delete Webhook By ID

ShipEngine API
v1.1.202004291304

https://api.shipengine.com

ShipEngine's easy-to-use REST API lets you manage all of your shipping needs without worrying about the complexities of different carrier APIs and protocols. We handle all the heavy lifting so you can focus on providing a first-class shipping experience for your customers at the best possible prices.

Each of ShipEngine's features can be used by itself or in conjunction with each other to build powerful shipping functionality into your application or service.

Getting Started

If you're new to REST APIs then be sure to read our introduction to REST to understand the basics. Learn how to authenticate yourself to ShipEngine, and then use our sandbox environment to kick the tires and get familiar with our API. If you run into any problems, then be sure to check the error handling guide for tips.

Here are some step-by-step tutorials to get you started:

  • Learn how to create your first shipping label
  • Calculate shipping costs and compare rates across carriers
  • Track packages on-demand or in real time
  • Validate mailing addresses anywhere on Earth

Shipping Labels for Every Major Carrier

ShipEngine makes it easy to create shipping labels for any carrier and download them in a variety of file formats. You can even customize labels with your own messages and images.

Real-Time Package Tracking

With ShipEngine you can get the current status of a package or subscribe to real-time tracking updates via webhooks. You can also create custimized tracking pages with your own branding so your customers will always know where their package is.

Compare Shipping Costs Across Carriers

Make sure you ship as cost-effectively as possible by comparing rates across carriers using the ShipEngine Rates API. Or if you don't know the full shipment details yet, then you can get rate estimates with limited address info.

Worldwide Address Validation

ShipEngine supports address validation for virtually every country on Earth, including the United States, Canada, Great Britain, Australia, Germany, France, Norway, Spain, Sweden, Israel, Italy, and over 160 others.

addresses

Parse an address
put /v1/addresses/recognize

The address-recognition API makes it easy for you to extract address data from unstructured text, including the recipient name, line 1, line 2, city, postal code, and more.

Data often enters your system as unstructured text (for example: emails, SMS messages, support tickets, or other documents). ShipEngine's address-recognition API helps you extract meaningful, structured data from this unstructured text. The parsed address data is returned in the same structure that's used for other ShipEngine APIs, such as address validation, rate quotes, and shipping labels.

Note: Address recognition is currently supported for the United States, Canada, Australia, New Zealand, the United Kingdom, and Ireland.

Request

Body

Responses

200 - Returns the parsed address, as well as a confidence score and a list of all the entities that were recognized in the text.
Body
400 - The request contained errors.
Body
500 - An error occurred on ShipEngine's side. > This error will automatically be reported to our engineers.
Body
Request sample:
curl --request PUT --url 'https://api.shipengine.com /v1/addresses/recognize' --header 'ContentType: application/json'
Validate An Address
post /v1/addresses/validate

Address validation ensures accurate addresses and can lead to reduced shipping costs by preventing address correction surcharges. ShipEngine cross references multiple databases to validate addresses and identify potential deliverability issues.

Request

Body

Responses

200 - The request was a success.
Body
400 - The request contained errors.
Body
500 - An error occurred on ShipEngine's side. > This error will automatically be reported to our engineers.
Body
Request sample:
curl --request POST --url 'https://api.shipengine.com /v1/addresses/validate' --header 'ContentType: application/json'

batches

List Batches
get /v1/batches

List Batches associated with your Shipengine account

Query Params

status string
page integer
Return a specific page of results. Defaults to the first page. If set to a number that's greater than the number of pages of results, an empty page is returned.
page_size integer
The number of results to return per response.
sort_dir string
Controls the sort order of the query.
sort_by string

Responses

200 - The request was a success.
Body
404 - The specified resource does not exist.
Body
500 - An error occurred on ShipEngine's side. > This error will automatically be reported to our engineers.
Body
Request sample:
curl --request GET --url 'https://api.shipengine.com /v1/batches' --header 'ContentType: application/json'
Create A Batch
post /v1/batches

Create a Batch

Request

Body

Responses

200 - The requested object creation was a success.
Body
400 - The request contained errors.
Body
500 - An error occurred on ShipEngine's side. > This error will automatically be reported to our engineers.
Body
Request sample:
curl --request POST --url 'https://api.shipengine.com /v1/batches' --header 'ContentType: application/json'
Get Batch By External ID
get /v1/batches/external_batch_id/{external_batch_id}

Get Batch By External ID

Responses

200 - The request was a success.
Body
400 - The request contained errors.
Body
404 - The specified resource does not exist.
Body
500 - An error occurred on ShipEngine's side. > This error will automatically be reported to our engineers.
Body
Request sample:
curl --request GET --url 'https://api.shipengine.com /v1/batches/external_batch_id/{external_batch_id}' --header 'ContentType: application/json'
Delete Batch By Id
delete /v1/batches/{batch_id}

Delete Batch By Id

Responses

204 - The request was successful.
Body
400 - The request contained errors.
Body
404 - The specified resource does not exist.
Body
500 - An error occurred on ShipEngine's side. > This error will automatically be reported to our engineers.
Body
Request sample:
curl --request DELETE --url 'https://api.shipengine.com /v1/batches/{batch_id}' --header 'ContentType: application/json'
Get Batch By ID
get /v1/batches/{batch_id}

Get Batch By ID

Responses

200 - The request was a success.
Body
400 - The request contained errors.
Body
404 - The specified resource does not exist.
Body
500 - An error occurred on ShipEngine's side. > This error will automatically be reported to our engineers.
Body
Request sample:
curl --request GET --url 'https://api.shipengine.com /v1/batches/{batch_id}' --header 'ContentType: application/json'
Update Batch By Id
put /v1/batches/{batch_id}

Update Batch By Id

Responses

204 - The request was successful.
Body
400 - The request contained errors.
Body
404 - The specified resource does not exist.
Body
500 - An error occurred on ShipEngine's side. > This error will automatically be reported to our engineers.
Body
Request sample:
curl --request PUT --url 'https://api.shipengine.com /v1/batches/{batch_id}' --header 'ContentType: application/json'
Add to a Batch
post /v1/batches/{batch_id}/add

Add a Shipment or Rate to a Batch

Request

Body

Responses

204 - The request was successful.
Body
400 - The request contained errors.
Body
404 - The specified resource does not exist.
Body
500 - An error occurred on ShipEngine's side. > This error will automatically be reported to our engineers.
Body
Request sample:
curl --request POST --url 'https://api.shipengine.com /v1/batches/{batch_id}/add' --header 'ContentType: application/json'
Get Batch Errors
get /v1/batches/{batch_id}/errors

Error handling in batches are handled differently than in a single synchronous request. You must retrieve the status of your batch by getting a batch and getting an overview of the statuses or you can list errors directly here below to get detailed information about the errors.

Query Params

page integer
Return a specific page of results. Defaults to the first page. If set to a number that's greater than the number of pages of results, an empty page is returned.
pagesize integer

Responses

200 - The request was a success.
Body
400 - The request contained errors.
Body
404 - The specified resource does not exist.
Body
500 - An error occurred on ShipEngine's side. > This error will automatically be reported to our engineers.
Body
Request sample:
curl --request GET --url 'https://api.shipengine.com /v1/batches/{batch_id}/errors' --header 'ContentType: application/json'
Process Batch ID Labels
post /v1/batches/{batch_id}/process/labels

Process Batch ID Labels

Request

Body

Responses

204 - The request was successful.
Body
400 - The request contained errors.
Body
404 - The specified resource does not exist.
Body
500 - An error occurred on ShipEngine's side. > This error will automatically be reported to our engineers.
Body
Request sample:
curl --request POST --url 'https://api.shipengine.com /v1/batches/{batch_id}/process/labels' --header 'ContentType: application/json'
Remove From Batch
post /v1/batches/{batch_id}/remove

Remove a shipment or rate from a batch

Request

Body

Responses

204 - The request was successful.
Body
400 - The request contained errors.
Body
404 - The specified resource does not exist.
Body
500 - An error occurred on ShipEngine's side. > This error will automatically be reported to our engineers.
Body
Request sample:
curl --request POST --url 'https://api.shipengine.com /v1/batches/{batch_id}/remove' --header 'ContentType: application/json'

carrier_accounts

Connect a carrier account
post /v1/connections/carriers/{carrier_name}

Connect a carrier account

Request

Body

Responses

200 - The request was a success.
Body
400 - The request contained errors.
Body
404 - The specified resource does not exist.
Body
500 - An error occurred on ShipEngine's side. > This error will automatically be reported to our engineers.
Body
Request sample:
curl --request POST --url 'https://api.shipengine.com /v1/connections/carriers/{carrier_name}' --header 'ContentType: application/json'
Disconnect a carrier
delete /v1/connections/carriers/{carrier_name}/{carrier_id}

Disconnect a carrier

Responses

204 - The request was successful.
Body
404 - The specified resource does not exist.
Body
500 - An error occurred on ShipEngine's side. > This error will automatically be reported to our engineers.
Body
Request sample:
curl --request DELETE --url 'https://api.shipengine.com /v1/connections/carriers/{carrier_name}/{carrier_id}' --header 'ContentType: application/json'
Get carrier settings
get /v1/connections/carriers/{carrier_name}/{carrier_id}/settings

Get carrier settings

Responses

200 - The request was a success.
Body
404 - The specified resource does not exist.
Body
500 - An error occurred on ShipEngine's side. > This error will automatically be reported to our engineers.
Body
Request sample:
curl --request GET --url 'https://api.shipengine.com /v1/connections/carriers/{carrier_name}/{carrier_id}/settings' --header 'ContentType: application/json'
Update carrier settings
put /v1/connections/carriers/{carrier_name}/{carrier_id}/settings

Update carrier settings

Request

Body

Responses

204 - The request was successful.
Body
404 - The specified resource does not exist.
Body
500 - An error occurred on ShipEngine's side. > This error will automatically be reported to our engineers.
Body
Request sample:
curl --request PUT --url 'https://api.shipengine.com /v1/connections/carriers/{carrier_name}/{carrier_id}/settings' --header 'ContentType: application/json'

carriers

List Carriers
get /v1/carriers

List all carriers that have been added to this account

Responses

200 - The request was a success.
Body
400 - The request contained errors.
Body
404 - The specified resource does not exist.
Body
500 - An error occurred on ShipEngine's side. > This error will automatically be reported to our engineers.
Body
Request sample:
curl --request GET --url 'https://api.shipengine.com /v1/carriers' --header 'ContentType: application/json'
Get Carrier By ID
get /v1/carriers/{carrier_id}

Retrive carrier info by ID

Responses

200 - The request was a success.
Body
400 - The request contained errors.
Body
404 - The specified resource does not exist.
Body
500 - An error occurred on ShipEngine's side. > This error will automatically be reported to our engineers.
Body
Request sample:
curl --request GET --url 'https://api.shipengine.com /v1/carriers/{carrier_id}' --header 'ContentType: application/json'
Add Funds To Carrier
put /v1/carriers/{carrier_id}/add_funds

Add Funds To A Carrier

Request

Body

Responses

200 - The request was a success.
Body
400 - The request contained errors.
Body
404 - The specified resource does not exist.
Body
500 - An error occurred on ShipEngine's side. > This error will automatically be reported to our engineers.
Body
Request sample:
curl --request PUT --url 'https://api.shipengine.com /v1/carriers/{carrier_id}/add_funds' --header 'ContentType: application/json'
Get Carrier Options
get /v1/carriers/{carrier_id}/options

Get a list of the options available for the carrier

Responses

200 - The request was a success.
Body
400 - The request contained errors.
Body
404 - The specified resource does not exist.
Body
500 - An error occurred on ShipEngine's side. > This error will automatically be reported to our engineers.
Body
Request sample:
curl --request GET --url 'https://api.shipengine.com /v1/carriers/{carrier_id}/options' --header 'ContentType: application/json'
List Carrier Package Types
get /v1/carriers/{carrier_id}/packages

List the package types associated with the carrier

Responses

200 - The request was a success.
Body
400 - The request contained errors.
Body
404 - The specified resource does not exist.
Body
500 - An error occurred on ShipEngine's side. > This error will automatically be reported to our engineers.
Body
Request sample:
curl --request GET --url 'https://api.shipengine.com /v1/carriers/{carrier_id}/packages' --header 'ContentType: application/json'
List Carrier Services
get /v1/carriers/{carrier_id}/services

List the services associated with the carrier ID

Responses

200 - The request was a success.
Body
400 - The request contained errors.
Body
404 - The specified resource does not exist.
Body
500 - An error occurred on ShipEngine's side. > This error will automatically be reported to our engineers.
Body
Request sample:
curl --request GET --url 'https://api.shipengine.com /v1/carriers/{carrier_id}/services' --header 'ContentType: application/json'

downloads

Download File
get /v1/downloads/{dir}/{subdir}/{filename}

Get File

Query Params

download string

Responses

200 - The request was a success
Body
400 - The request contained errors.
Body
404 - The specified resource does not exist.
Body
500 - An error occurred on ShipEngine's side. > This error will automatically be reported to our engineers.
Body
Request sample:
curl --request GET --url 'https://api.shipengine.com /v1/downloads/{dir}/{subdir}/{filename}' --header 'ContentType: application/json'

insurance

Disconnect a Shipsurance Account
delete /v1/connections/insurance/shipsurance

Disconnect a Shipsurance Account

Responses

200 - The request was a success
Body
400 - The request contained errors.
Body
500 - An error occurred on ShipEngine's side. > This error will automatically be reported to our engineers.
Body
Request sample:
curl --request DELETE --url 'https://api.shipengine.com /v1/connections/insurance/shipsurance' --header 'ContentType: application/json'
Connect a Shipsurance Account
post /v1/connections/insurance/shipsurance

Connect a Shipsurance Account

Request

Body

Responses

200 - The request was a success
Body
400 - The request contained errors.
Body
500 - An error occurred on ShipEngine's side. > This error will automatically be reported to our engineers.
Body
Request sample:
curl --request POST --url 'https://api.shipengine.com /v1/connections/insurance/shipsurance' --header 'ContentType: application/json'
Add Funds To Insurance
patch /v1/insurance/shipsurance/add_funds

You may need to auto fund your account from time to time. For example, if you don't normally ship items over $100, and may want to add funds to insurance rather than keeping the account funded.

Request

Body

Responses

200 - The request was a success.
Body
400 - The request contained errors.
Body
500 - An error occurred on ShipEngine's side. > This error will automatically be reported to our engineers.
Body
Request sample:
curl --request PATCH --url 'https://api.shipengine.com /v1/insurance/shipsurance/add_funds' --header 'ContentType: application/json'
Get Insurance Funds Balance
get /v1/insurance/shipsurance/balance

Retrieve the balance of your Shipsurance account.

Responses

200 - The request was a success.
Body
400 - The request contained errors.
Body
500 - An error occurred on ShipEngine's side. > This error will automatically be reported to our engineers.
Body
Request sample:
curl --request GET --url 'https://api.shipengine.com /v1/insurance/shipsurance/balance' --header 'ContentType: application/json'

labels

List labels
get /v1/labels

This endpoint returns a list of labels that you've created. You can optionally filter the results as well as control their sort order and the number of results returned at a time.

By default, all labels are returned, 25 at a time, starting with the most recently created ones. You can combine multiple filter options to narrow-down the results. For example, if you only want to get your UPS labels for your east coast warehouse you could query by both warehouse_id and carrier_id

Query Params

label_status string
Only return labels that are currently in the specified status
service_code string
Only return labels for a specific [carrier service](https://www.shipengine.com/docs/shipping/use-a-carrier-service/)
carrier_id string
Only return labels for a specific [carrier account](https://www.shipengine.com/docs/carriers/setup/)
tracking_number string
Only return labels with a specific tracking number
batch_id string
Only return labels that were created in a specific [batch](https://www.shipengine.com/docs/labels/bulk/)
rate_id string
Rate ID
shipment_id string
Shipment ID
warehouse_id string
Only return labels that originate from a specific [warehouse](https://www.shipengine.com/docs/shipping/ship-from-a-warehouse/)
created_at_start string
Only return labels that were created on or after a specific date/time
created_at_end string
Only return labels that were created on or before a specific date/time
page integer
Return a specific page of results. Defaults to the first page. If set to a number that's greater than the number of pages of results, an empty page is returned.
page_size integer
The number of results to return per response.
sort_dir string
Controls the sort order of the query.
sort_by string
Controls which field the query is sorted by.

Responses

200 - The response includes a `labels` array containing a page of results (as determined by the `page_size` query parameter). It also includes other useful information, such as the total number of labels that match the query criteria, the number of pages of results, and the URLs of the first, last, next, and previous pages of results.
Body
400 - The request contained errors.
Body
500 - An error occurred on ShipEngine's side. > This error will automatically be reported to our engineers.
Body
Request sample:
curl --request GET --url 'https://api.shipengine.com /v1/labels' --header 'ContentType: application/json'
Purchase Label
post /v1/labels

Purchase and print a label for shipment

Request

Body

Responses

200 - The requested object creation was a success.
Body
400 - The request contained errors.
Body
404 - The specified resource does not exist.
Body
500 - An error occurred on ShipEngine's side. > This error will automatically be reported to our engineers.
Body
Request sample:
curl --request POST --url 'https://api.shipengine.com /v1/labels' --header 'ContentType: application/json'
Get Label By External Shipment ID
get /v1/labels/external_shipment_id/{external_shipment_id}

Find a label by using the external shipment id that was used during label creation

Query Params

label_download_type string

Responses

200 - The requested object creation was a success.
Body
400 - The request contained errors.
Body
404 - The specified resource does not exist.
Body
500 - An error occurred on ShipEngine's side. > This error will automatically be reported to our engineers.
Body
Request sample:
curl --request GET --url 'https://api.shipengine.com /v1/labels/external_shipment_id/{external_shipment_id}' --header 'ContentType: application/json'
Purchase Label with Rate ID
post /v1/labels/rates/{rate_id}

When retrieving rates for shipments using the /rates endpoint, the returned information contains a rate_id property that can be used to generate a label without having to refill in the shipment information repeatedly.

Request

Body

Responses

200 - The requested object creation was a success.
Body
400 - The request contained errors.
Body
404 - The specified resource does not exist.
Body
500 - An error occurred on ShipEngine's side. > This error will automatically be reported to our engineers.
Body
Request sample:
curl --request POST --url 'https://api.shipengine.com /v1/labels/rates/{rate_id}' --header 'ContentType: application/json'
Purchase Label with Shipment ID
post /v1/labels/shipment/{shipment_id}

Purchase a label using a shipment ID that has already been created with the desired address and package info.

Request

Body

Responses

200 - The requested object creation was a success.
Body
400 - The request contained errors.
Body
404 - The specified resource does not exist.
Body
500 - An error occurred on ShipEngine's side. > This error will automatically be reported to our engineers.
Body
Request sample:
curl --request POST --url 'https://api.shipengine.com /v1/labels/shipment/{shipment_id}' --header 'ContentType: application/json'
Get Label By ID
get /v1/labels/{label_id}

Retrieve information for individual labels.

Query Params

label_download_type string

Responses

200 - The request was a success.
Body
400 - The request contained errors.
Body
404 - The specified resource does not exist.
Body
500 - An error occurred on ShipEngine's side. > This error will automatically be reported to our engineers.
Body
Request sample:
curl --request GET --url 'https://api.shipengine.com /v1/labels/{label_id}' --header 'ContentType: application/json'
Create a return label
post /v1/labels/{label_id}/return

Create a return label

Request

Body

Responses

200 - The request was a success.
Body
400 - The request contained errors.
Body
404 - The specified resource does not exist.
Body
500 - An error occurred on ShipEngine's side. > This error will automatically be reported to our engineers.
Body
Request sample:
curl --request POST --url 'https://api.shipengine.com /v1/labels/{label_id}/return' --header 'ContentType: application/json'
Get Label Tracking Information
get /v1/labels/{label_id}/track

Retrieve the label's tracking information

Responses

200 - The request was a success.
Body
400 - The request contained errors.
Body
404 - The specified resource does not exist.
Body
500 - An error occurred on ShipEngine's side. > This error will automatically be reported to our engineers.
Body
Request sample:
curl --request GET --url 'https://api.shipengine.com /v1/labels/{label_id}/track' --header 'ContentType: application/json'
Void a Label By ID
put /v1/labels/{label_id}/void

Void a label by ID to get a refund.

Responses

200 - The request was a success.
Body
400 - The request contained errors.
Body
404 - The specified resource does not exist.
Body
500 - An error occurred on ShipEngine's side. > This error will automatically be reported to our engineers.
Body
Request sample:
curl --request PUT --url 'https://api.shipengine.com /v1/labels/{label_id}/void' --header 'ContentType: application/json'

manifests

List Manifests
get /v1/manifests

Similar to querying shipments, we allow you to query manifests since there will likely be a large number over a long period of time.

Query Params

warehouse_id string
Warehouse ID
ship_date_start string
ship date start range
ship_date_end string
ship date end range
created_at_start string
Used to create a filter for when a resource was created (ex. A shipment that was created after a certain time)
created_at_end string
Used to create a filter for when a resource was created, (ex. A shipment that was created before a certain time)
carrier_id string
Carrier ID
page integer
Return a specific page of results. Defaults to the first page. If set to a number that's greater than the number of pages of results, an empty page is returned.
page_size integer
The number of results to return per response.
label_ids array

Responses

200 - The request was a success.
Body
400 - The request contained errors.
Body
404 - The specified resource does not exist.
Body
500 - An error occurred on ShipEngine's side. > This error will automatically be reported to our engineers.
Body
Request sample:
curl --request GET --url 'https://api.shipengine.com /v1/manifests' --header 'ContentType: application/json'
Create Manifest
post /v1/manifests

Each ShipEngine manifest is created for a specific warehouse, so you'll need to provide the warehouse_id rather than the ship_from address. You can create a warehouse for each location that you want to create manifests for.

Request

Body

Responses

200 - The request was a success.
Body
400 - The request contained errors.
Body
500 - An error occurred on ShipEngine's side. > This error will automatically be reported to our engineers.
Body
Request sample:
curl --request POST --url 'https://api.shipengine.com /v1/manifests' --header 'ContentType: application/json'
Get Manifest By Id
get /v1/manifests/{manifest_id}

Get Manifest By Id

Responses

200 - The request was a success.
Body
400 - The request contained errors.
Body
404 - The specified resource does not exist.
Body
500 - An error occurred on ShipEngine's side. > This error will automatically be reported to our engineers.
Body
Request sample:
curl --request GET --url 'https://api.shipengine.com /v1/manifests/{manifest_id}' --header 'ContentType: application/json'

package_types

List Custom Package Types
get /v1/packages

List the custom package types associated with the account

Responses

200 - The request was a success.
Body
400 - The request contained errors.
Body
404 - The specified resource does not exist.
Body
500 - An error occurred on ShipEngine's side. > This error will automatically be reported to our engineers.
Body
Request sample:
curl --request GET --url 'https://api.shipengine.com /v1/packages' --header 'ContentType: application/json'
Create Custom Package Type
post /v1/packages

Create a custom package type to better assist in getting accurate rate estimates

Request

Body

Responses

200 - The request was a success.
Body
400 - The request contained errors.
Body
500 - An error occurred on ShipEngine's side. > This error will automatically be reported to our engineers.
Body
Request sample:
curl --request POST --url 'https://api.shipengine.com /v1/packages' --header 'ContentType: application/json'
Get Custom Package Type By ID
get /v1/packages/{package_id}

Get Custom Package Type by ID

Responses

200 - The request was a success.
Body
400 - The request contained errors.
Body
404 - The specified resource does not exist.
Body
500 - An error occurred on ShipEngine's side. > This error will automatically be reported to our engineers.
Body
Request sample:
curl --request GET --url 'https://api.shipengine.com /v1/packages/{package_id}' --header 'ContentType: application/json'
Update Custom Package Type By ID
put /v1/packages/{package_id}

Update the custom package type object by ID

Request

Body

Responses

204 - The request was successful.
Body
400 - The request contained errors.
Body
404 - The specified resource does not exist.
Body
500 - An error occurred on ShipEngine's side. > This error will automatically be reported to our engineers.
Body
Request sample:
curl --request PUT --url 'https://api.shipengine.com /v1/packages/{package_id}' --header 'ContentType: application/json'
Delete A Custom Package By ID
delete /v1/packages/{package_id}

Delete a custom package using the ID

Responses

204 - The request was successful.
Body
400 - The request contained errors.
Body
404 - The specified resource does not exist.
Body
500 - An error occurred on ShipEngine's side. > This error will automatically be reported to our engineers.
Body
Request sample:
curl --request DELETE --url 'https://api.shipengine.com /v1/packages/{package_id}' --header 'ContentType: application/json'

rates

Get Shipping Rates
post /v1/rates

It's not uncommon that you want to give your customer the choice between whether they want to ship the fastest, cheapest, or the most trusted route. Most companies don't solely ship things using a single shipping option; so we provide functionality to show you all your options!

Request

Body

Responses

200 - The request was a success.
Body
400 - The request contained errors.
Body
500 - An error occurred on ShipEngine's side. > This error will automatically be reported to our engineers.
Body
Request sample:
curl --request POST --url 'https://api.shipengine.com /v1/rates' --header 'ContentType: application/json'
Get Bulk Rates
post /v1/rates/bulk

Get Bulk Shipment Rates

Request

Body

Responses

200 - The request was a success.
Body
400 - The request contained errors.
Body
500 - An error occurred on ShipEngine's side. > This error will automatically be reported to our engineers.
Body
Request sample:
curl --request POST --url 'https://api.shipengine.com /v1/rates/bulk' --header 'ContentType: application/json'
Estimate Rates
post /v1/rates/estimate

Get Rate Estimates

Request

Body

Responses

200 - The request was a success.
Body
400 - The request contained errors.
Body
500 - An error occurred on ShipEngine's side. > This error will automatically be reported to our engineers.
Body
Request sample:
curl --request POST --url 'https://api.shipengine.com /v1/rates/estimate' --header 'ContentType: application/json'
Get Rate By ID
get /v1/rates/{rate_id}

Retrieve a previously queried rate by its ID

Responses

200 - The request was a success.
Body
400 - The request contained errors.
Body
404 - The specified resource does not exist.
Body
500 - An error occurred on ShipEngine's side. > This error will automatically be reported to our engineers.
Body
Request sample:
curl --request GET --url 'https://api.shipengine.com /v1/rates/{rate_id}' --header 'ContentType: application/json'

shipments

List Shipments
get /v1/shipments

Get list of Shipments

Query Params

shipment_status string
batch_id string
Batch ID
tag string
Search for shipments based on the custom tag added to the shipment object
created_at_start string
Used to create a filter for when a resource was created (ex. A shipment that was created after a certain time)
created_at_end string
Used to create a filter for when a resource was created, (ex. A shipment that was created before a certain time)
modified_at_start string
Used to create a filter for when a resource was modified (ex. A shipment that was modified after a certain time)
modified_at_end string
Used to create a filter for when a resource was modified (ex. A shipment that was modified before a certain time)
page integer
Return a specific page of results. Defaults to the first page. If set to a number that's greater than the number of pages of results, an empty page is returned.
page_size integer
The number of results to return per response.
sales_order_id string
Sales Order ID
sort_dir string
Controls the sort order of the query.
sort_by string

Responses

200 - The request was a success.
Body
400 - The request contained errors.
Body
404 - The specified resource does not exist.
Body
500 - An error occurred on ShipEngine's side. > This error will automatically be reported to our engineers.
Body
Request sample:
curl --request GET --url 'https://api.shipengine.com /v1/shipments' --header 'ContentType: application/json'
Create Shipments
post /v1/shipments

Create one or multiple shipments.

Request

Body

Responses

200 - The requested object creation was a success.
Body
400 - The request contained errors.
Body
500 - An error occurred on ShipEngine's side. > This error will automatically be reported to our engineers.
Body
Request sample:
curl --request POST --url 'https://api.shipengine.com /v1/shipments' --header 'ContentType: application/json'
Get Shipment By External ID
get /v1/shipments/external_shipment_id/{external_shipment_id}

Query Shipments created using your own custom ID convention using this endpint

Responses

200 - The request was a success.
Body
400 - The request contained errors.
Body
404 - The specified resource does not exist.
Body
500 - An error occurred on ShipEngine's side. > This error will automatically be reported to our engineers.
Body
Request sample:
curl --request GET --url 'https://api.shipengine.com /v1/shipments/external_shipment_id/{external_shipment_id}' --header 'ContentType: application/json'
Parse shipping info
put /v1/shipments/recognize

The shipment-recognition API makes it easy for you to extract shipping data from unstructured text, including people's names, addresses, package weights and dimensions, insurance and delivery requirements, and more.

Data often enters your system as unstructured text (for example: emails, SMS messages, support tickets, or other documents). ShipEngine's shipment-recognition API helps you extract meaningful, structured data from this unstructured text. The parsed shipment data is returned in the same structure that's used for other ShipEngine APIs, so you can easily use the parsed data to create a shipping label.

Note: Shipment recognition is currently supported for the United States, Canada, Australia, New Zealand, the United Kingdom, and Ireland.

Request

Body

Responses

200 - Returns the parsed shipment, as well as a confidence score and a list of all the shipping entities that were recognized in the text.
Body
400 - The request contained errors.
Body
500 - An error occurred on ShipEngine's side. > This error will automatically be reported to our engineers.
Body
Request sample:
curl --request PUT --url 'https://api.shipengine.com /v1/shipments/recognize' --header 'ContentType: application/json'
Get Shipment By ID
get /v1/shipments/{shipment_id}

Get an individual shipment based on its ID

Responses

200 - The request was a success.
Body
400 - The request contained errors.
Body
404 - The specified resource does not exist.
Body
500 - An error occurred on ShipEngine's side. > This error will automatically be reported to our engineers.
Body
Request sample:
curl --request GET --url 'https://api.shipengine.com /v1/shipments/{shipment_id}' --header 'ContentType: application/json'
Update Shipment By ID
put /v1/shipments/{shipment_id}

Update a shipment object based on its ID

Request

Body

Responses

200 - The request was a success.
Body
400 - The request contained errors.
Body
404 - The specified resource does not exist.
Body
500 - An error occurred on ShipEngine's side. > This error will automatically be reported to our engineers.
Body
Request sample:
curl --request PUT --url 'https://api.shipengine.com /v1/shipments/{shipment_id}' --header 'ContentType: application/json'
Cancel a Shipment
put /v1/shipments/{shipment_id}/cancel

Mark a shipment cancelled, if it is no longer needed or being used by your organized. Any label associated with the shipment needs to be voided first An example use case would be if a batch label creation job is going to run at a set time and only queries pending shipments. Marking a shipment as cancelled would remove it from this process

Responses

204 - The request was successful.
Body
400 - The request contained errors.
Body
404 - The specified resource does not exist.
Body
500 - An error occurred on ShipEngine's side. > This error will automatically be reported to our engineers.
Body
Request sample:
curl --request PUT --url 'https://api.shipengine.com /v1/shipments/{shipment_id}/cancel' --header 'ContentType: application/json'
Get Shipment Errors
get /v1/shipments/{shipment_id}/errors

If there are no errors associated with this shipment then the API will return a 404 Not Found response to indicate that no errors are associated with the request

Query Params

page integer
Return a specific page of results. Defaults to the first page. If set to a number that's greater than the number of pages of results, an empty page is returned.
pagesize integer

Responses

200 - The request was a success.
Body
400 - The request contained errors.
Body
404 - The specified resource does not exist.
Body
500 - An error occurred on ShipEngine's side. > This error will automatically be reported to our engineers.
Body
Request sample:
curl --request GET --url 'https://api.shipengine.com /v1/shipments/{shipment_id}/errors' --header 'ContentType: application/json'
Get Shipment Rates
get /v1/shipments/{shipment_id}/rates

Get Rates for the shipment information associated with the shipment ID

Query Params

created_at_start string
Used to create a filter for when a resource was created (ex. A shipment that was created after a certain time)

Responses

200 - The request was a success.
Body
400 - The request contained errors.
Body
404 - The specified resource does not exist.
Body
500 - An error occurred on ShipEngine's side. > This error will automatically be reported to our engineers.
Body
Request sample:
curl --request GET --url 'https://api.shipengine.com /v1/shipments/{shipment_id}/rates' --header 'ContentType: application/json'
Add Tag to Shipment
post /v1/shipments/{shipment_id}/tags/{tag_name}

Add a tag to the shipment object

Responses

200 - The requested object creation was a success.
Body
400 - The request contained errors.
Body
404 - The specified resource does not exist.
Body
500 - An error occurred on ShipEngine's side. > This error will automatically be reported to our engineers.
Body
Request sample:
curl --request POST --url 'https://api.shipengine.com /v1/shipments/{shipment_id}/tags/{tag_name}' --header 'ContentType: application/json'
Remove Tag from Shipment
delete /v1/shipments/{shipment_id}/tags/{tag_name}

Remove an existing tag from the Shipment object

Responses

204 - The request was successful.
Body
400 - The request contained errors.
Body
404 - The specified resource does not exist.
Body
500 - An error occurred on ShipEngine's side. > This error will automatically be reported to our engineers.
Body
Request sample:
curl --request DELETE --url 'https://api.shipengine.com /v1/shipments/{shipment_id}/tags/{tag_name}' --header 'ContentType: application/json'

tags

Get Tags
get /v1/tags

Get a list of all tags associated with an account.

Responses

200 - The request was a success.
Body
400 - The request contained errors.
Body
404 - The specified resource does not exist.
Body
500 - An error occurred on ShipEngine's side. > This error will automatically be reported to our engineers.
Body
Request sample:
curl --request GET --url 'https://api.shipengine.com /v1/tags' --header 'ContentType: application/json'
Create a New Tag
post /v1/tags/{tag_name}

Create a new Tag for customizing how you track your shipments

Responses

200 - The request was a success.
Body
400 - The request contained errors.
Body
404 - The specified resource does not exist.
Body
500 - An error occurred on ShipEngine's side. > This error will automatically be reported to our engineers.
Body
Request sample:
curl --request POST --url 'https://api.shipengine.com /v1/tags/{tag_name}' --header 'ContentType: application/json'
Delete Tag
delete /v1/tags/{tag_name}

Delete a tag that is no longer needed

Responses

204 - The request was successful.
Body
400 - The request contained errors.
Body
404 - The specified resource does not exist.
Body
500 - An error occurred on ShipEngine's side. > This error will automatically be reported to our engineers.
Body
Request sample:
curl --request DELETE --url 'https://api.shipengine.com /v1/tags/{tag_name}' --header 'ContentType: application/json'
Update Tag Name
put /v1/tags/{tag_name}/{new_tag_name}

Change a tag name while still keeping the relevant shipments attached to it

Responses

204 - The request was successful.
Body
400 - The request contained errors.
Body
404 - The specified resource does not exist.
Body
500 - An error occurred on ShipEngine's side. > This error will automatically be reported to our engineers.
Body
Request sample:
curl --request PUT --url 'https://api.shipengine.com /v1/tags/{tag_name}/{new_tag_name}' --header 'ContentType: application/json'

tracking

Get Tracking Information
get /v1/tracking

Retrieve package tracking information

Query Params

carrier_code string
Carrier code used to retrieve tracking information
tracking_number string
The tracking number associated with a shipment

Responses

200 - The request was a success.
Body
400 - The request contained errors.
Body
404 - The specified resource does not exist.
Body
500 - An error occurred on ShipEngine's side. > This error will automatically be reported to our engineers.
Body
Request sample:
curl --request GET --url 'https://api.shipengine.com /v1/tracking' --header 'ContentType: application/json'
Start Tracking a Package
post /v1/tracking/start

Allows you to subscribe to tracking updates for a package. You specify the carrier_code and tracking_number of the package, and receive notifications via webhooks whenever the shipping status changes.

Query Params

carrier_code string
Carrier code used to retrieve tracking information
tracking_number string
The tracking number associated with a shipment

Responses

204 - The request was successful.
Body
400 - The request contained errors.
Body
404 - The specified resource does not exist.
Body
500 - An error occurred on ShipEngine's side. > This error will automatically be reported to our engineers.
Body
Request sample:
curl --request POST --url 'https://api.shipengine.com /v1/tracking/start' --header 'ContentType: application/json'
Stop Tracking a Package
post /v1/tracking/stop

Unsubscribe from tracking updates for a package.

Query Params

carrier_code string
Carrier code used to retrieve tracking information
tracking_number string
The tracking number associated with a shipment

Responses

204 - The request was successful.
Body
400 - The request contained errors.
Body
404 - The specified resource does not exist.
Body
500 - An error occurred on ShipEngine's side. > This error will automatically be reported to our engineers.
Body
Request sample:
curl --request POST --url 'https://api.shipengine.com /v1/tracking/stop' --header 'ContentType: application/json'

warehouses

List Warehouses
get /v1/warehouses

Retrieve a list of warehouses associated with this account.

Responses

200 - The request was a success.
Body
400 - The request contained errors.
Body
404 - The specified resource does not exist.
Body
500 - An error occurred on ShipEngine's side. > This error will automatically be reported to our engineers.
Body
Request sample:
curl --request GET --url 'https://api.shipengine.com /v1/warehouses' --header 'ContentType: application/json'
Create Warehouse
post /v1/warehouses

Create a warehouse location that you can use to create shipping items by simply passing in the generated warehouse id. If the return address is not supplied in the request body then it is assumed that the origin address is the return address as well

Request

Body

Responses

200 - The request was a success.
Body
400 - The request contained errors.
Body
404 - The specified resource does not exist.
Body
500 - An error occurred on ShipEngine's side. > This error will automatically be reported to our engineers.
Body
Request sample:
curl --request POST --url 'https://api.shipengine.com /v1/warehouses' --header 'ContentType: application/json'
Get Warehouse By Id
get /v1/warehouses/{warehouse_id}

Retrieve warehouse data based on the warehouse ID

Responses

200 - The request was a success.
Body
400 - The request contained errors.
Body
404 - The specified resource does not exist.
Body
500 - An error occurred on ShipEngine's side. > This error will automatically be reported to our engineers.
Body
Request sample:
curl --request GET --url 'https://api.shipengine.com /v1/warehouses/{warehouse_id}' --header 'ContentType: application/json'
Update WareHouse By Id
put /v1/warehouses/{warehouse_id}

Update Warehouse object information

Request

Body

Responses

204 - The request was successful.
Body
400 - The request contained errors.
Body
404 - The specified resource does not exist.
Body
500 - An error occurred on ShipEngine's side. > This error will automatically be reported to our engineers.
Body
Request sample:
curl --request PUT --url 'https://api.shipengine.com /v1/warehouses/{warehouse_id}' --header 'ContentType: application/json'
Delete Warehouse By ID
delete /v1/warehouses/{warehouse_id}

Delete a warehouse by ID

Responses

204 - The request was successful.
Body
400 - The request contained errors.
Body
404 - The specified resource does not exist.
Body
500 - An error occurred on ShipEngine's side. > This error will automatically be reported to our engineers.
Body
Request sample:
curl --request DELETE --url 'https://api.shipengine.com /v1/warehouses/{warehouse_id}' --header 'ContentType: application/json'

webhooks

Get Webhook By ID
get /v1/environment/webhooks/{webhook_id}

Retrieve individual webhook by an ID

Responses

200 - The request was a success.
Body
400 - The request contained errors.
Body
404 - The specified resource does not exist.
Body
500 - An error occurred on ShipEngine's side. > This error will automatically be reported to our engineers.
Body
Request sample:
curl --request GET --url 'https://api.shipengine.com /v1/environment/webhooks/{webhook_id}' --header 'ContentType: application/json'
Update a Webhook
put /v1/environment/webhooks/{webhook_id}

Update the webhook url property

Request

Body

Responses

204 - The request was successful.
Body
400 - The request contained errors.
Body
404 - The specified resource does not exist.
Body
500 - An error occurred on ShipEngine's side. > This error will automatically be reported to our engineers.
Body
Request sample:
curl --request PUT --url 'https://api.shipengine.com /v1/environment/webhooks/{webhook_id}' --header 'ContentType: application/json'
Delete Webhook By ID
delete /v1/environment/webhooks/{webhook_id}

Delete a webhook

Responses

204 - The request was successful.
Body
400 - The request contained errors.
Body
404 - The specified resource does not exist.
Body
500 - An error occurred on ShipEngine's side. > This error will automatically be reported to our engineers.
Body
Request sample:
curl --request DELETE --url 'https://api.shipengine.com /v1/environment/webhooks/{webhook_id}' --header 'ContentType: application/json'