Developer integration guide

Technical instructions for website developers. Return to the customer guide.

Developer integration reference

For the developer connecting your website: Download API specification

1. Courier provider IDs

Provider ID Courier
9 Internet Express
39 Citi Sprint

This mapping is fixed. Use providerId in the SDK, query string or submission body, or the X-Provider-Id header. Conflicting selectors and unknown IDs are rejected. Public location requests default to Internet Express when omitted.

GET /v1/locations?providerId=9
GET /v1/locations?providerId=9&q=Cape%20Town

Public locations work from customer websites without authentication. Rate limits still apply. Responses include providerId, providerName, locations, pagination and last successful update.

2. Try the embedded selector and map

This is the Internet Express SDK. Shared map access is included. Choose whether to show the map.

Customise the branding placeholders and colours, then select Update preview.

Loading environment…

Selection returned to your checkout
Choose a location to inspect the callback payload.

3. Embed in your website

Copy this code, using your deployed middleware HTTPS address. There is no token exchange. The shared map key is included; the operator authorizes customer hostnames for tiles.


          

showMap:false gives a list-only selector. For a dialog set mode:'modal' and call open(). Use selectedId or restore(id) to restore a choice; call destroy() on unmount.

onSelect and the bobbox:select event return provider ID/name and a validated location. Send the provider ID and stable location.id to your order backend. Selection does not reserve a compartment or create a shipment.

4. Submit shipments through your backend

After a locker selection, your backend calls POST /v1/rates with providerId 9 (Internet Express) or 39 (Citi Sprint), the location ID, trusted collection address and parcel. Display the returned services and prices for customer selection, then submit quoteId and the chosen serviceLevelCode to POST /v1/shipments with trusted order/contact details and an Idempotency-Key.

Rate and shipment requests require the merchant's authentication key. Keep it on your backend; public browsing is unauthenticated. Live submission uses that merchant's own configured Shiplogic credentials and account. Locker mappings are discovered automatically. Production requires a registered merchant; invalid or revoked keys return 401.

GET /v1/integrations/{id} retrieves a result using X-Provider-Id and the merchant key. Quotes and results belong to the authenticated merchant. Duplicate submissions replay saved results; changed input with the same key returns 409. Pending/unknown results require reconciliation.

5. API endpoints

Generated from API specification. Listing supports q, paired latitude/longitude, limit up to 100, offset and providerId. Download the API specification for full schemas/examples/errors.