---
title: ShipEngine API Integration on Truto
slug: shipengine
category: Logistics
canonical: "https://truto.one/integrations/detail/shipengine/"
---

# ShipEngine API Integration on Truto



**Category:** Logistics  
**Status:** Generally available

## MCP-ready AI tools

Truto exposes 96 tools for ShipEngine that AI agents can call directly.

- **list_all_ship_engine_account_settings** — List all account settings for a ShipEngine account. Returns: default_label_layout, url, event.
- **list_all_ship_engine_settings_images** — List all account images in ShipEngine. Returns: total, page, pages, links, url, event.
- **create_a_ship_engine_settings_image** — Create a new account image in ShipEngine by uploading a base64-encoded image. Returns: label_image_id, name, is_default, image_content_type, image_data, created_at, modified_at, url, event.
- **get_single_ship_engine_settings_image_by_id** — Get a single ShipEngine account image by id. Returns: label_image_id, is_default, image_content_type, image_data, created_at, modified_at, name. Required: id.
- **update_a_ship_engine_settings_image_by_id** — Update a ShipEngine account image by id. Returns an empty 204 response on success. Required: id.
- **delete_a_ship_engine_settings_image_by_id** — Delete a ShipEngine account image by id. Returns an empty 204 response on success. Required: id.
- **list_all_ship_engine_batches** — List ShipEngine batches associated with your account, filterable by status, batch number, and creation/processing date ranges. Returns: label_layout, label_format, batch_id, batch_number, external_batch_id, batch_notes, created_at, processed_at, errors, process_errors, warnings, completed, forms, count, batch_shipments_url, batch_labels_url, batch_errors_url, label_download, form_download,…
- **create_a_ship_engine_batch** — Create a ShipEngine batch from shipment IDs or rate IDs, optionally processing labels immediately by including a process_labels object. Returns: label_layout, label_format, batch_id, batch_number, external_batch_id, batch_notes, created_at, processed_at, errors, process_errors, warnings, completed, forms, count, batch_shipments_url, batch_labels_url, batch_errors_url, label_download,…
- **get_single_ship_engine_batch_by_id** — Get a single ShipEngine batch by id. Returns: label_layout, label_format, batch_id, batch_number, external_batch_id, batch_notes, created_at, processed_at, errors, process_errors, warnings, completed, forms, count, batch_shipments_url, batch_labels_url, batch_errors_url, label_download, form_download, paperless_download, status, resource_url, resource_type. Required: id.
- **update_a_ship_engine_batch_by_id** — Update a ShipEngine batch by id. Returns an empty 204 response on success. Required: id.
- **delete_a_ship_engine_batch_by_id** — Delete a ShipEngine batch by id. Returns an empty 204 response on success. Required: id.
- **ship_engine_batches_list_errors** — List detailed errors for a ShipEngine batch by batch_id. Returns: error, shipment_id, external_shipment_id. Required: batch_id.
- **ship_engine_batches_add** — Add shipments or rates to a ShipEngine batch by batch_id. Returns an empty 204 response on success. Required: batch_id.
- **ship_engine_batches_remove** — Remove shipments or rates from a ShipEngine batch by batch_id. Returns an empty 204 response on success. Required: batch_id.
- **ship_engine_batches_get_by_external_batch_id** — Get a ShipEngine batch by its external batch ID. Returns the full batch object including batch_id, external_batch_id, status, created_at, processed_at, errors, warnings, completed, count, label_download, and label settings. Required: external_batch_id.
- **ship_engine_batches_process_labels** — Process labels for a ShipEngine batch by batch_id, specifying ship date, label format, layout, and display scheme. Returns an empty 204 response on success. Required: batch_id.
- **list_all_ship_engine_carriers** — List all ShipEngine carriers connected to the account. Returns each carrier with carrier_id, carrier_code, account_number, balance, nickname, friendly_name, primary, services, packages, options, connection_status, and additional capability flags.
- **get_single_ship_engine_carrier_by_id** — Get a single ShipEngine carrier by id. Returns the full carrier object including carrier_id, carrier_code, account_number, balance, nickname, friendly_name, primary, services, packages, options, and connection_status. Required: id.
- **delete_a_ship_engine_carrier_by_id** — Disconnect a ShipEngine carrier by id, removing it from the account. Returns an empty 204 response on success. Required: id.
- **ship_engine_carriers_add_funds** — Add funds to a ShipEngine carrier account that requires funding. Returns: balance, resource_url, resource_type. Required: carrier_id, currency, amount.
- **ship_engine_carriers_list_options** — List the advanced options available for a specific ShipEngine carrier. Returns: options, resource_url, resource_type. Required: carrier_id.
- **ship_engine_carriers_list_packages** — List the package types supported by a specific ShipEngine carrier. Returns each package with package_id, package_code, name, dimensions, and description. Required: carrier_id.
- **ship_engine_carriers_list_services** — List the shipping services offered by a specific ShipEngine carrier. Returns each service with carrier_id, carrier_code, service_code, name, domestic, international, is_multi_package_supported, and is_return_supported. Required: carrier_id.
- **create_a_ship_engine_connections_carrier** — Connect a carrier account in ShipEngine. The request body fields vary by carrier_name (e.g. username/password for Access Worldwide, account_number for DHL Express, address and contact fields for FedEx). Returns: carrier_id, url, event. Required: carrier_name.
- **delete_a_ship_engine_connections_carrier_by_id** — Disconnect a carrier in ShipEngine by carrier name and id. Returns an empty 204 response on success. Required: id, carrier_name.
- **ship_engine_connections_carriers_list_settings** — Get carrier settings in ShipEngine by carrier name and carrier id. Returns: resource_url, resource_type.g. smart_post_hub for FedEx, use_negotiated_rates for UPS). Required: carrier_name, carrier_id.
- **ship_engine_connections_carriers_bulk_update** — Update carrier settings in ShipEngine by carrier name and carrier id. The request body fields vary by carrier_name (e.g. pickup_type and smart_post_hub for FedEx, use_negotiated_rates and invoice for UPS, include_barcode_with_order_number for Newgistics). Returns an empty 204 response on success. Required: carrier_name, carrier_id.
- **create_a_ship_engine_documents_combined_label** — Create a combined label PDF in ShipEngine from up to 30 existing labels. Returns: label_download. Only PDF format is currently supported; combined labels are limited to 30 single-page labels similar in size to USPS labels.
- **list_all_ship_engine_downloads** — Download a ShipEngine label or file as binary content. Returns the raw binary file in PDF, PNG, or ZPL format depending on the label being downloaded. Optional: download, rotation. Required: subdir, filename, dir.
- **list_all_ship_engine_environment_webhooks** — List all ShipEngine webhooks currently enabled for the account. Returns: webhook_id, url, event, headers, name, store_id.
- **create_a_ship_engine_environment_webhook** — Create a ShipEngine webhook for specific events in the environment. Returns: webhook_id, url, event, headers, name, store_id. Required: event, url.
- **get_single_ship_engine_environment_webhook_by_id** — Get a single ShipEngine webhook by id. Returns: webhook_id, url, event, headers, name, store_id. Required: id.
- **update_a_ship_engine_environment_webhook_by_id** — Update a ShipEngine webhook's url, headers, name, or store_id by id. Returns an empty 204 response on success. Required: id.
- **delete_a_ship_engine_environment_webhook_by_id** — Delete a ShipEngine webhook by id. Returns an empty 204 response on success. Required: id.
- **list_all_ship_engine_labels** — List ShipEngine shipping labels with optional filters by status, carrier, service, warehouse, tracking number, batch, and date range. Returns: label_id, status, shipment_id, external_shipment_id, external_order_id, ship_date, created_at, shipment_cost, insurance_cost, tracking_number, is_return_label, rma_number, is_international, batch_id, carrier_id, service_code, package_code, voided,…
- **create_a_ship_engine_label** — Purchase and print a ShipEngine shipping label for a shipment. Returns the created label including label_id, status, tracking_number, shipment_cost, label_download, carrier_id, service_code, and ship_date.
- **get_single_ship_engine_label_by_id** — Get a single ShipEngine label by id. Returns the full label object including label_id, status, shipment_id, ship_date, shipment_cost, tracking_number, label_download, and more. The optional label_download_type query parameter controls whether the label is returned as a URL or inline Base64. Required: id.
- **ship_engine_labels_get_by_external_shipment_id** — Get a ShipEngine label by the external shipment ID that was used during label creation. Returns: label_id, status, shipment_id, external_shipment_id, external_order_id, shipment, ship_date, created_at, shipment_cost, insurance_cost, requested_comparison_amount, rate_details, tracking_number, is_return_label, rma_number, is_international, batch_id, carrier_id, charge_event, outbound_label_id,…. Required: external_shipment_id.
- **ship_engine_labels_create_from_rate** — Purchase a shipping label in ShipEngine from a previously obtained rate_id, avoiding the need to resubmit shipment details. Returns: label_id, status, shipment_id, external_shipment_id, external_order_id, shipment, ship_date, created_at, shipment_cost, insurance_cost, requested_comparison_amount, rate_details, tracking_number, is_return_label, rma_number, is_international, batch_id, carrier_id,…. Required: rate_id.
- **ship_engine_labels_create_from_rate_shopper** — Purchase Label from Rate Shopper. Returns: label_id, status, shipment_id, external_shipment_id, external_order_id, shipment, ship_date, created_at. Required: rate_shopper_id, shipment.
- **ship_engine_labels_create_from_shipment** — Purchase a ShipEngine shipping label from an existing shipment by its shipment ID. Returns: label_id, status, shipment_id, external_shipment_id, external_order_id, shipment, ship_date, created_at, shipment_cost, insurance_cost, requested_comparison_amount, rate_details, tracking_number, is_return_label, rma_number, is_international, batch_id, carrier_id, charge_event, outbound_label_id,…. Required: shipment_id.
- **ship_engine_labels_return** — Create a return label for an existing outbound ShipEngine label. You can optionally specify a custom RMA number; if omitted, one is auto-generated. Returns the created label object including label_id, status, tracking_number, shipment_cost, label_download, and charge_event. Required: label_id.
- **ship_engine_labels_track** — Track a ShipEngine label by label_id to retrieve real-time tracking information. Returns: tracking_number, tracking_url, status_code, status_detail_code, carrier_code, carrier_id, status_description, status_detail_description, carrier_status_code, carrier_detail_code, carrier_status_description, ship_date, estimated_delivery_date, actual_delivery_date, exception_description, events, label_url,…. Required: label_id.
- **ship_engine_labels_void** — Void a ShipEngine label by label_id to request a refund for the unused label. Returns: approved, message, reason_code, label_id, status, shipment_id, ship_date, created_at, shipment_cost, insurance_cost, tracking_number, is_return_label, is_international, batch_id, carrier_id, service_code, package_code, voided, label_format, label_layout, trackable, carrier_code, tracking_status, label_download,…. Required: label_id.
- **ship_engine_labels_cancel_refund** — Cancel a scheduled refund request for a ShipEngine label. Only labels with refund status "request_scheduled" can be excluded from an upcoming refund request. Returns the updated label object including label_id, status, shipment_id, tracking_number, and label_download. Required: label_id.
- **list_all_ship_engine_manifests** — List ShipEngine manifests, optionally filtered by warehouse, carrier, ship date range, creation date range, or specific label ids. Returns: manifests, total, page, pages, links.
- **create_a_ship_engine_manifest** — Create a ShipEngine manifest for a specific warehouse by providing carrier_id, warehouse_id, and ship_date, or alternatively by providing a list of label_ids. Returns: manifests, manifest_requests, manifest_id, form_id, created_at, ship_date, shipments, warehouse_id, submission_id, carrier_id, manifest_download, label_ids, request_id, errors, url, event.
- **get_single_ship_engine_manifest_by_id** — Get a single ShipEngine manifest by id. Returns: manifest_id, form_id, created_at, ship_date, shipments, label_ids, warehouse_id, submission_id, carrier_id, manifest_download. Required: id.
- **ship_engine_manifests_get_request** — Get the status and results of a ShipEngine manifest creation request by request_id. Returns: manifests, manifest_requests, manifest_id, form_id, created_at, ship_date, shipments, warehouse_id, submission_id, carrier_id, manifest_download, label_ids, request_id, errors. Required: request_id.
- **list_all_ship_engine_packages** — List custom package types associated with the ShipEngine account. Returns a packages array where each item includes package_id, package_code, name, dimensions, and description.
- **create_a_ship_engine_package** — Create a custom package type in ShipEngine for accurate rate estimates. Returns: package_id, package_code, name, dimensions, description, url, event. Required: package_code, name.
- **get_single_ship_engine_package_by_id** — Get a single ShipEngine custom package type by id. Returns: package_id, package_code, name, dimensions, description. Required: id.
- **update_a_ship_engine_package_by_id** — Update a ShipEngine custom package type by id. Returns an empty 204 response on success. Required: id, package_code, name.
- **delete_a_ship_engine_package_by_id** — Delete a ShipEngine custom package type by id. Returns an empty 204 response on success. Required: id.
- **list_all_ship_engine_pickups** — List scheduled pickups in ShipEngine, optionally filtered by carrier, warehouse, or creation date range. Returns each pickup with pickup_id, label_ids, created_at, carrier_id, confirmation_number, and pickup_windows.
- **create_a_ship_engine_pickup** — Schedule a package pickup with a carrier in ShipEngine. Returns the created pickup including pickup_id, label_ids, created_at, carrier_id, confirmation_number, pickup_address, and contact_details.
- **get_single_ship_engine_pickup_by_id** — Get a single scheduled pickup by id in ShipEngine. Returns the pickup including pickup_id, label_ids, created_at, carrier_id, confirmation_number, pickup_address, contact_details, and pickup_window. Required: id.
- **delete_a_ship_engine_pickup_by_id** — Delete a previously-scheduled pickup by id in ShipEngine. Returns: request_id, errors, pickup_id. Required: id.
- **create_a_ship_engine_rate** — Calculate shipping rates for a shipment in ShipEngine by providing either an existing shipment_id or a full shipment object with carrier, service, origin, and destination details. Returns: shipment_id, carrier_id, service_code, shipping_rule_id, external_order_id, items, tax_identifiers, external_shipment_id, shipment_number, ship_date, created_at, modified_at, shipment_status, ship_to,…
- **ship_engine_rates_bulk_create** — Get bulk shipping rates for multiple ShipEngine shipments in a single request. Returns an array of rate results, each containing rate_request_id, shipment_id, created_at, status, and errors.
- **get_single_ship_engine_rate_by_id** — Get a previously queried ShipEngine rate by id. Returns the rate response body including rate_request_id, shipment_id, status, created_at, rates, invalid_rates, and errors. Required: id.
- **ship_engine_rates_estimate** — Estimate ShipEngine shipping rates from origin/destination addresses, package weight, and ship date. Returns rate estimates with rate_type, carrier_id, shipping_amount, delivery_days, and estimated_delivery_date.
- **get_single_ship_engine_service_point_by_id** — Get a single ShipEngine carrier service point by id. Returns the service_point object including carrier_code, service_point_id, address_line1, city_locality, hours_of_operation, features, and type. Required: id, carrier_code, country_code.
- **list_all_ship_engine_service_points** — List ShipEngine carrier service points by location. Caller must provide exactly one of address_query, address, or lat/long pair. Returns: lat, long, service_points, errors, url, event.
- **list_all_ship_engine_shipments** — List ShipEngine shipments with optional filtering by shipment status, batch ID, tag, creation/modification date range, and sales order ID. Returns each shipment with shipment_id, carrier_id, service_code, shipment_status, ship_date, ship_to, ship_from, packages, total_weight, created_at, and modified_at.
- **create_a_ship_engine_shipment** — Create Shipments. Returns: shipment_id, carrier_id, service_code, shipping_rule_id, external_order_id, items, tax_identifiers, external_shipment_id. Required: shipments.
- **get_single_ship_engine_shipment_by_id** — Get a single ShipEngine shipment by id. Returns the full shipment object including shipment_id, carrier_id, service_code, ship_date, shipment_status, ship_to, ship_from, packages, and total_weight. Required: id.
- **update_a_ship_engine_shipment_by_id** — Update a shipment in ShipEngine by its shipment id. Returns the updated shipment object including shipment_id, carrier_id, service_code, shipment_status, ship_date, created_at, ship_to, ship_from, packages, and total_weight. Required: id.
- **ship_engine_shipments_list_tags** — Get the list of tags associated with a ShipEngine shipment by its ID. Returns an array of tag strings. Required: shipment_id.
- **ship_engine_shipments_cancel** — Cancel a ShipEngine shipment by marking it as cancelled. Any associated labels must be voided first. Returns an empty 204 response on success. Required: shipment_id.
- **ship_engine_shipments_get_by_external_shipment_id** — Get a ShipEngine shipment by its external shipment ID. Returns the full shipment object including shipment_id, carrier_id, service_code, ship_date, created_at, modified_at, shipment_status, ship_to, ship_from, packages, total_weight, and tags. Required: external_shipment_id.
- **ship_engine_shipments_recognize** — Parse unstructured text to extract shipping data using ShipEngine's shipment-recognition API. Returns a confidence score, a parsed shipment object with carrier_id, service_code, ship_to, ship_from, and packages, plus recognized entities. Shipment recognition is currently supported for the US, Canada, Australia, New Zealand, the UK, and Ireland. Required: text.
- **ship_engine_shipments_list_rates** — Get shipping rates for a ShipEngine shipment by shipment ID. Returns: rate_id, rate_type, carrier_id, shipping_amount, insurance_amount, confirmation_amount, other_amount, requested_comparison_amount, tax_amount, rate_details, zone, package_type, delivery_days, guaranteed_service, estimated_delivery_date, carrier_delivery_days, ship_date, negotiated_rate, service_type, service_code, trackable,…. Required: shipment_id.
- **ship_engine_shipments_add_tag** — Add a tag to a ShipEngine shipment. Returns: tags, resource_url, resource_type. Required: shipment_id, tag_name.
- **ship_engine_shipments_remove_tag** — Remove an existing tag from a ShipEngine shipment. Returns an empty 204 response on success. Required: shipment_id, tag_name.
- **ship_engine_shipments_bulk_update** — Update tags on one or more ShipEngine shipments in bulk. Returns an empty 204 response on success.
- **list_all_ship_engine_tags** — List all ShipEngine tags associated with an account. Returns: tag_id, name, color.
- **create_a_ship_engine_tag** — Create a new ShipEngine tag for customizing how you track shipments. Returns the created tag including tag_id, name, and color. Required: name.
- **delete_a_ship_engine_tag_by_id** — Delete a ShipEngine tag that is no longer needed. Returns an empty 204 response on success. Required: id.
- **ship_engine_tags_rename** — Rename a ShipEngine tag while keeping the relevant shipments attached to it. Returns an empty 204 response on success. Required: tag_id, new_tag_name.
- **create_a_ship_engine_tokens_ephemeral** — Create an ephemeral token in ShipEngine for authorized application access. Returns: token, redirect_url. The token expires in 10 seconds.
- **list_all_ship_engine_trackings** — Retrieve package tracking information from ShipEngine by carrier and tracking number. Returns: tracking_number, tracking_url, status_code, status_detail_code, carrier_code, carrier_id, status_description, status_detail_description, carrier_status_code, carrier_detail_code, carrier_status_description, ship_date, estimated_delivery_date, actual_delivery_date, exception_description, events,…
- **ship_engine_trackings_start** — Subscribe to tracking updates for a package in ShipEngine and receive webhook notifications whenever the shipping status changes. Provide carrier_code and tracking_number, or carrier_id, to identify the package. Returns an empty 204 response on success.
- **ship_engine_trackings_stop** — Unsubscribe from tracking updates for a package in ShipEngine, stopping webhook notifications for shipping status changes. Provide carrier_code and tracking_number, or carrier_id, to identify the package. Returns an empty 204 response on success.
- **list_all_ship_engine_warehouses** — List Warehouses. Returns: warehouses.
- **create_a_ship_engine_warehouse** — Create Warehouse. Returns: warehouse_id, is_default, name, created_at, origin_address, return_address.
- **get_single_ship_engine_warehouse_by_id** — Get Warehouse By Id. Returns: warehouse_id, is_default, name, created_at, origin_address, return_address. Required: id.
- **update_a_ship_engine_warehouse_by_id** — Update Warehouse By Id. Required: id.
- **delete_a_ship_engine_warehouse_by_id** — Delete Warehouse By ID. Required: id.
- **ship_engine_warehouses_bulk_update** — Update Warehouse Settings. Required: warehouse_id.
- **ship_engine_addresses_recognize** — Parse unstructured text to extract a structured shipping address in ShipEngine. Returns: score, address, entities. Supported for the US, Canada, Australia, New Zealand, the UK, and Ireland. Required: text.
- **ship_engine_addresses_validate** — Validate one or more addresses in ShipEngine by cross-referencing multiple databases to verify deliverability. Returns an array of results, each with status, original_address, matched_address, and messages.
- **ship_engine_shipsurance_add_funds** — Add funds to a Shipsurance insurance account in ShipEngine. Returns: currency, amount. Required: currency, amount.
- **ship_engine_shipsurance_list_balances** — Retrieve the balance of your Shipsurance insurance account in ShipEngine. The response is a monetary value object. Returns: currency, amount.
- **ship_engine_shipsurance_connect** — Connect a Shipsurance account to ShipEngine. Returns an empty object on success. Required: email, policy_id.
- **ship_engine_shipsurance_disconnect** — Disconnect a Shipsurance account from ShipEngine. Returns an empty object on success.

