Skip to content

Overview ​

Every endpoint in the legacy v1 API, in one table. All paths are relative to:

https://app.shipos.co.il/api

Legacy reference

v1 is maintained for existing integrations and gains no new capabilities. New work belongs on v2. Route-by-route equivalents are in Migrating to v2.


Shipments and labels ​

These sit under the shipping prefix and share three pieces of middleware: request logging, response normalisation, and the hasLicense check that reads license_key and domain from the payload. See Authentication.

MethodPathWhat it doesPage
POST/shipping/open_new_orderCreate a shipment from an order. Replays its own response for an hour on retry.Shipments
POST/shipping/get_order_detailsRead one shipment by its shipping_code.Shipments
POST/shipping/get_shipping_statusRead the carrier status of one shipment.Shipments
POST/shipping/change_order_statusCancel or change a shipment's status at the carrier.Shipments
POST/shipping/orderList every shipment belonging to an order.Shipments
POST/shipping/{shipment}/statusStatus by path parameter. Outside the hasLicense group — different auth.Shipments
POST/shipping/labelLabel URL for one shipment.Labels
POST/shipping/order-labelLabel URL per shipment for a whole order.Labels
POST/shipping/bulk-labelOne combined label URL for many shipments.Labels
POST/shipping/pickup_locationsThe caller carrier's pickup network. Takes no parameters of its own.Pickup locations

Express and same-day ​

Also under the shipping prefix and the same hasLicense check, but these are GET with query-string parameters — the only such endpoints in v1.

MethodPathWhat it doesPage
GET/shipping/get_express_delivery_enabledWhether express is available for the license.Express delivery
GET/shipping/same_day_delivery_quotePrice/feasibility quote for a same-day delivery.Express delivery
GET/shipping/create_shipping_promiseCommit to a quoted same-day slot.Express delivery
GET/shipping/get_express_delivery_statusStatus of an express delivery.Express delivery

Licenses ​

Note the split: user-by-license is inside the hasLicense group, while the two /license/* routes are not — they take a license key but are not guarded by the middleware, and they do not use the standard v1 envelope.

MethodPathWhat it doesPage
GET/shipping/user-by-licenseThe account owning a license. Guarded by hasLicense.Licenses
GET/license/check_licenseValidate a license key. Ungated, flat response body.Licenses
GET/license/activate_licenseBind a license to a domain. Ungated, flat response body.Licenses

Recipient app ​

A first-party surface for the consumer-facing delivery app, gated by a shared application secret rather than a license. Merchant integrations do not use it.

MethodPathWhat it doesPage
GET/get_app_userLook up an app user.App users
POST/create_app_userRegister an app user.App users
GET/shipping/phone_numberShipments for the authenticated recipient.App users

Not documented here ​

routes/api.php also carries the wix/* and shopify/* route groups. Those are the private backends for the Wix and Shopify admin UIs — they authenticate with platform session tokens, change shape with the front end, and carry no compatibility promise. They are not part of the v1 integration surface and are deliberately left out of this reference.

Cross-cutting behaviour ​

  • Envelope — {data, message, success, warning} on nearly every route, with success rather than the HTTP status carrying the verdict. Several routes deviate; each deviation is called out on its own page and summarised in Errors.
  • Rate limiting — 500 requests per minute, keyed on the authenticated user when there is one and the client IP otherwise. Exceeding it returns 429.
  • Logging — every request through the shipping prefix is written to api_request_logs, including the normalised response body (truncated at 60,000 bytes). This is the only record of outbound carrier calls, so support requests are answerable from it.