Skip to content

Developer Resources

ShipHero GraphQL Public API

ShipHero’s public API provides access to platform data and operations for custom integrations. It is built on GraphQL, allowing clients to request exactly the fields they need for each workflow.

Quick Access

Need help with your integration? Visit our Troubleshooting guide for common issues and solutions.

Latest Changes

Published the Error Glossary with API error codes, common causes, and messages by operation to help diagnose failed requests.

Deprecated cycle_count_enabled on Account. Cycle counting is enabled for all accounts, so the field now always returns true. Existing queries keep working, but integrations should stop using it to decide whether cycle counting is available. See the Cycle Counts flow.

Added the warehouse_create mutation to create an active physical warehouse with the default profile in the authenticated account. Supply invoice and shipping-label addresses and an optional warehouse name through identifier (defaults to Primary). The mutation does not copy settings from another warehouse, and rejects an identifier already used by a physical warehouse, including an inactive one. Requires change:accounts and the warehouses.manage.create permission. To add a named profile to an existing warehouse instead, use warehouse_profile_create.

Added shipper_account_id and warehouse_id to the Generate Label webhook request. API Carrier partners can identify the account shipping an order separately from the account that owns it, and use the origin warehouse when available. warehouse_id may be null when the origin warehouse is unavailable.

Added 12 wholesale tables to full and delta Data Exports. Use the WHOLESALE module filter to retrieve wholesale exports. See the Wholesale table list.

Added total_count to the orders query connection, returning the number of distinct orders that match the filters before pagination, not the size of the page. It is only computed when you select it. See the request and response example.

Updated wholesale_order_import_packing_layout for orders containing build kits that were already broken into their components. Those parent kit line items have nothing allocated, so packing_data no longer has to account for them, and referencing one now fails the import instead of failing later at mark-as-packed. Pack the component line items instead; their quantities are still validated. See the Import Packing Layout flow.