## How it works

1. **Link your customer's ShipEngine account.** Use Truto's frontend SDK; we handle every OAuth and API key flow so you don't need to create the OAuth app.
2. **Authentication is automatic.** Truto refreshes tokens, stores credentials securely, and injects them into every API request.
3. **Call Truto's API to reach ShipEngine.** The Proxy API is a 1-to-1 mapping of the ShipEngine API.
4. **Get a unified response format.** Every response uses a single shape, with cursor-based pagination and data in the `result` field.

## Use cases

- **Embed multi-carrier shipping in your WMS or OMS** — Give merchants access to 100+ carriers through a single integration instead of building and maintaining direct connections to USPS, FedEx, UPS, and DHL. Truto handles auth and account connection so your users can bring their own carrier accounts or use ShipEngine's negotiated rates.
- **Offer automated rate shopping at checkout or order creation** — Let your platform compare live rates across carriers and services before a label is purchased, so merchants can automatically pick the cheapest or fastest option. This is a high-value differentiator for ERPs, OMSs, and marketplaces that manage fulfillment logic.
- **Power bulk fulfillment for high-volume warehouses** — WMS and 3PL platforms can push hundreds of shipments into ShipEngine batches, generate labels asynchronously, and pull combined label documents for thermal printing. This turns a per-order API workflow into a warehouse-scale operation.
- **Deliver real-time tracking and delivery notifications** — Subscribe shipments to tracking and receive push events through ShipEngine webhooks instead of polling carrier APIs. Support platforms, marketplaces, and post-purchase experience tools can trigger buyer notifications and status updates in near real time.
- **Reduce failed deliveries with address validation** — Validate and normalize addresses globally before an order is confirmed to avoid return-to-sender fees and delivery exceptions. This is a low-effort, high-ROI feature to embed in checkout, order intake, or CS agent workflows.

