integrations.sh
← all integrations

ShipEngine API

OpenAPI apis-guru transport

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 to understand the basics. Learn how to , and then use our to kick the tires and get familiar with our API. If you run into any problems, then be sure to check the for tips.

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

Shipping Labels for Every Major Carrier

ShipEngine makes it easy to and in a . You can even customize labels with your own and .

Real-Time Package Tracking

With ShipEngine you can or via webhooks. You can also create 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 using the ShipEngine Rates API. Or if you don't know the full shipment details yet, then you can with limited address info.

Worldwide Address Validation

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

Homepage
https://api.apis.guru/v2/specs/shipengine.com/1.1.202303022103.json
Provider
shipengine.com
OpenAPI version
3.0.0
Spec (JSON)
https://api.apis.guru/v2/specs/shipengine.com/1.1.202303022103/openapi.json
Spec (YAML)
https://api.apis.guru/v2/specs/shipengine.com/1.1.202303022103/openapi.yaml

Tools (86)

Extracted live via the executor SDK.

  • addresses.parseAddress

    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.

  • addresses.validateAddress

    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.

  • batches.addToBatch

    Add a Shipment or Rate to a Batch

  • batches.createBatch

    Create a Batch

  • batches.deleteBatch

    Delete Batch By Id

  • batches.getBatchByExternalId

    Get Batch By External ID

  • batches.getBatchById

    Get Batch By ID

  • batches.listBatchErrors

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

  • batches.listBatches

    List Batches associated with your Shipengine account

  • batches.processBatch

    Process Batch ID Labels

  • batches.removeFromBatch

    Remove a shipment or rate from a batch

  • batches.updateBatch

    Update Batch By Id

  • carrierAccounts.connectCarrier

    Connect a carrier account

  • carrierAccounts.disconnectCarrier

    Disconnect a carrier

  • carrierAccounts.getCarrierSettings

    Get carrier settings

  • carrierAccounts.updateCarrierSettings

    Update carrier settings

  • carriers.addFundsToCarrier

    Add Funds To A Carrier

  • carriers.getCarrierById

    Retrive carrier info by ID

  • carriers.getCarrierOptions

    Get a list of the options available for the carrier

  • carriers.listCarrierPackageTypes

    List the package types associated with the carrier

  • carriers.listCarriers

    List all carriers that have been added to this account

  • carriers.listCarrierServices

    List the services associated with the carrier ID

  • downloads.downloadFile

    Get File

  • insurance.addFundsToInsurance

    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.

  • insurance.connectInsurer

    Connect a Shipsurance Account

  • insurance.disconnectInsurer

    Disconnect a Shipsurance Account

  • insurance.getInsuranceBalance

    Retrieve the balance of your Shipsurance account.

  • labels.createLabel

    Purchase and print a label for shipment

  • labels.createLabelFromRate

    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.

  • labels.createLabelFromShipment

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

  • labels.createReturnLabel

    Create a return label

  • labels.getLabelByExternalShipmentId

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

  • labels.getLabelById

    Retrieve information for individual labels.

  • labels.getTrackingLogFromLabel

    Retrieve the label's tracking information

  • labels.listLabels

    This endpoint returns a list of labels that you've . 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

  • labels.voidLabel

    Void a label by ID to get a refund.

  • manifests.createManifest

    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.

  • manifests.getManifestById

    Get Manifest By Id

  • manifests.getManifestRequestById

    Get Manifest Request By Id

  • manifests.listManifests

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

  • packagePickups.deleteScheduledPickup

    Delete a previously-scheduled pickup by ID

  • packagePickups.getPickupById

    Get Pickup By ID

  • packagePickups.listScheduledPickups

    List all pickups that have been scheduled for this carrier

  • packagePickups.schedulePickup

    Schedule a package pickup with a carrier

  • packageTypes.createPackageType

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

  • packageTypes.deletePackageType

    Delete a custom package using the ID

  • packageTypes.getPackageTypeById

    Get Custom Package Type by ID

  • packageTypes.listPackageTypes

    List the custom package types associated with the account

  • packageTypes.updatePackageType

    Update the custom package type object by ID

  • rates.calculateRates

    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!

  • rates.compareBulkRates

    Get Bulk Shipment Rates

  • rates.estimateRates

    Get Rate Estimates

  • rates.getRateById

    Retrieve a previously queried rate by its ID

  • servicePoints.servicePointsGetById

    Returns a carrier service point by using the service_point_id

  • servicePoints.servicePointsList

    List carrier service points by location

  • shipments.cancelShipments

    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

  • shipments.createShipments

    Create one or multiple shipments.

  • shipments.getShipmentByExternalId

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

  • shipments.getShipmentById

    Get an individual shipment based on its ID

  • shipments.listShipmentRates

    Get Rates for the shipment information associated with the shipment ID

  • shipments.listShipments

    Get list of Shipments

  • shipments.parseShipment

    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.

  • shipments.tagShipment

    Add a tag to the shipment object

  • shipments.untagShipment

    Remove an existing tag from the Shipment object

  • shipments.updateShipment

    Update a shipment object based on its ID

  • tags.createTag

    Create a new Tag for customizing how you track your shipments

  • tags.deleteTag

    Delete a tag that is no longer needed

  • tags.listTags

    Get a list of all tags associated with an account.

  • tags.renameTag

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

  • tokens.tokensGetEphemeralToken

    This endpoint returns a token that can be passed to an application for authorized access. The lifetime of this token is 10 seconds.

  • tracking.getTrackingLog

    Retrieve package tracking information

  • tracking.startTracking

    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.

  • tracking.stopTracking

    Unsubscribe from tracking updates for a package.

  • warehouses.createWarehouse

    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

  • warehouses.deleteWarehouse

    Delete a warehouse by ID

  • warehouses.getWarehouseById

    Retrieve warehouse data based on the warehouse ID

  • warehouses.listWarehouses

    Retrieve a list of warehouses associated with this account.

  • warehouses.updateWarehouse

    Update Warehouse object information

  • warehouses.updateWarehouseSettings

    Update Warehouse settings object information

  • webhooks.createWebhook

    Create a webook for specific events in the environment.

  • webhooks.deleteWebhook

    Delete a webhook

  • webhooks.getWebhookById

    Retrieve individual webhook by an ID

  • webhooks.listWebhooks

    List all webhooks currently enabled for the account.

  • webhooks.updateWebhook

    Update the webhook url property

  • openapi.previewSpec

    Preview an OpenAPI document before adding it as a source

  • openapi.addSource

    Add an OpenAPI source and register its operations as tools