Skip to content

ShipEngine API (1.1.202604070904)

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.

Download OpenAPI description
Languages
Servers
Mock server
https://docs.shipstation.com/_mock/apis/shipengine/openapi/
https://api.shipengine.com/

Account

For additional information about the ShipEngine account.

Operations

Addresses

No matter your shipping volume, failed deliveries and address change surcharges cut into your bottom line and damage perception with customers. Our address validation services ensure your packages make it to the right place the first time. Learn how to leverage our address validation services here.

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.

Operations

Batches

batches

Operations

Carrier Accounts

A carrier account is a connection to a shipping carrier that allows you to create labels, track packages, and more. You can connect your own carrier accounts to ShipEngine, or use one of our built-in carrier accounts. Learn more about carrier accounts here.

Operations

Carriers

carriers

Operations

List carriers

Request

List all carriers that have been added to this account

Security
api_key
curl -i -X GET \
  https://docs.shipstation.com/_mock/apis/shipengine/openapi/v1/carriers \
  -H 'API-Key: YOUR_API_KEY_HERE'

Responses

The request was a success.

Bodyapplication/json
carriersArray of objects(carrier)read-onlyrequired

The carrier response body

carriers[].​carrier_idstring(se_id)[ 1 .. 25 ] characters^se(-[a-z0-9]+)+$read-only

A string that uniquely identifies the carrier.

Example: "se-28529731"
carriers[].​carrier_codestring(carrier_code)^[a-z0-9]+(_[a-z0-9]+)*$read-only

A shipping carrier, such as fedex, dhl_express, stamps_com, etc.

Example: "dhl_express"
carriers[].​account_numberstringnon-emptyread-only

The account number that the carrier is connected to.

Example: "account_570827"
carriers[].​requires_funded_amountbooleanread-only

Indicates whether the carrier requires funding to use its services

carriers[].​balancenumber>= 0read-only

Current available balance

Example: 3799.52
carriers[].​nicknamestringnon-emptyread-only

Nickname given to the account when initially setting up the carrier.

Example: "ShipEngine Account - Stamps.com"
carriers[].​friendly_namestringnon-emptyread-only

Screen readable name

Example: "Stamps.com"
carriers[].​funding_source_idstring or null(se_id)[ 1 .. 25 ] characters^se(-[a-z0-9]+)+$read-only

Funding source ID for the carrier

Example: "se-28529731"
carriers[].​primarybooleanread-only

Is this the primary carrier that is used by default when no carrier is specified in label/shipment creation

carriers[].​has_multi_package_supporting_servicesbooleanread-only

Carrier supports multiple packages per shipment

carriers[].​allows_returnsbooleanread-only

The carrier has services that support return shipments.

carriers[].​supports_label_messagesbooleanread-only

The carrier supports adding custom label messages to an order.

carriers[].​disabled_by_billing_planbooleanread-only

The carrier is disabled by the current ShipEngine account's billing plan.

carriers[].​servicesArray of objects(service)read-only

A list of services that are offered by the carrier

carriers[].​packagesArray of objects(package_type)read-only

A list of package types that are supported by the carrier

carriers[].​optionsArray of objects(carrier_advanced_option)read-only

A list of options that are available to that carrier

carriers[].​send_ratesbooleanread-only

The carrier provides rates for the shipment.

carriers[].​supports_user_managed_ratesbooleanread-only

The carrier supports user-managed rates for shipments.

carriers[].​connection_statusstringread-only

The current connection status of the carrier. Indicates whether the carrier connection is pending approval or has been approved for use.

Enum"pending_approval""approved"
request_idstring(uuid)(uuid)= 36 characters^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}...required

A UUID that uniquely identifies the request id. This can be given to the support team to help debug non-trivial issues that may occur

Example: "aa3d8e8e-462b-4476-9618-72db7f7b7009"
errorsArray of objects(error)read-onlyrequired

The errors associated with the failed API call

errors[].​error_sourcestring(error_source)required

The source of the error, as indicated by the name this informs us if the API call failed because of the carrier, the order source, or the ShipEngine API itself.

Enum"carrier""order_source""shipengine"
errors[].​error_typestring(error_type)required

The type of error

Enum"account_status""business_rules""validation""security""system""integrations"
errors[].​error_codestring(error_code)required

The error code specified for the failed API Call

Enum"auto_fund_not_supported""batch_cannot_be_modified""carrier_conflict""carrier_disconnected""carrier_not_connected""carrier_not_supported""confirmation_not_supported""default_warehouse_cannot_be_deleted""field_conflict""field_value_required"
errors[].​messagestringnon-emptyread-onlyrequired

