Developer Tools

Shipping API

Build custom shipping workflows with a single RESTful API. Rate shop across 12+ carriers, purchase discounted labels, track packages in real time, and receive webhook notifications for every status change. Everything you need to embed multi-carrier shipping into any platform, ERP, or custom application.

12+

Carriers Available

USPS, UPS, FedEx, DHL & regional

<200ms

Avg Response Time

For rate and label endpoints

99.9%

API Uptime

Enterprise-grade reliability

REST

Standard Protocol

JSON over HTTPS with API keys

Benefits

Why Businesses Choose This Feature

One API, Every Carrier

Stop maintaining separate integrations for USPS, UPS, FedEx, DHL, and regional carriers. ShipWave normalizes every carrier into a single, consistent API. One request returns rates from all available carriers. One request purchases a label regardless of which carrier you choose.

Real-Time Rate Shopping

Query live rates from every carrier in a single API call. The rates endpoint returns pricing, transit times, and service levels sorted by cost or speed. Display accurate shipping options at checkout, in your warehouse management system, or anywhere else your customers need to choose a shipping method.

Webhooks for Every Event

Register webhook URLs and receive POST notifications when shipments are created, labels are purchased, packages are in transit, delivered, or encounter exceptions. Build reactive workflows that update your systems automatically instead of polling for status changes.

Batch Operations at Scale

Process hundreds of labels in a single batch request. The batch endpoint accepts an array of shipments, purchases labels in parallel, and returns results as they complete. Ideal for end-of-day fulfillment runs, subscription box shipments, or any high-volume scenario.

Discounted Carrier Rates

Every label purchased through the API uses ShipWave's pre-negotiated commercial rates. You get the same discounts as high-volume shippers from your first API call, with no contracts, minimums, or separate carrier account setup required.

Complete Tracking Data

Retrieve normalized tracking events across all carriers through a single endpoint. Every event includes a timestamp, status code, location, and human-readable description. No more parsing carrier-specific tracking formats or maintaining separate tracking integrations.

How the Shipping API Works

1

Authenticate

Generate an API key from your ShipWave dashboard. Include it as a Bearer token in the Authorization header of every request. Keys can be scoped to specific permissions and rotated at any time.

2

Get Rates & Purchase Labels

POST shipment details (origin, destination, weight, dimensions) to the rates endpoint. Choose a rate from the response and POST it to the labels endpoint. You receive a label URL, tracking number, and carrier details in the response.

3

Track & Receive Webhooks

GET tracking status by tracking number or shipment ID at any time. Register webhook URLs to receive real-time POST notifications for every tracking event, from label created through final delivery.

A Closer Look at the Shipping API

Core Endpoints: Rates, Labels, and Tracking

The ShipWave API is organized around three core resources. The Rates endpoint accepts shipment details — origin address, destination address, package weight, and dimensions — and returns an array of available carrier services with pricing, estimated transit days, and delivery dates. You can filter by carrier, service level, or maximum transit time. The Labels endpoint takes a selected rate ID and purchases the label. The response includes the label image URL (PDF, PNG, or ZPL format), tracking number, carrier name, and cost. Labels can be voided within 24 hours if needed. The Tracking endpoint returns the full event history for any shipment, normalized into a consistent format regardless of carrier. Events include status codes like "in_transit", "out_for_delivery", "delivered", and "exception", along with timestamps and location data. For custom checkout flows, the rates endpoint is the key integration point. A headless commerce storefront can call the API when a customer enters their shipping address, display the returned options with prices and delivery estimates, and let the customer choose. When the order is placed, a second call to the labels endpoint purchases the label and returns the tracking number to store against the order.

Webhooks and Event-Driven Architecture

Polling for tracking updates is inefficient and introduces latency. The ShipWave webhook system pushes events to your server the moment they occur. You register one or more webhook URLs in the dashboard or via the API, specifying which event types you want to receive. Supported events include shipment.created, label.purchased, tracking.in_transit, tracking.out_for_delivery, tracking.delivered, tracking.exception, and label.voided. Each webhook payload includes the full shipment object with current status, tracking events, and metadata. Webhooks are signed with HMAC-SHA256 so your server can verify authenticity. Failed deliveries are retried with exponential backoff for up to 72 hours. This event-driven approach is essential for ERP integrations where shipping status needs to flow back into order management, accounting, or customer notification systems without manual intervention. A warehouse management system can listen for label.purchased events to trigger pick-pack workflows. A customer service platform can subscribe to tracking.exception events to proactively reach out to customers before they file a complaint.

Authentication, Rate Limits, and Environments

Authentication uses API keys passed as Bearer tokens in the Authorization header. Each key can be scoped with granular permissions: read-only keys for tracking lookups, write keys for label purchases, and admin keys for managing webhooks and account settings. Keys are rotatable without downtime — generate a new key, update your application, then revoke the old one. Rate limits are tiered by plan. The free tier allows 100 requests per minute, which is sufficient for small stores processing orders manually. Paid plans scale to 1,000 or 10,000 requests per minute depending on volume needs. Rate limit headers (X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset) are included in every response so your application can throttle gracefully. The API provides separate test and production environments. The test environment returns realistic mock data — rates, labels, and tracking events — without charging your account or contacting carriers. This lets you build and validate your integration end-to-end before going live. Switching from test to production requires only changing your API key.

Batch Operations and Advanced Use Cases

