This document catalogs every ShipStation endpoint the ShipStation API v2 integration calls, grouped by the workflow each one serves. Use it to check whether a published ShipStation deprecation notice affects the integration, to allow the correct host through your firewall, and as a reference when troubleshooting data flow.
API Endpoints Intro
The ShipStation API v2 integration calls the ShipStation API v2, a REST API that exchanges JSON. It does not call the ShipStation v1 API.
Base URL:
[API Url]
[API Url] is the API Url setting on the iPaaS.com subscription. When it is left blank, the integration uses the production address below. Every path in this article is relative to it.
https://api.shipstation.com/v2
For example, [API Url]/shipments resolves to the address below.
https://api.shipstation.com/v2/shipments
Every call authenticates with the ShipStation API key in a request header. See Authorization below.
As of ShipStation's published API v2 reference (OpenAPI version 2.0.0, retrieved 2026-10-23), every endpoint listed in this article is marked as available on all ShipStation plans that include API access (Free, Standard and Premium, and Advanced and Enterprise). The integration does not use any plan-restricted endpoint.
Table of Contents
Connection Validation
Order and Shipment Endpoints
Warehouse Endpoints
Carrier and Service Endpoints
Label and Tracking Endpoints
Webhook Endpoints
LTL Freight Endpoints
Pagination
Rate Limits
Authorization
Connection Validation
List Warehouses (GET)
Checks the API key when the connection is saved or tested. Every ShipStation account has at least one warehouse, so a successful answer proves the key works. A rejected key returns error SSV2-AUTH-1002.
[API Url]/warehouses
Order and Shipment Endpoints
In ShipStation API v2, an order is created as a shipment. Each iPaaS.com order becomes one ShipStation shipment, or one per destination address when Enable Multi Address Shipment is on. Destinations are sent one at a time, never in bulk.
Get a Shipment by Id (GET)
Reads a shipment the integration already created, before an update or a cancel, to confirm it still exists and has not been labeled or cancelled. Also used to read the order behind a label or freight shipment during tracking.
[API Url]/shipments/{shipment_id}
Find a Shipment by External Shipment Id (GET)
Looks up a shipment already created for a destination, by its iPaaS.com reference. This prevents a retry from creating a duplicate. It is also used when ShipStation accepts a new shipment but returns no id, and when an order is cancelled.
[API Url]/shipments?external_shipment_id={external_shipment_id}&sort_by=created_at&sort_dir=desc&page_size=25Parameter | Description |
external_shipment_id | The iPaaS.com reference for the destination (order id and address id). |
sort_by, sort_dir | Newest first. When several shipments match, the newest one that is not cancelled is used. |
page_size | 25 results. |
Create a Shipment (POST)
Creates one destination's shipment, without a label. The shipment starts as pending, or on hold when the order's ShipmentStatus mapping is set to on_hold. ShipStation also creates the matching sales order.
[API Url]/shipments
Update a Shipment (PUT)
Updates a destination's shipment when the iPaaS.com order changes. A shipment whose label is already purchased, or that is cancelled, is not updated.
[API Url]/shipments/{shipment_id}
Cancel a Shipment (PUT)
Cancels a shipment when Cancel Shipments is on, when the order is deleted, or when a destination is removed from the order. A shipment that already has a label is never cancelled.
[API Url]/shipments/{shipment_id}/cancel
Warehouse Endpoints
List Warehouses (GET)
Reads the ship-from warehouses. Used to pick the default warehouse for a new shipment and by the warehouse lookup mapping function. Lookup answers are cached for 60 seconds.
[API Url]/warehouses
Carrier and Service Endpoints
List Carriers (GET)
Lists every connected carrier with its services in one call. Each service becomes one iPaaS.com Shipping Method during shipping method initialization, polling and updates. The carrier and service lookup mapping functions read the same list, cached for 60 seconds.
[API Url]/carriers
Label and Tracking Endpoints
List New Labels (GET)
Used by the label poll. Lists labels created since the last poll, oldest first.
[API Url]/labels?created_at_start={last_poll}&sort_by=created_at&sort_dir=asc&page={page}&page_size=500Parameter | Description |
created_at_start | The last label poll time, or the current time minus Days of Label History on the first poll. UTC. |
sort_by, sort_dir | Oldest first, by creation time. |
page, page_size | Page number and 500 records per page. |
List Voided Labels (GET)
Used by the label poll. Lists voided labels, newest first, until it reaches one voided before the last poll. At most 20 pages are read in one poll.
[API Url]/labels?label_status=voided&sort_by=voided_at&sort_dir=desc&page={page}&page_size=100
Get a Label (GET)
Reads one label: tracking number, carrier, service, cost, status and voided flag. Used for every label found by a poll or reported by a webhook.
[API Url]/labels/{label_id}
Get Label Tracking (GET)
Reads a label's delivery status, estimated and actual delivery dates, and tracking link. Skipped for voided labels, labels ShipStation marks as not trackable, and labels with no tracking number.
[API Url]/labels/{label_id}/track
List Freight Shipments (GET)
Used by the freight shipment poll. Lists freight shipments created in the last 30 days, so new shipments and any not yet delivered or cancelled are refreshed. At most 2,000 freight shipments are read in one poll.
[API Url]/freight/shipments?created_at_start={now_minus_30_days}&page={page}&page_size=500
Get a Freight Shipment (GET)
Reads one freight shipment: status, bill of lading (BOL) number, PRO number, confirmation number, provider and bill of lading document.
[API Url]/freight/shipments/{freight_shipment_id}
Refresh Freight Tracking (GET)
Requests current carrier status for a freight shipment that is not delivered or cancelled. This is what fills in the PRO number after pickup.
[API Url]/freight/shipments/{freight_shipment_id}/tracking
Webhook Endpoints
The integration manages one ShipStation webhook, track_event_v2 (a tracking event on a label), when that webhook is turned on or off for the subscription. When a tracking event arrives, the integration reads the label again with Get a Label rather than relying on the webhook's own data.
List Webhooks (GET)
Finds this subscription's existing webhook by its address.
[API Url]/environment/webhooks
Create a Webhook (POST)
Registers the webhook.
[API Url]/environment/webhooks
Update a Webhook (PUT)
Updates the existing webhook.
[API Url]/environment/webhooks/{webhook_id}
Delete a Webhook (DELETE)
Removes the webhook when it is turned off, or removes a duplicate of it.
[API Url]/environment/webhooks/{webhook_id}
LTL Freight Endpoints
These run only when the order's Freight Mode is Quote or Book, and only after every destination's shipment exists.
List Freight Provider Accounts (GET)
Read by the freight provider account lookup mapping function, cached for 60 seconds.
[API Url]/freight/provider_accounts
Get a Freight Quote (POST)
Requests LTL freight quotes for one shipment. The quote is also saved on the ShipStation order, so offers can be compared and booked in ShipStation.
[API Url]/freight/quotes
Book Freight (POST)
Books the selected offer for one shipment. Booking dispatches a carrier and is billed by the freight provider. It runs only when Freight Mode is Book, and never for a shipment that already has a booking on the iPaaS.com order.
[API Url]/freight/shipments
Pagination
ShipStation API v2 lists are paged with page and page_size parameters. The integration does not use cursor paging.
Lists read in full use 500 records per page. ShipStation's reference documents a 500-record cap for freight shipment lists (OpenAPI 2.0.0, retrieved 2026-10-23).
Reading stops on a short or empty page, on the last page, or when a per-poll record limit is reached, so every poll finishes.
The label poll reads at most 10,000 labels in one run. The next poll continues from the newest label it processed.
The warehouse, carrier, webhook and freight provider account lists are read in a single call.
Rate Limits
The integration does not set its own request limit. It follows the limits ShipStation reports on each response:
It reads ShipStation's rate-limit response headers (RateLimit-Limit, RateLimit-Remaining and RateLimit-Reset) so iPaaS.com can pace transfers.
When ShipStation answers 429 Too Many Requests, the transfer is held and retried after the wait ShipStation gives in Retry-After, or RateLimit-Reset when that is absent, or 60 seconds when neither is present. The error is logged as SSV2-RATE-1001.
Server errors and network failures are logged as SSV2-EXTN-1002. Resend the record once ShipStation is reachable. Polls run again on their schedule.
The subscription's Concurrent Batch Executions setting caps how many transfers run at the same time. If rate-limit errors appear in the iPaaS.com Dashboard under Integration Monitoring, reduce that setting or the API throttle values in the subscription settings.
For the request limit that applies to your ShipStation account, see the ShipStation API v2 documentation.
Authorization
ShipStation API v2 has no separate authorization or token endpoint. Every call sends the API key in a request header, as defined in ShipStation's API v2 reference (OpenAPI 2.0.0, retrieved 2026-10-23).
API-Key: <API Key>
The API Key is set on the iPaaS.com subscription. See ShipStation API v2 Installation Instructions for how to create it.