An error message associated with the failed API call

Example: "Body of request cannot be null."
errors[].​carrier_idstring(se_id)[ 1 .. 25 ] characters^se(-[a-z0-9]+)+$read-only

A string that uniquely identifies the carrier that generated the error.

Example: "se-28529731"
errors[].​carrier_codestring(carrier_code)^[a-z0-9]+(_[a-z0-9]+)*$read-only

A shipping carrier, such as fedex, dhl_express, stamps_com, etc.

Example: "dhl_express"
errors[].​field_namestringread-only

The name of the field that caused the error

Example: "shipment.ship_to.phone_number"
Response
application/json
{ "carriers": [ {} ], "request_id": "aa3d8e8e-462b-4476-9618-72db7f7b7009", "errors": [ {} ] }

Get carrier by ID

Request

Retrive carrier info by ID

Security
api_key
Path
carrier_idstring(se_id)[ 1 .. 25 ] characters^se(-[a-z0-9]+)+$required

Carrier ID

Example: se-28529731
curl -i -X GET \
  https://docs.shipstation.com/_mock/apis/shipengine/openapi/v1/carriers/se-28529731 \
  -H 'API-Key: YOUR_API_KEY_HERE'

Responses

The request was a success.

Bodyapplication/json
carrier_idstring(se_id)[ 1 .. 25 ] characters^se(-[a-z0-9]+)+$read-only

A string that uniquely identifies the carrier.

Example: "se-28529731"
carrier_codestring(carrier_code)^[a-z0-9]+(_[a-z0-9]+)*$read-only

A shipping carrier, such as fedex, dhl_express, stamps_com, etc.

Example: "dhl_express"
account_numberstringnon-emptyread-only

The account number that the carrier is connected to.

Example: "account_570827"
requires_funded_amountbooleanread-only

Indicates whether the carrier requires funding to use its services

balancenumber>= 0read-only

Current available balance

Example: 3799.52
nicknamestringnon-emptyread-only

Nickname given to the account when initially setting up the carrier.

Example: "ShipEngine Account - Stamps.com"
friendly_namestringnon-emptyread-only

Screen readable name

Example: "Stamps.com"
funding_source_idstring or null(se_id)[ 1 .. 25 ] characters^se(-[a-z0-9]+)+$read-only

Funding source ID for the carrier

Example: "se-28529731"
primarybooleanread-only

Is this the primary carrier that is used by default when no carrier is specified in label/shipment creation

has_multi_package_supporting_servicesbooleanread-only

Carrier supports multiple packages per shipment

allows_returnsbooleanread-only

The carrier has services that support return shipments.

supports_label_messagesbooleanread-only

The carrier supports adding custom label messages to an order.

disabled_by_billing_planbooleanread-only

The carrier is disabled by the current ShipEngine account's billing plan.

servicesArray of objects(service)read-only

A list of services that are offered by the carrier

packagesArray of objects(package_type)read-only

A list of package types that are supported by the carrier

optionsArray of objects(carrier_advanced_option)read-only

A list of options that are available to that carrier

send_ratesbooleanread-only

The carrier provides rates for the shipment.

supports_user_managed_ratesbooleanread-only

The carrier supports user-managed rates for shipments.

connection_statusstringread-only

The current connection status of the carrier. Indicates whether the carrier connection is pending approval or has been approved for use.

Enum"pending_approval""approved"
Response
application/json
{ "carrier_id": "se-28529731", "carrier_code": "dhl_express", "account_number": "account_570827", "requires_funded_amount": true, "balance": 3799.52, "nickname": "ShipEngine Account - Stamps.com", "friendly_name": "Stamps.com", "funding_source_id": "se-28529731", "primary": true, "has_multi_package_supporting_services": true, "allows_returns": true, "supports_label_messages": true, "disabled_by_billing_plan": true, "services": [ {} ], "packages": [ {} ], "options": [ {} ], "send_rates": true, "supports_user_managed_rates": true, "connection_status": "pending_approval" }

Disconnect carrier by ID

Request

Disconnect a Carrier of the given ID from the account

Security
api_key
Path
carrier_idstring(se_id)[ 1 .. 25 ] characters^se(-[a-z0-9]+)+$required

Carrier ID

Example: se-28529731
curl -i -X DELETE \
  https://docs.shipstation.com/_mock/apis/shipengine/openapi/v1/carriers/se-28529731 \
  -H 'API-Key: YOUR_API_KEY_HERE'

Responses

The request was successful.

Body
string(empty_response_body)= 0 characters
Response
No response example

Add funds to carrier

Request

Add Funds To A Carrier

