| Environment | Base URL |
|---|
| Production | https://api.saveonexpress.ca/integrations/public-api/v1 |
| Development | https://api.dev.saveonexpress.ca/integrations/public-api/v1 |
| Header | Required | Description |
|---|
X-API-Key | Yes | API key format: inex_api_{32 lowercase hex characters} |
Content-Type | Yes (POST) | application/json for rate and ship |
The API key must:
- Be active and not expired (if
expiresAt is set)
- Have
integrationType = public-api
- Include the scope required for each endpoint (see below)
If the key record has an empty scopes array, scope checks are skipped (all scopes allowed).
Scopes
| Endpoint | Required scope |
|---|
POST /rate | shipments:rate |
POST /ship/{rateResponseId} | shipments:create |
GET /labels/{orderId} | shipments:labels or shipments:create |
GET /labels/{orderId}/{labelType} | shipments:labels or shipments:create |
GET /track/{orderId} | shipments:track |
DELETE /shipments/{orderId} | shipments:cancel |