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

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

Get shipping rates

Request

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!

Security
api_key
Bodyapplication/jsonrequired
One of:

A rate shipment request body

shipment_idstring(se_id)[ 1 .. 25 ] characters^se(-[a-z0-9]+)+$required

A string that uniquely identifies the shipment

Example: "se-28529731"
ship_to_service_point_idstring or null

A unique identifier for a carrier service point where the shipment will be delivered by the carrier. This will take precedence over a shipment's ship to address.

Example: "614940"
ship_from_service_point_idstring or null

A unique identifier for a carrier drop off point where a merchant plans to deliver packages. This will take precedence over a shipment's ship from address.

Example: "614940"
rate_optionsobject(rate_request_body)

The rate options

curl -i -X POST \
  https://docs.shipstation.com/_mock/apis/shipengine/openapi/v1/rates \
  -H 'API-Key: YOUR_API_KEY_HERE' \
  -H 'Content-Type: application/json' \
  -d '{
    "shipment_id": "se-28529731",
    "ship_to_service_point_id": "614940",
    "ship_from_service_point_id": "614940",
    "rate_options": {
      "carrier_ids": [
        "se-28529731"
      ],
      "package_types": [
        "string"
      ],
      "service_codes": [
        "string"
      ],
      "calculate_tax_amount": true,
      "preferred_currency": "string",
      "is_return": true,
      "rate_type": "check"
    }
  }'

Responses

The request was a success.

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

A string that uniquely identifies the shipment

Example: "se-28529731"
carrier_idstring(se_id)[ 1 .. 25 ] characters^se(-[a-z0-9]+)+$

The carrier account that is billed for the shipping charges

Example: "se-28529731"
service_codestring(service_code)^[a-z0-9]+(_[a-z0-9-]+)* ?$

A carrier service, such as fedex_ground, usps_first_class_mail, flat_rate_envelope, etc.

Example: "usps_first_class_mail"
shipping_rule_idstring(se_id)[ 1 .. 25 ] characters^se(-[a-z0-9]+)+$

ID of the shipping rule, which you want to use to automate carrier/carrier service selection for the shipment

Example: "se-28529731"
external_order_idstring or null

ID that the Order Source assignedd

itemsArray of objects(shipment_item)

Describe the packages included in this shipment as related to potential metadata that was imported from external order sources

Default []
tax_identifiersArray of objects or null(tax_identifier)
external_shipment_idstring or null<= 50 characters

A unique user-defined key to identify a shipment. This can be used to retrieve the shipment.

Warning: The external_shipment_id is limited to 50 characters. Any additional characters will be truncated.

shipment_numberstring or null<= 50 characters

A non-unique user-defined number used to identify a shipment. If undefined, this will match the external_shipment_id of the shipment.

Warning: The shipment_number is limited to 50 characters. Any additional characters will be truncated.

