Skip to content

ShipEngine API API

by shipengine.com

API keyHTTPSTransportation
Open documentation ↗

Overview

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](https://www.shipengine.com/docs/rest/) to understand the basics. Learn how to [authenticate yourself to ShipEngine](https://www.shipengine.com/docs/auth/), and then use our [sandbox environment](https://www.shipengine.com/docs/sandbox/) 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](https://www.shipengine.com/docs/errors/) for tips. Here are some step-by-step **tutorials** to get you started: - [Learn how to create your first shipping label](https://www.shipengine.com/docs/labels/create-a-label/) - [Calculate shipping costs and compare rates across carriers](https://www.shipengine.com/docs/rates/) - [Track packages on-demand or in real time](https://www.shipengine.com/docs/tracking/) - [Validate mailing addresses anywhere on Earth](https://www.shipengine.com/docs/addresses/validation/) ## Shipping Labels for Every Major Carrier ShipEngine makes it easy to [create shipping labels for any carrier](https://www.shipengine.com/docs/labels/create-a-label/) and [download them](https://www.shipengine.com/docs/labels/downloading/) in a [variety of file formats](https://www.shipengine.com/docs/labels/formats/). You can even customize labels with your own [messages](https://www.shipengine.com/docs/labels/messages/) and [images](https://www.shipengine.com/docs/labels/branding/). ## Real-Time Package Tracking With ShipEngine you can [get the current status of a package](https://www.shipengine.com/docs/tracking/) or [subscribe to real-time tracking updates](https://www.shipengine.com/docs/tracking/webhooks/) via webhooks. You can also create [custimized tracking pages](https://www.shipengine.com/docs/tracking/branded-tracking-page/) 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](https://www.shipengine.com/docs/rates/get-shipment-rates/) using the ShipEngine Rates API. Or if you don't know the full shipment details yet, then you can [get rate estimates](https://www.shipengine.com/docs/rates/estimate/) with limited address info. ## Worldwide Address Validation ShipEngine supports [address validation](https://www.shipengine.com/docs/addresses/validation/) for virtually [every country on Earth](https://www.shipengine.com/docs/addresses/validation/countries/), including the United States, Canada, Great Britain, Australia, Germany, France, Norway, Spain, Sweden, Israel, Italy, and over 160 others.

ShipEngine API is a transportation API from shipengine.com. Requests are authenticated with an API key. It is served over HTTPS. Its OpenAPI description documents 84 endpoints.

At a glance

Authentication
API key
HTTPS
Yes
CORS
Unknown
Base URL
https://api.shipengine.com
Version
1.1.202303022103
Endpoints
84
Spec updated
2023-03-06

Make a first request

Replace the placeholders; the documentation says exactly where credentials go.

cURL
curl -X GET "https://api.shipengine.com/v1/batches" \
  -H "Accept: application/json" \
  -H "X-API-Key: YOUR_API_KEY"
JavaScript
const response = await fetch("https://api.shipengine.com/v1/batches", {
  method: "GET",
  headers: {
    "Accept": "application/json",
    "X-API-Key": "YOUR_API_KEY",
  },
});
const data = await response.json();
console.log(data);
Python
import requests

response = requests.request(
    "GET",
    "https://api.shipengine.com/v1/batches",
    headers={
    "Accept": "application/json",
    "X-API-Key": "YOUR_API_KEY",
    },
    timeout=30,
)
print(response.json())

Endpoints

MethodPathWhat it does
PUT/v1/addresses/recognizeParse an address
POST/v1/addresses/validateValidate An Address
GET/v1/batchesList Batches
POST/v1/batchesCreate A Batch
GET/v1/batches/external_batch_id/{external_batch_id}Get Batch By External ID
GET/v1/batches/{batch_id}Get Batch By ID
PUT/v1/batches/{batch_id}Update Batch By Id
DELETE/v1/batches/{batch_id}Delete Batch By Id
POST/v1/batches/{batch_id}/addAdd to a Batch
GET/v1/batches/{batch_id}/errorsGet Batch Errors
POST/v1/batches/{batch_id}/process/labelsProcess Batch ID Labels
POST/v1/batches/{batch_id}/removeRemove From Batch
GET/v1/carriersList Carriers
GET/v1/carriers/{carrier_id}Get Carrier By ID
PUT/v1/carriers/{carrier_id}/add_fundsAdd Funds To Carrier
GET/v1/carriers/{carrier_id}/optionsGet Carrier Options
GET/v1/carriers/{carrier_id}/packagesList Carrier Package Types
GET/v1/carriers/{carrier_id}/servicesList Carrier Services
POST/v1/connections/carriers/{carrier_name}Connect a carrier account
DELETE/v1/connections/carriers/{carrier_name}/{carrier_id}Disconnect a carrier
GET/v1/connections/carriers/{carrier_name}/{carrier_id}/settingsGet carrier settings
PUT/v1/connections/carriers/{carrier_name}/{carrier_id}/settingsUpdate carrier settings
POST/v1/connections/insurance/shipsuranceConnect a Shipsurance Account
DELETE/v1/connections/insurance/shipsuranceDisconnect a Shipsurance Account
GET/v1/downloads/{dir}/{subdir}/{filename}Download File
GET/v1/environment/webhooksList Webhooks
POST/v1/environment/webhooksCreate a Webhook
GET/v1/environment/webhooks/{webhook_id}Get Webhook By ID
PUT/v1/environment/webhooks/{webhook_id}Update a Webhook
DELETE/v1/environment/webhooks/{webhook_id}Delete Webhook By ID
PATCH/v1/insurance/shipsurance/add_fundsAdd Funds To Insurance
GET/v1/insurance/shipsurance/balanceGet Insurance Funds Balance
GET/v1/labelsList labels
POST/v1/labelsPurchase Label
GET/v1/labels/external_shipment_id/{external_shipment_id}Get Label By External Shipment ID
POST/v1/labels/rates/{rate_id}Purchase Label with Rate ID
POST/v1/labels/shipment/{shipment_id}Purchase Label with Shipment ID
GET/v1/labels/{label_id}Get Label By ID
POST/v1/labels/{label_id}/returnCreate a return label
GET/v1/labels/{label_id}/trackGet Label Tracking Information
PUT/v1/labels/{label_id}/voidVoid a Label By ID
GET/v1/manifestsList Manifests
POST/v1/manifestsCreate Manifest
GET/v1/manifests/requests/{manifest_request_id}Get Manifest Request By Id
GET/v1/manifests/{manifest_id}Get Manifest By Id
GET/v1/packagesList Custom Package Types
POST/v1/packagesCreate Custom Package Type
GET/v1/packages/{package_id}Get Custom Package Type By ID
PUT/v1/packages/{package_id}Update Custom Package Type By ID
DELETE/v1/packages/{package_id}Delete A Custom Package By ID
GET/v1/pickupsList Scheduled Pickups
POST/v1/pickupsSchedule a Pickup
GET/v1/pickups/{pickup_id}Get Pickup By ID
DELETE/v1/pickups/{pickup_id}Delete a Scheduled Pickup
POST/v1/ratesGet Shipping Rates
POST/v1/rates/bulkGet Bulk Rates
POST/v1/rates/estimateEstimate Rates
GET/v1/rates/{rate_id}Get Rate By ID
POST/v1/service_points/listList Service Points
GET/v1/service_points/{carrier_code}/{country_code}/{service_point_id}Get Service Point By ID
GET/v1/shipmentsList Shipments
POST/v1/shipmentsCreate Shipments
GET/v1/shipments/external_shipment_id/{external_shipment_id}Get Shipment By External ID
PUT/v1/shipments/recognizeParse shipping info
GET/v1/shipments/{shipment_id}Get Shipment By ID
PUT/v1/shipments/{shipment_id}Update Shipment By ID
PUT/v1/shipments/{shipment_id}/cancelCancel a Shipment
GET/v1/shipments/{shipment_id}/ratesGet Shipment Rates
POST/v1/shipments/{shipment_id}/tags/{tag_name}Add Tag to Shipment
DELETE/v1/shipments/{shipment_id}/tags/{tag_name}Remove Tag from Shipment
GET/v1/tagsGet Tags
POST/v1/tags/{tag_name}Create a New Tag
DELETE/v1/tags/{tag_name}Delete Tag
PUT/v1/tags/{tag_name}/{new_tag_name}Update Tag Name
POST/v1/tokens/ephemeralGet Ephemeral Token
GET/v1/trackingGet Tracking Information
POST/v1/tracking/startStart Tracking a Package
POST/v1/tracking/stopStop Tracking a Package
GET/v1/warehousesList Warehouses
POST/v1/warehousesCreate Warehouse
GET/v1/warehouses/{warehouse_id}Get Warehouse By Id
PUT/v1/warehouses/{warehouse_id}Update Warehouse By Id
DELETE/v1/warehouses/{warehouse_id}Delete Warehouse By ID
PUT/v1/warehouses/{warehouse_id}/settingsUpdate Warehouse Settings

Questions

Does the ShipEngine API API need an API key?

Yes. The ShipEngine API API uses API key authentication; the documentation explains how to get credentials.

Does the ShipEngine API API support HTTPS?

Yes, the ShipEngine API API is served over HTTPS.

How many endpoints does the ShipEngine API API have?

Its OpenAPI description lists 84 endpoints in version 1.1.202303022103. All of them are shown on this page.

What are alternatives to the ShipEngine API API?

Other Transportation APIs include airportsapi, Transport for London, England, Uber, Transport for Spain, Amadeus for Developers.

Compare alternatives →

Listed from APIs.guru (CC0).