The batch labels endpoint accepts up to 500 shipments in a single request and processes them in parallel. Each shipment in the batch can specify different carriers, services, and package details. The response streams results as they complete, so your application can begin processing labels before the entire batch finishes. For high-volume scenarios like subscription box fulfillment, a typical integration pattern is to accumulate orders throughout the day, then submit them as a single batch in the evening for overnight processing. Address validation is available as a separate endpoint that checks addresses against USPS and carrier databases before you attempt to purchase a label, reducing failed deliveries and address correction surcharges. Custom warehouse management systems often combine the rates, batch labels, and webhook endpoints into a complete fulfillment pipeline: orders arrive via the WMS, the system calls the rates endpoint to select the cheapest option matching the customer's delivery promise, purchases labels in batch, prints them via a local print agent, and listens for webhook events to update order status. Third-party logistics providers use the same API to offer multi-carrier shipping to their clients, with each client's shipments billed separately through the account management endpoints.

ShipWave API vs. Building Carrier Integrations

See how using ShipWave's unified API compares to building and maintaining direct carrier integrations yourself.

FeatureShipWaveDIY Carrier Integrations
Number of integrations to build1 API for all carriersSeparate integration per carrier
Time to first labelHours with API keyWeeks to months per carrier
Rate negotiation requiredNo — discounts includedYes — per carrier contracts
Carrier account setupNone requiredSeparate account per carrier
Tracking formatNormalized across all carriersDifferent format per carrier
Webhook supportBuilt-in with HMAC signingMust build per carrier
Regional carrier accessIncluded (OnTrac, Veho, etc.)Requires additional integrations
Ongoing maintenanceShipWave handles updatesYou maintain every integration
Batch label processingUp to 500 per requestMust build parallelization
Test environmentIncluded with mock dataVaries by carrier

API Capabilities

Everything available through the ShipWave dashboard is also available through the API.

  • Multi-carrier rate shopping with a single POST request
  • Label purchase in PDF, PNG, ZPL, and EPL formats
  • Normalized tracking events across all carriers
  • Webhook subscriptions with HMAC-SHA256 verification
  • Batch label creation for up to 500 shipments per request
  • Address validation against USPS and carrier databases
  • Label voiding within 24 hours of purchase
  • Test environment with realistic mock responses
  • Scoped API keys with granular permissions
  • Rate limit headers for graceful throttling
  • International shipping with customs declaration support
  • Return label generation via API

Who Uses the Shipping API

Custom Ecommerce Platforms

Teams building their own storefront or checkout experience use the rates endpoint to display live shipping options and the labels endpoint to fulfill orders programmatically. No need to build carrier integrations from scratch.

Headless Commerce

Headless storefronts powered by frameworks like Next.js, Remix, or custom frontends call the API from their backend to fetch shipping rates at checkout and purchase labels when orders are confirmed. The API fits into any stack.

ERP & Order Management Systems

ERPs like NetSuite, SAP, or custom order management systems integrate the API to add shipping directly into existing workflows. Purchase labels from within your ERP, push tracking numbers back to orders, and keep fulfillment data in one system.

Third-Party Logistics (3PL) Providers

Logistics companies use the API to offer multi-carrier shipping to their clients. Each client gets separate rate access and billing while the 3PL manages fulfillment through a single integration.

Custom Warehouse Management Systems

Warehouses with proprietary WMS software integrate the API to automate carrier selection, batch label printing, and tracking updates. The webhook system feeds delivery status directly back into the WMS without polling.

Subscription Box & Recurring Shipments

Subscription services use the batch endpoint to process hundreds or thousands of shipments on a recurring schedule. Submit an entire month of shipments in one API call and let ShipWave handle carrier selection and label generation.

Frequently Asked Questions

What format does the shipping API use?

The ShipWave API is RESTful and uses JSON over HTTPS. All requests require a Bearer token in the Authorization header. Responses include standard HTTP status codes and descriptive error messages. The API follows REST conventions with resources like /rates, /labels, /tracking, and /webhooks.

Do I need carrier accounts to use the API?

No. ShipWave provides access to USPS, UPS, FedEx, DHL, and regional carriers through a single API key. You do not need to sign up with individual carriers or negotiate rates. If you do have existing carrier accounts with negotiated rates, you can connect them to use your own pricing.

What are the rate limits?

The free tier allows 100 requests per minute. Paid plans support 1,000 to 10,000 requests per minute depending on your plan. Every response includes X-RateLimit-Limit, X-RateLimit-Remaining, and X-RateLimit-Reset headers so your application can manage throughput. If you exceed the limit, the API returns a 429 status code with a Retry-After header.

Is there a test environment?

Yes. The API provides a full test environment that returns realistic rates, generates test labels, and simulates tracking events without contacting carriers or charging your account. Switching from test to production requires only swapping your API key. This allows you to build and validate your entire integration before going live.

How do webhooks work?

Register a webhook URL via the API or dashboard, specifying which events you want to receive (e.g., tracking.delivered, label.purchased). When an event occurs, ShipWave sends a POST request to your URL with the full shipment payload. Webhooks are signed with HMAC-SHA256 for security and retried with exponential backoff for up to 72 hours if your server is unreachable.

Can I use the API alongside the ShipWave dashboard?

Yes. The API and dashboard share the same data. Labels purchased via the API appear in your dashboard, and orders created in the dashboard can be managed via the API. Many teams use the dashboard for manual shipments and the API for automated or bulk workflows.

What programming languages are supported?

The API works with any language that can make HTTP requests. Since it is a standard REST API with JSON payloads, you can integrate it with JavaScript, Python, Ruby, PHP, Go, Java, C#, or any other language. We provide code examples and SDKs for the most popular languages to get you started quickly.

Start Building with the Shipping API

Get your API key and ship your first label in minutes. No carrier accounts, no contracts, no minimum volume.