ship_datestring(date-time)(date)^\d{4}-\d{2}-\d{2}(T\d{2}:\d{2}:\d{2}(\.\d+)?...required

An ISO 8601 string that represents a date, but not a specific time. The value may contain a time component, but it will be set to 00:00:00 UTC by ShipEngine.

Example: "2018-09-23T00:00:00.000Z"
created_atstring(date-time)(date_time)^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(\.\d+)?(...read-onlyrequired

An ISO 8601 string that represents a date and time.

Example: "2018-09-23T15:00:00.000Z"
modified_atstring(date-time)(date_time)^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(\.\d+)?(...read-onlyrequired

An ISO 8601 string that represents a date and time.

Example: "2018-09-23T15:00:00.000Z"
shipment_statusstring(shipment_status)read-onlyrequired

The current status of the shipment

Default "pending"
Enum"pending""processing""label_purchased""cancelled"
ship_toobject(partial_shipping_address_to)

Any residential or business mailing address, anywhere in the world.

Note: Either name or company_name must be set. Both may be specified, if relevant.

ship_fromobject(partial_shipping_address)

Any residential or business mailing address, anywhere in the world.

Note: Either name or company_name must be set. Both may be specified, if relevant.

warehouse_idstring or null(se_id)[ 1 .. 25 ] characters^se(-[a-z0-9]+)+$

The warehouse that the shipment is being shipped from. Either warehouse_id or ship_from must be specified.

Default null
Example: "se-28529731"
return_toobject(partial_shipping_address)required

Any residential or business mailing address, anywhere in the world.

Note: Either name or company_name must be set. Both may be specified, if relevant.

return_to.​namestringnon-emptyrequired

The name of a contact person at this address. This field may be set instead of - or in addition to - the company_name field.

Example: "John Doe"
return_to.​phonestringnon-empty

The phone number of a contact person at this address. The format of this phone number varies depending on the country.

Example: "+1 204-253-9411 ext. 123"
return_to.​emailstring or null

Email for the address owner.

Example: "example@example.com"
return_to.​company_namestring or nullnon-empty

If this is a business address, then the company name should be specified here.

Example: "The Home Depot"
return_to.​address_line1stringnon-emptyrequired

The first line of the street address. For some addresses, this may be the only line. Other addresses may require 2 or 3 lines.

Example: "1999 Bishop Grandin Blvd."
return_to.​address_line2string or nullnon-empty

The second line of the street address. For some addresses, this line may not be needed.

Example: "Unit 408"
return_to.​address_line3string or nullnon-empty

The third line of the street address. For some addresses, this line may not be needed.

Example: "Building #7"
return_to.​city_localitystringnon-emptyrequired

The name of the city or locality

Example: "Winnipeg"
return_to.​state_provincestringnon-emptyrequired

The state or province. For some countries (including the U.S.) only abbreviations are allowed. Other countries allow the full name or abbreviation.

Example: "Manitoba"
return_to.​postal_codestring(postal_code)non-emptyrequired

postal code

Example: "78756-3717"
return_to.​country_codestring(country_code)= 2 characters
Example: "CA"
return_to.​address_residential_indicatorstring(address_residential_indicator)

Indicates whether this is a residential address.

Default "unknown"
Enum"unknown""yes""no"
Example: "no"
return_to.​instructionsstring or nullnon-empty

Additional text about how to handle the shipment at this address.

is_returnboolean or null

An optional indicator if the shipment is intended to be a return. Defaults to false if not provided.

Default false
confirmationstring(delivery_confirmation)required

The type of delivery confirmation that is required for this shipment.

Default "none"
Enum"none""delivery""signature""adult_signature""direct_signature""delivery_mailed""verbal_confirmation""delivery_code""age_verification_16_plus"
customsobject or null(international_shipment_options)required

Customs information. This is usually only needed for international shipments.

Default null
customs.​contentsstring(package_contents)required

The type of contents in this shipment. This may impact import duties or customs treatment.

Default "merchandise"
Enum"merchandise""documents""gift""returned_goods""sample""other"
customs.​contents_explanationstring

Explanation for contents (required if the contents is provided as other)

customs.​non_deliverystring(non_delivery)required

Indicates what to do if a package is unable to be delivered.

Default "return_to_sender"
Enum"return_to_sender""treat_as_abandoned"
customs.​terms_of_trade_codestring(Allowed incoterms)

Specifies the supported terms of trade code (incoterms)

Enum"exw""fca""cpt""cip""dpu""dap""ddp""fas""fob""cfr"
customs.​declarationstring

Declaration statement to be placed on the commercial invoice

customs.​invoice_additional_detailsobject(invoice_additional_details)

The additional information to put on commercial invoice

customs.​importer_of_recordobject(importer_of_records)

importer of records address, anywhere in the world.

customs.​license_numberstring

The license number to be used in the customs.

customs.​certificate_numberstring

The certificate number to be used in the customs.

customs.​customs_itemsArray of objects(customs_item)>= 0 itemsDeprecated

Customs declarations for each item in the shipment. (Please provide this information under products inside packages)

Default []
advanced_optionsobject(advanced_shipment_options)required

Advanced shipment options. These are entirely optional.

advanced_options.​bill_to_accountstring or null

This field is used to bill shipping costs to a third party. This field must be used in conjunction with the bill_to_country_code, bill_to_party, and bill_to_postal_code fields.

Default null
advanced_options.​bill_to_country_codestring or null(country_code)= 2 characters
Default null
Example: "CA"
advanced_options.​bill_to_partystring or null(bill_to_party)

Indicates whether to bill shipping costs to the recipient or to a third-party. When billing to a third-party, the bill_to_account, bill_to_country_code, and bill_to_postal_code fields must also be set.

Default null
Enum"recipient""third_party"
advanced_options.​bill_to_postal_codestring or null

The postal code of the third-party that is responsible for shipping costs.

Default null
advanced_options.​contains_alcoholboolean

Indicates that the shipment contains alcohol.

Default false
advanced_options.​delivered_duty_paidboolean

Indicates that the shipper is paying the international delivery duties for this shipment. This option is supported by UPS, FedEx, and DHL Express.

Default false
advanced_options.​dry_iceboolean

Indicates if the shipment contain dry ice

Default false
advanced_options.​dry_ice_weightobject or null(weight)

The weight of the dry ice in the shipment

advanced_options.​non_machinableboolean

Indicates that the package cannot be processed automatically because it is too large or irregularly shaped. This is primarily for USPS shipments. See Section 1.2 of the USPS parcel standards for details.

Default false
advanced_options.​saturday_deliveryboolean

Enables Saturday delivery, if supported by the carrier.

Default false
advanced_options.​fedex_freightobject

Provide details for the Fedex freight service

advanced_options.​use_ups_ground_freight_pricingboolean or null

Whether to use UPS Ground Freight pricing. If enabled, then a freight_class must also be specified.

Default null
advanced_options.​freight_classstring or null

The National Motor Freight Traffic Association freight class, such as "77.5", "110", or "250".

Default null
Example: "77.5"
advanced_options.​custom_field1string or null<= 100 characters

An arbitrary field that can be used to store information about the shipment.

Default null
advanced_options.​custom_field2string or null<= 100 characters

An arbitrary field that can be used to store information about the shipment.

Default null
advanced_options.​custom_field3string or null<= 100 characters

An arbitrary field that can be used to store information about the shipment.

Default null
advanced_options.​origin_typestring or null(origin_type)

Indicates if the package will be picked up or dropped off by the carrier

Default null
Enum"pickup""drop_off"
advanced_options.​additional_handlingboolean or null

Indicate to the carrier that this shipment requires additional handling.

Default null
advanced_options.​shipper_releaseboolean or null
Default null
advanced_options.​collect_on_deliveryobject(collect_on_delivery)

Defer payment until package is delivered, instead of when it is ordered.

advanced_options.​third_party_consigneeboolean

Third Party Consignee option is a value-added service that allows the shipper to supply goods without commercial invoices being attached

Default false
advanced_options.​dangerous_goodsboolean

Indicates if the Dangerous goods are present in the shipment

Default false
advanced_options.​dangerous_goods_contactobject

Contact information for Dangerous goods

advanced_options.​windsor_framework_detailsobject

The Windsor framework is a new regulation in the UK that simplifies customs procedures for goods moved from the UK mainland to Northern Ireland.

advanced_options.​license_numberstring or null

license_number - This field was part of a historical implementation for passing customs-related data. For new integrations, please use the corresponding parameters within the shipment.customs object.

Default null
Example: "514785"
advanced_options.​invoice_numberstring or null

invoice_number - This field was part of a historical implementation for passing customs-related data. For new integrations, please use the corresponding parameters within the shipment.customs object.

Default null
Example: "IOC56888"
advanced_options.​certificate_numberstring or null

certificate_number - This field was part of a historical implementation for passing customs-related data. For new integrations, please use the corresponding parameters within the shipment.customs object.

Default null
Example: "784515"
advanced_options.​fragileboolean

Indicates that the contents of the package are fragile and should be handled with care.

Default false
Example: true
advanced_options.​delivery-as-addressedboolean

Instructs the carrier to deliver the package only to the exact address provided.

Default false
advanced_options.​return-after-first-attemptboolean

Ensures the shipment is immediately flagged for return to the sender if the initial delivery attempt fails.

Default false
advanced_options.​regulated_content_typestring or null(regulated_content_type)

Indicates the category of goods in the shipment that is subject to special regulatory or compliance requirements.

Default null
Enum"day_old_poultry""other_live_animal"
advanced_options.​property name*anyadditional property
insurance_providerstring(insurance_provider)required

The insurance provider to use for any insured packages in the shipment.

Default "none"
Enum"none""shipsurance""carrier""third_party"
tagsArray of objects(tag)>= 0 itemsread-onlyrequired

Arbitrary tags associated with this shipment. Tags can be used to categorize shipments, and shipments can be queried by their tags.

Default []
tags[].​tag_idinteger(int32)>= 1read-only

An integer uniquely identifying a tag.

Example: 8712
tags[].​namestringnon-emptyrequired

The tag name.

Example: "Fragile"
tags[].​colorstringnon-empty

A hex-coded string identifying the color of the tag.

Example: "#FF0000"
order_source_codestring(order_source_name)

The order sources that are supported by ShipEngine

Enum"amazon_ca""amazon_us""brightpearl""channel_advisor""cratejoy""ebay""etsy""jane""groupon_goods""magento"
packagesArray of objects(package)non-emptyrequired

The packages in the shipment.

Note: Some carriers only allow one package per shipment. If you attempt to create a multi-package shipment for a carrier that doesn't allow it, an error will be returned.

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

A string that uniquely identifies this shipment package

Example: "se-28529731"
packages[].​package_idstring(se_id)[ 1 .. 25 ] characters^se(-[a-z0-9]+)+$

A string that uniquely identifies this package type

Example: "se-28529731"
packages[].​package_codestring(package_code)[ 1 .. 50 ] characters^[a-z0-9]+(_[a-z0-9]+)*$

A package type, such as thick_envelope, small_flat_rate_box, large_package, etc. Use the code package for custom or unknown package types.

Example: "small_flat_rate_box"
packages[].​package_namestring

The name of the of the package type

packages[].​weightobject(weight)required

The package weight

packages[].​weight.​valuenumber>= 0required

The weight, in the specified unit

packages[].​weight.​unitstring(weight_unit)required

The possible weight unit values

Enum"pound""ounce""gram""kilogram"
packages[].​dimensionsobject(dimensions)

The package dimensions

packages[].​insured_valueobject(monetary_value)

The insured value of the package. Requires the insurance_provider field of the shipment to be set.

Default {"currency":"USD","amount":0}
packages[].​label_messagesobject(label_messages)

Custom messages to print on the shipping label for the package. These are typically used to print invoice numbers, product numbers, or other internal reference numbers. Not all carriers support label messages. The number of lines and the maximum length of each line also varies by carrier.

CarrierMax linesMax line length
USPS (Stamps.com)360
FedEx335 for the first line. 30 for additional lines.
UPS235
OnTrac225
packages[].​external_package_idstringnon-empty

An external package id.

packages[].​tracking_numberstring(tracking_number)non-emptyread-only

The tracking number for the package. The format depends on the carrier.

Example: "1Z932R800392060079"
packages[].​content_descriptionstring or null[ 1 .. 35 ] characters

A short description of the package content. Required for shipments moving to, from, and through Mexico.

Example: "Hand knitted wool socks"
packages[].​productsArray of objects(products)>= 0 items

Details about products inside packages (Information provided would be used on custom documentation)

Default []
total_weightobject(weight)read-onlyrequired

The combined weight of all packages in the shipment

total_weight.​valuenumber>= 0required

The weight, in the specified unit

total_weight.​unitstring(weight_unit)required

The possible weight unit values

Enum"pound""ounce""gram""kilogram"
comparison_rate_typestring or null

Calculate a rate for this shipment with the requested carrier using a ratecard that differs from the default. Only supported for UPS and USPS.

Example: "retail"
zoneinteger or null(int32)>= 0read-only

Certain carriers base their rates off of custom zones that vary depending upon the ship_to and ship_from location

Example: 6
rate_responseobject(rates_information)required

The rates response

rate_response.​ratesArray of objects(rate)read-only

An array of shipment rates

rate_response.​invalid_ratesArray of objects(rate)read-only

An array of invalid shipment rates

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

A string that uniquely identifies the rate request

Example: "se-28529731"
rate_response.​shipment_idstring(se_id)[ 1 .. 25 ] characters^se(-[a-z0-9]+)+$read-only

A string that uniquely identifies the shipment

Example: "se-28529731"
rate_response.​created_atstring(date-time)(se_id)[ 1 .. 25 ] characters^se(-[a-z0-9]+)+$

When the rate was created

Example: "se-28529731"
rate_response.​statusstring(rate_response_status)read-only

The possible rate response status values

Enum"working""completed""partial""error"
rate_response.​errorsArray of objects(error)
Response
application/json
{ "shipment_id": "se-28529731", "carrier_id": "se-28529731", "service_code": "usps_first_class_mail", "shipping_rule_id": "se-28529731", "external_order_id": "string", "items": [], "tax_identifiers": [ {} ], "external_shipment_id": "string", "shipment_number": "string", "ship_date": "2018-09-23T00:00:00.000Z", "created_at": "2018-09-23T15:00:00.000Z", "modified_at": "2018-09-23T15:00:00.000Z", "shipment_status": "pending", "ship_to": { "name": "John Doe", "phone": "+1 204-253-9411 ext. 123", "email": "example@example.com", "company_name": "The Home Depot", "address_line1": "1999 Bishop Grandin Blvd.", "address_line2": "Unit 408", "address_line3": "Building #7", "city_locality": "Winnipeg", "state_province": "Manitoba", "postal_code": "78756-3717", "country_code": "CA", "address_residential_indicator": "no", "instructions": "string", "geolocation": [] }, "ship_from": { "name": "John Doe", "phone": "+1 204-253-9411 ext. 123", "email": "example@example.com", "company_name": "The Home Depot", "address_line1": "1999 Bishop Grandin Blvd.", "address_line2": "Unit 408", "address_line3": "Building #7", "city_locality": "Winnipeg", "state_province": "Manitoba", "postal_code": "78756-3717", "country_code": "CA", "address_residential_indicator": "no", "instructions": "string" }, "warehouse_id": null, "return_to": { "name": "John Doe", "phone": "+1 204-253-9411 ext. 123", "email": "example@example.com", "company_name": "The Home Depot", "address_line1": "1999 Bishop Grandin Blvd.", "address_line2": "Unit 408", "address_line3": "Building #7", "city_locality": "Winnipeg", "state_province": "Manitoba", "postal_code": "78756-3717", "country_code": "CA", "address_residential_indicator": "no", "instructions": "string" }, "is_return": false, "confirmation": "none", "customs": null, "advanced_options": { "bill_to_account": null, "bill_to_country_code": null, "bill_to_party": null, "bill_to_postal_code": null, "contains_alcohol": false, "delivered_duty_paid": false, "dry_ice": false, "dry_ice_weight": {}, "non_machinable": false, "saturday_delivery": false, "fedex_freight": {}, "use_ups_ground_freight_pricing": null, "freight_class": "77.5", "custom_field1": null, "custom_field2": null, "custom_field3": null, "origin_type": null, "additional_handling": null, "shipper_release": null, "collect_on_delivery": {}, "third_party_consignee": false, "dangerous_goods": false, "dangerous_goods_contact": {}, "windsor_framework_details": {}, "license_number": "514785", "invoice_number": "IOC56888", "certificate_number": "784515", "fragile": true, "delivery-as-addressed": false, "return-after-first-attempt": false, "regulated_content_type": null }, "insurance_provider": "none", "tags": [], "order_source_code": "amazon_ca", "packages": [ {} ], "total_weight": { "value": 0, "unit": "pound" }, "comparison_rate_type": "retail", "zone": 6, "rate_response": { "rates": [], "invalid_rates": [], "rate_request_id": "se-28529731", "shipment_id": "se-28529731", "created_at": "se-28529731", "status": "working", "errors": [] } }

Get bulk rates

Request

Get Bulk Shipment Rates

Security
api_key
Bodyapplication/jsonrequired
One of:

A rate shipments request body

shipment_idsArray of objectsrequired

The array of shipment IDs

ship_to_service_point_idstring or null

A unique identifier for a carrier service point where the shipment will be delivered by the carrier. This will take precedence over a shipment's ship to address.

Example: "614940"
ship_from_service_point_idstring or null

A unique identifier for a carrier drop off point where a merchant plans to deliver packages. This will take precedence over a shipment's ship from address.

Example: "614940"
rate_optionsobject(rate_request_body)required

The rate options

rate_options.​carrier_idsArray of objectsnon-emptyrequired

Array of carrier ids to get rates for

rate_options.​package_typesArray of strings
rate_options.​service_codesArray of strings
rate_options.​calculate_tax_amountboolean

Calculate the duties and tariffs for cross border shipments.

rate_options.​preferred_currencystring(currency)

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

rate_options.​is_returnboolean

Indicate if it's a return shipment

rate_options.​rate_typestring

Indicates what type of rating to perform

Enum"check""shipment""quick"
curl -i -X POST \
  https://docs.shipstation.com/_mock/apis/shipengine/openapi/v1/rates/bulk \
  -H 'API-Key: YOUR_API_KEY_HERE' \
  -H 'Content-Type: application/json' \
  -d '{
    "shipment_ids": [
      "se-28529731"
    ],
    "ship_to_service_point_id": "614940",
    "ship_from_service_point_id": "614940",
    "rate_options": {
      "carrier_ids": [
        "se-28529731"
      ],
      "package_types": [
        "string"
      ],
      "service_codes": [
        "string"
      ],
      "calculate_tax_amount": true,
      "preferred_currency": "string",
      "is_return": true,
      "rate_type": "check"
    }
  }'

Responses

The request was a success.

Bodyapplication/jsonArray [
rate_request_idstring(se_id)[ 1 .. 25 ] characters^se(-[a-z0-9]+)+$read-onlyrequired

A string that uniquely identifies the rate request

Example: "se-28529731"
shipment_idstring(se_id)[ 1 .. 25 ] characters^se(-[a-z0-9]+)+$read-onlyrequired

A string that uniquely identifies the shipment

Example: "se-28529731"
created_atstring(date-time)(date_time)^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(\.\d+)?(...read-onlyrequired

An ISO 8601 string that represents a date and time.

Example: "2018-09-23T15:00:00.000Z"
statusstring(rate_response_status)read-onlyrequired

The possible rate response status values

Enum"working""completed""partial""error"
errorsArray of objects(error)read-onlyrequired

An array of errors that were returned while retrieving the bulk rate

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
[ { "rate_request_id": "se-28529731", "shipment_id": "se-28529731", "created_at": "2018-09-23T15:00:00.000Z", "status": "working", "errors": [] } ]

Estimate rates

Request

Get Rate Estimates

Security
api_key
Bodyapplication/jsonrequired
One of:

A rate estimate request body

from_country_codestring(country_code)= 2 charactersrequired
Example: "CA"
from_postal_codestring(postal_code)non-emptyrequired

postal code

Example: "78756-3717"
from_city_localitystringnon-emptyrequired

from postal code

Example: "Austin"
from_state_provincestringnon-emptyrequired

From state province

Example: "Austin"
to_country_codestring(country_code)= 2 charactersrequired
Example: "CA"
to_postal_codestring(postal_code)non-emptyrequired

postal code

Example: "78756-3717"
to_city_localitystringnon-emptyrequired

The city locality the package is being shipped to

Example: "Austin"
to_state_provincestringnon-emptyrequired

To state province

Example: "Houston"
weightobject(weight)required

The weight of the package

weight.​valuenumber>= 0required

The weight, in the specified unit

weight.​unitstring(weight_unit)required

The possible weight unit values

Enum"pound""ounce""gram""kilogram"
dimensionsobject(dimensions)

The dimensions of the package

confirmationstring(delivery_confirmation)

The possible delivery confirmation values

Enum"none""delivery""signature""adult_signature""direct_signature""delivery_mailed""verbal_confirmation""delivery_code""age_verification_16_plus"
address_residential_indicatorstring(address_residential_indicator)

Indicates whether an address is residential.

Enum"unknown""yes""no"
ship_datestring(date-time)(date_time)^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(\.\d+)?(...required

An ISO 8601 string that represents a date and time.

Example: "2018-09-23T15:00:00.000Z"
carrier_idstring(se_id)[ 1 .. 25 ] charactersDeprecated^se(-[a-z0-9]+)+$

A string that uniquely identifies the carrier

Example: "se-28529731"
curl -i -X POST \
  https://docs.shipstation.com/_mock/apis/shipengine/openapi/v1/rates/estimate \
  -H 'API-Key: YOUR_API_KEY_HERE' \
  -H 'Content-Type: application/json' \
  -d '{
    "carrier_id": "se-28529731",
    "from_country_code": "CA",
    "from_postal_code": "78756-3717",
    "from_city_locality": "Austin",
    "from_state_province": "Austin",
    "to_country_code": "CA",
    "to_postal_code": "78756-3717",
    "to_city_locality": "Austin",
    "to_state_province": "Houston",
    "weight": {
      "value": 0,
      "unit": "pound"
    },
    "dimensions": {
      "unit": "inch",
      "length": 0,
      "width": 0,
      "height": 0
    },
    "confirmation": "none",
    "address_residential_indicator": "unknown",
    "ship_date": "2018-09-23T15:00:00.000Z"
  }'

Responses

The request was a success.

Bodyapplication/jsonArray [
rate_typestring(rate_type)read-onlyrequired

The possible rate type values

Enum"check""shipment"
carrier_idstring(se_id)[ 1 .. 25 ] characters^se(-[a-z0-9]+)+$read-onlyrequired

A string that uniquely identifies the carrier

Example: "se-28529731"
shipping_amountobject(monetary_value)read-onlyrequired

The shipping amount

shipping_amount.​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

shipping_amount.​amountnumber>= 0required

The monetary amount, in the specified currency.

insurance_amountobject(monetary_value)read-onlyrequired

The insurance amount

insurance_amount.​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

insurance_amount.​amountnumber>= 0required

The monetary amount, in the specified currency.

confirmation_amountobject(monetary_value)read-onlyrequired

The confirmation amount

confirmation_amount.​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

confirmation_amount.​amountnumber>= 0required

The monetary amount, in the specified currency.

other_amountobject(monetary_value)read-onlyrequired

Any other charges associated with this rate

other_amount.​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

other_amount.​amountnumber>= 0required

The monetary amount, in the specified currency.

tax_amountobject(monetary_value)read-only

Tariff and additional taxes associated with an international shipment.

zoneinteger or null(int32)>= 0read-onlyrequired

Certain carriers base their rates off of custom zones that vary depending upon the ship_to and ship_from location

Example: 6
package_typestring or nullnon-emptyread-onlyrequired

package type that this rate was estimated for

Example: "package"
delivery_daysinteger(int32)>= 1read-only

The number of days estimated for delivery, this will show the actual delivery time if for example, the package gets shipped on a Friday

Example: 5
guaranteed_servicebooleanread-onlyrequired

Indicates if the rate is guaranteed.

estimated_delivery_datestring(date-time)(date)^\d{4}-\d{2}-\d{2}(T\d{2}:\d{2}:\d{2}(\.\d+)?...read-only

An ISO 8601 string that represents a date, but not a specific time. The value may contain a time component, but it will be set to 00:00:00 UTC by ShipEngine.

Example: "2018-09-23T00:00:00.000Z"
carrier_delivery_daysstringnon-emptyread-only

The carrier delivery days

ship_datestring(date-time)non-emptyread-only

ship date

negotiated_ratebooleanread-onlyrequired

Indicates if the rates been negotiated

service_typestringnon-emptyread-onlyrequired

service type

service_codestringnon-emptyread-onlyrequired

service code for the rate

trackablebooleanread-onlyrequired

Indicates if rate is trackable

carrier_codestringnon-emptyread-onlyrequired

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

carrier_nicknamestringnon-emptyread-onlyrequired

carrier nickname

carrier_friendly_namestringnon-emptyread-onlyrequired

carrier friendly name

validation_statusstring(validation_status)read-onlyrequired

The possible validation status values

Enum"valid""invalid""has_warnings""unknown"
warning_messagesArray of strings>= 0 itemsread-onlyrequired

The warning messages

error_messagesArray of strings>= 0 itemsread-onlyrequired

The error messages

rate_attributesArray of objects

Optional attributes that indicate the most profitable rates

]
Response
application/json
[ { "rate_type": "check", "carrier_id": "se-28529731", "shipping_amount": {}, "insurance_amount": {}, "confirmation_amount": {}, "other_amount": {}, "tax_amount": {}, "zone": 6, "package_type": "package", "delivery_days": 5, "guaranteed_service": true, "estimated_delivery_date": "2018-09-23T00:00:00.000Z", "carrier_delivery_days": "string", "ship_date": "2019-08-24T14:15:22Z", "negotiated_rate": true, "service_type": "string", "service_code": "string", "trackable": true, "carrier_code": "string", "carrier_nickname": "string", "carrier_friendly_name": "string", "validation_status": "valid", "warning_messages": [], "error_messages": [], "rate_attributes": [] } ]

Get rate by ID

Request

Retrieve a previously queried rate by its ID

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

Rate ID

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

Responses

The request was a success.

Bodyapplication/json
ratesArray of objects(rate)read-only

An array of shipment rates

invalid_ratesArray of objects(rate)read-only

An array of invalid shipment rates

Default []
rate_request_idstring(se_id)[ 1 .. 25 ] characters^se(-[a-z0-9]+)+$read-only

A string that uniquely identifies the rate request

Example: "se-28529731"
shipment_idstring(se_id)[ 1 .. 25 ] characters^se(-[a-z0-9]+)+$read-only

A string that uniquely identifies the shipment

Example: "se-28529731"
created_atstring(date-time)(se_id)[ 1 .. 25 ] characters^se(-[a-z0-9]+)+$

When the rate was created

Example: "se-28529731"
statusstring(rate_response_status)read-only

The possible rate response status values

Enum"working""completed""partial""error"
errorsArray of objects(error)
Response
application/json
{ "rates": [ {} ], "invalid_rates": [], "rate_request_id": "se-28529731", "shipment_id": "se-28529731", "created_at": "se-28529731", "status": "working", "errors": [ {} ] }

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