## What you can build

- **Bring-your-own-carrier connection flow** — Let end users connect their negotiated FedEx, UPS, or DHL accounts inside your product using ShipEngine's carrier connection endpoints, with credentials managed by Truto.
- **Live rate shopping widget** — Call ship_engine_shipments_list_rates or rates_estimate to return a ranked list of carrier options with price and delivery time, then purchase the selected rate with labels_create_from_rate.
- **Bulk label generation and combined PDFs** — Create batches, process labels asynchronously via batches_process_labels, and stitch results into a single combined document using create_a_ship_engine_documents_combined_label for warehouse dispatch.
- **End-of-day carrier manifests** — Automatically generate SCAN forms with create_a_ship_engine_manifest so drivers can accept all daily shipments with a single barcode scan.
- **Proactive tracking and delivery event pipeline** — Register environment webhooks and use trackings_start to subscribe packages, then pipe In Transit, Out for Delivery, and Exception events into your notification or ticketing system.
- **Returns and label voiding workflows** — Ship a self-serve returns portal using labels_return, and reclaim postage on unused labels with labels_void and labels_cancel_refund.

## FAQs

### How does authentication work for ShipEngine through Truto?

ShipEngine uses API key authentication. Truto securely stores and injects each end user's API key on every request, so you don't need to build key management, rotation, or storage yourself.

