# ShipHawk > ShipHawk is a shipping and warehouse automation platform for high-volume eCommerce, > wholesale and manufacturing shippers. It combines a multi-carrier transportation > management system (TMS), a warehouse management system (WMS), packing and rate > optimization, and a shipping business-rules engine, and plugs into NetSuite, Acumatica, > Infor, Microsoft Dynamics 365, Sage and SAP. Its public REST API (v4) covers rating, > address validation, orders, proposed shipments, shipments, documents, SKUs, warehouses, > tracking and webhooks. Generated by API Evangelist (apievangelist.com) on 2026-08-27 from ShipHawk's own published documentation. ShipHawk does not publish an llms.txt of its own — https://shiphawk.com/llms.txt returned 404 and https://docs.shiphawk.com/llms.txt returns the full documentation HTML page (a catch-all route, not a document), both probed 2026-08-27. ## What an agent needs to know first - Base URL (production): https://shiphawk.com/api/v4 - Base URL (sandbox): https://sandbox.shiphawk.com/api/v4 - Auth: one API key per environment, sent as the `X-Api-Key` header (a query parameter `api_key` is also accepted and is used in ShipHawk's own examples — prefer the header). - No OAuth, no scopes. A ShipHawk key carries full account authority. - No idempotency mechanism. POST is used for both create and update; a retried booking is a duplicate shipment. - No published rate limits and no rate-limit response headers. HTTP 429 is not in the documented status-code table. - Errors are `{"error": ""}` with an HTTP status code. Not RFC 9457. - There is NO OpenAPI, GraphQL, AsyncAPI, gRPC or WSDL contract. The single Slate reference page at https://docs.shiphawk.com/ is the whole machine-facing surface. - There is NO MCP server and NO A2A agent card. ## Documentation - [API reference](https://docs.shiphawk.com/): the complete ShipHawk v4 REST reference, one page. - [Authentication](https://docs.shiphawk.com/#authentication): API keys, header and query forms. - [API principles](https://docs.shiphawk.com/#api-principles): REST style, JSON, no PUT/PATCH. - [Sandbox and production environments](https://docs.shiphawk.com/#sandbox-and-production-environments): what the sandbox does and does not simulate. - [Pagination params](https://docs.shiphawk.com/#pagination-params): page, per_page, sort, direction. - [Status codes](https://docs.shiphawk.com/#status-codes): 400, 401, 402, 403, 404, 422, 423, 500. - [Webhooks](https://docs.shiphawk.com/#webhooks): event catalog and subscription management. - [Developer landing page](https://shiphawk.com/solutions/shipping-api/) - [Help center](https://shiphawk.atlassian.net/wiki/spaces/HELP) - [Status page](https://shiphawk.statuspage.io/) ## Core operations Rating - POST /api/v4/rates — multi-carrier rate request. Results expire after 2 hours. Addresses - POST /api/v4/addresses/validate — validate an address - POST /api/v4/addresses/check — check an address - POST /api/v4/addresses, GET /api/v4/addresses/:id, GET /api/v4/addresses/search Orders - POST /api/v4/orders — create an order - POST /api/v4/orders/:id — update an order - GET /api/v4/orders, GET /api/v4/orders/:id - POST /api/v4/orders/:order_number_or_id/cancel — cancel an order - POST /api/v4/orders/hold, POST /api/v4/orders/restore — hold and release - POST /api/v4/orders/:id/split_async, POST /api/v4/orders/combine — split and combine (async) - GET /api/v4/orders/:id/order_line_items, /shipments, /proposed_shipments Proposed shipments (plan before you book) - POST /api/v4/orders/:id/proposed_shipments/generate — generate a plan - POST /api/v4/orders/:id/proposed_shipments/book — book it (spends money, tenders to a carrier) - POST /api/v4/orders/:id/proposed_shipments/book_async — async booking, poll a job tracker - DELETE /api/v4/orders/:id/proposed_shipments/:proposed_shipment_id Shipments - POST /api/v4/shipments — create and book a shipment - GET /api/v4/shipments, GET /api/v4/shipments/:id - DELETE /api/v4/shipments/:id — cancel a shipment - GET /api/v4/shipments/:id/tracking — tracking events - GET /api/v4/shipments/:id/labels, /bol, /commercial_invoice, /address_labels, /packing_slip - GET/POST/DELETE /api/v4/shipments/:id/documents, /notes Catalog and facilities - POST /api/v4/skus, GET /api/v4/skus/search, GET /api/v4/skus/counts, DELETE /api/v4/skus - POST /api/v4/bulk_sku_imports, GET /api/v4/bulk_sku_imports/:id - GET /api/v4/warehouses, GET /api/v4/workstations - GET/POST/DELETE /api/v4/materials/containers — packaging material - GET /api/v4/unpacked_item_types/search Async and events - GET /api/v4/job_trackers/:id — poll any asynchronous operation - GET /api/v4/webhooks/events — list available event types - POST/GET/DELETE /api/v4/webhooks — manage subscriptions ## Webhook events shipment.status_update, shipment.address_update, shipment.notes_update, shipment.timing_update, shipment.tracking_update, shipment.documents_update, shipment.create_from_order, shipment.create, proposed_shipment.create, order.document_create Callbacks are optionally protected with HTTP Basic auth. There is no HMAC signature, so a receiver cannot cryptographically verify a payload came from ShipHawk. No retry, ordering or delivery guarantees are published — reconcile against GET /api/v4/shipments/:id. ## Safety notes for autonomous use - Booking a shipment or a proposed shipment creates a real carrier obligation and a real cost. - Reversal paths exist (DELETE /api/v4/shipments/:id, POST .../cancel, POST /api/v4/orders/restore) but ShipHawk publishes NO time window or state boundary for any of them. Do not assume a cancellation is still possible. - DELETE /api/v4/skus/all deletes the entire product catalogue with no published restore path. - POST /api/v4/shipments/:id/documents/email sends mail to real recipients and cannot be recalled. - The shared sandbox does not dispatch to carriers only while no production carrier credentials are attached to the account. Confirm that before treating sandbox actions as inert. ## First-party client libraries - Ruby: https://rubygems.org/gems/shiphawk (0.8.1, released 2015-11-03) — https://github.com/ShipHawk/shiphawk-ruby - Python: https://github.com/ShipHawk/shiphawk-python (source only, never on PyPI, 2015) - Node: https://github.com/ShipHawk/shiphawk-node (source only, never on npm, 2015) - Elixir: https://github.com/ShipHawk/shiphawk-elixir (source only, 2015) - Magento 2: https://github.com/ShipHawk/shiphawk-magento-2 (actively maintained) - WooCommerce: https://github.com/ShipHawk/shiphawk-woocommerce-plugin Every API client library predates the v4 documentation by roughly a decade. Call the REST API directly rather than depending on them. ## Commercial - No public pricing. https://shiphawk.com/pricing redirects to the home page. - No self-service signup. Access is arranged through sales. - Sign in: https://login.myshiphawk.com/ - Terms: https://shiphawk.com/terms-and-conditions/ - Privacy: https://shiphawk.com/privacy/ - Support: support@shiphawk.com · Sales: contact@shiphawk.com · +1 805-335-2432 ## API Evangelist artifacts in this repository - apis.yml — the APIs.json index for ShipHawk - authentication/shiphawk-authentication.yml - conventions/shiphawk-conventions.yml — including reversibility - errors/shiphawk-problem-types.yml - lifecycle/shiphawk-lifecycle.yml - data-model/shiphawk-data-model.yml - asyncapi/shiphawk-webhooks.yml - sandbox/shiphawk-sandbox.yml - conformance/shiphawk-conformance.yml - packages/shiphawk-packages.yml - plans/shiphawk-plans-pricing.yml - rate-limits/shiphawk-rate-limits.yml - well-known/shiphawk-well-known.yml - mcp/shiphawk-mcp.yml — records that no MCP server exists - security/shiphawk-domain-security.yml