Security
api_key
Path
carrier_idstring(se_id)[ 1 .. 25 ] characters^se(-[a-z0-9]+)+$required

Carrier ID

Example: se-28529731
Bodyapplication/jsonrequired
currencystring(currency)required

The currencies that are supported by ShipEngine are the ones that specified by ISO 4217: https://www.iso.org/iso-4217-currency-codes.html

amountnumber>= 0required

The monetary amount, in the specified currency.

curl -i -X PUT \
  https://docs.shipstation.com/_mock/apis/shipengine/openapi/v1/carriers/se-28529731/add_funds \
  -H 'API-Key: YOUR_API_KEY_HERE' \
  -H 'Content-Type: application/json' \
  -d '{
    "currency": "string",
    "amount": 0
  }'

Responses

The request was a success.

Bodyapplication/json
balanceobject(monetary_value)read-onlyrequired

The current balance of the account

balance.​currencystring(currency)required

The currencies that are supported by ShipEngine are the ones that specified by ISO 4217: https://www.iso.org/iso-4217-currency-codes.html

balance.​amountnumber>= 0required

The monetary amount, in the specified currency.

Response
application/json
{ "balance": { "currency": "string", "amount": 0 } }

Get carrier options

Request

Get a list of the options available for the carrier

Security
api_key
Path
carrier_idstring(se_id)[ 1 .. 25 ] characters^se(-[a-z0-9]+)+$required

Carrier ID

Example: se-28529731
curl -i -X GET \
  https://docs.shipstation.com/_mock/apis/shipengine/openapi/v1/carriers/se-28529731/options \
  -H 'API-Key: YOUR_API_KEY_HERE'

Responses

The request was a success.

Bodyapplication/json
optionsArray of objects(carrier_advanced_option)read-only

AN array of carrier options

Response
application/json
{ "options": [ {} ] }

List carrier package types

Request

List the package types associated with the carrier

Security
api_key
Path
carrier_idstring(se_id)[ 1 .. 25 ] characters^se(-[a-z0-9]+)+$required

Carrier ID

Example: se-28529731
curl -i -X GET \
  https://docs.shipstation.com/_mock/apis/shipengine/openapi/v1/carriers/se-28529731/packages \
  -H 'API-Key: YOUR_API_KEY_HERE'

Responses

The request was a success.

Bodyapplication/json
packagesArray of objects(package_type)read-only

An array of custom package types

Response
application/json
{ "packages": [ {} ] }

List carrier services

Request

List the services associated with the carrier ID

Security
api_key
Path
carrier_idstring(se_id)[ 1 .. 25 ] characters^se(-[a-z0-9]+)+$required

Carrier ID

Example: se-28529731
curl -i -X GET \
  https://docs.shipstation.com/_mock/apis/shipengine/openapi/v1/carriers/se-28529731/services \
  -H 'API-Key: YOUR_API_KEY_HERE'

Responses

The request was a success.

Bodyapplication/json
servicesArray of objects(service)read-only

An array of services associated with the carrier

Response
application/json
{ "services": [ {} ] }

Downloads

downloads

Operations

Insurance

insurance

Operations

Labels

Print shipping labels for any of the top global carriers in minutes—instead of weeks. Simply connect your existing carrier accounts in the API dashboard, and then begin creating labels.

Operations

LTL Shipping

Less-than-truckload (LTL) shipping API endpoints for managing freight shipments. Connect LTL carriers, request quotes, schedule pickups, and track freight shipments.

Operations

Manifests

manifests

Operations

Package Pickups

Scheduled package pickups

Operations

Package Types

custom package types

Operations

Rates

Make sure you ship as cost-effectively as possible by quickly comparing rates using the ShipEngine Rates API. As long as you have the carrier connected to your account, you'll be able to see and compare different rates and services.

Operations

Service Points

Service points allow customers to pick up their packages at convenient locations.

Operations

Shipments

Shipments are at the center of the ShipEngine API. A shipment is the first step in creating a shipping label, or creating a manifest. It's also essential for getting shipping rates.

Operations

Tags

tags

Operations

Tokens

Manage authentication tokens for secure API access.

Operations

Tracking

Track packages across any of our 20+ supported carrier accounts and create tracking events to keep your customers up-to-date. Easily integrate real-time tracking information for shipments into your app, email, or SMS.

Operations

Warehouses

warehouses

Operations

Webhooks

Webhooks are a powerful feature of ShipEngine that can save you from sending repeated polling requests to check on the state of something. With webhooks, ShipEngine will automatically contact your servers when the state changes. This can include parcel tracking events, notification of the completion of a batch operation, or new sales orders.

Operations