### Can end users connect their own negotiated carrier accounts?

Yes. Using create_a_ship_engine_connections_carrier and the connections_carriers_list_settings and bulk_update tools, you can let users link their own FedEx, UPS, DHL, or other carrier accounts inside your product, or default to ShipEngine's pre-negotiated rates.

### How do I get real-time tracking updates without polling?

Register a webhook via create_a_ship_engine_environment_webhook and subscribe packages using ship_engine_trackings_start. ShipEngine will push tracking events to your endpoint, which Truto can normalize and forward into your system.

### What label formats are supported?

ShipEngine returns labels in PDF, PNG, and ZPL, making it usable for both browser downloads and direct thermal printer workflows in warehouses. The format is specified when calling create_a_ship_engine_label or labels_create_from_rate.

### How do bulk operations work for high-volume fulfillment?

Use create_a_ship_engine_batch to group shipments, batches_add and batches_remove to manage contents, and batches_process_labels to generate labels asynchronously. batches_list_errors surfaces per-shipment failures without breaking the whole batch.

### Can I look up shipments and labels using my own IDs?

Yes. ShipEngine supports external identifiers via ship_engine_shipments_get_by_external_shipment_id, ship_engine_labels_get_by_external_shipment_id, and ship_engine_batches_get_by_external_batch_id, so you don't have to store ShipEngine's internal IDs.

## Related reading

- [Connect ShipEngine to Claude: Compare Rates and Manage Carriers](https://truto.one/blog/connect-shipengine-to-claude-compare-rates-and-manage-carriers/) — Learn how to build a managed MCP server to connect ShipEngine to Claude. Compare rates, validate addresses, and automate carrier management with AI agents.
- [Connect ShipEngine to ChatGPT: Automate Labels and Tracking](https://truto.one/blog/connect-shipengine-to-chatgpt-automate-labels-and-tracking/) — Learn how to connect ShipEngine to ChatGPT using Truto's managed MCP servers. Automate label generation, rate shopping, and real-time package tracking.
- [Connect ShipEngine to AI Agents: Validate Addresses and Pickups](https://truto.one/blog/connect-shipengine-to-ai-agents-validate-addresses-and-pickups/) — Learn how to connect ShipEngine to AI agents using Truto's /tools endpoint. Validate addresses, generate labels, and handle logistics APIs safely without building custom connectors.
