Download OpenAPI specification:
The Logixs Fleet API lets corporate logistics partners book shipments, quote rates, track deliveries, and reconcile invoices programmatically.
All requests require an X-API-Key header. Keys are provisioned from the
Logixs B2B dashboard and are scoped to either sandbox or live via
the key prefix:
| Prefix | Environment |
|---|---|
pwm_test_sk_* |
Sandbox (no real dispatch, no billing) |
pwm_live_sk_* |
Live (real parcels, charged at pickup/acceptance) |
You can also pass the key via Authorization: Bearer <key>.
Every write endpoint accepts a batch of up to 200 items per call. There is
no single-item write endpoint — to create one shipment you send an array of
one. Bulk responses use partial success: each item gets its own status,
and HTTP 200 is returned even if some items fail. Inspect results[i].status
to detect per-item failures.
Write endpoints accept an Idempotency-Key header (max 255 chars). Replays
within 24 hours with the same key and body return the stored response. Same
key with a different body returns 409 Conflict.
Request-rate limits are applied per API key:
When exceeded the response is 429 Too Many Requests with a Retry-After
header.
Shipments created via this API enter the created state and are not
charged at creation. Billing applies when a parcel is physically accepted
(scanned by a courier on pickup, or dropped at a postal counter).
Sandbox and live are fully isolated — objects created in one environment are invisible in the other. Sandbox is safe for development and automated tests.
Verifies API key validity and returns the resolved environment. Use this as the first call when onboarding a new API key.
| success required | boolean Value: true |
required | object |
{- "success": true,
- "data": {
- "status": "ok",
- "environment": "sandbox",
- "account": "string",
- "timestamp": "string"
}
}Returns the authenticated B2B account and its credit profile.
| success required | boolean Value: true |
required | object |
{- "success": true,
- "data": {
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "companyName": "string",
- "currency": "str",
- "creditLimit": "string",
- "currentBalance": "string",
- "billingCycle": "string",
- "contractStart": "string",
- "contractEnd": "string",
- "status": "string",
- "environment": "sandbox"
}
}Returns currently-active rate overrides negotiated for your B2B account. Only overrides whose validFrom/validUntil window includes now() and are marked active are returned.
| serviceType | string Enum: "postal" "courier" "ems" |
| success required | boolean Value: true |
required | Array of objects |
{- "success": true,
- "data": [
- {
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "serviceType": "postal",
- "discountPercent": "string",
- "flatRateCents": -9007199254740991,
- "currency": "str",
- "validFrom": "string",
- "validUntil": "string",
- "isActive": true
}
]
}Calculates rates for up to 200 shipment geometries in one request. B2B overrides are automatically applied. Quotes are advisory only — they are not stored and do not guarantee a price. The authoritative price is calculated at parcel acceptance (scan / pickup) time.
required | Array of objects [ 1 .. 200 ] items |
| success required | boolean Value: true |
required | object |
required | Array of objects or objects |
{- "quotes": [
- {
- "origin": {
- "postalCode": "string",
- "countryCode": "st",
- "city": "string",
- "latitude": -90,
- "longitude": -180
}, - "destination": {
- "postalCode": "string",
- "countryCode": "st",
- "city": "string",
- "latitude": -90,
- "longitude": -180
}, - "parcel": {
- "weightGrams": 2000000,
- "lengthMm": 5000,
- "widthMm": 5000,
- "heightMm": 5000,
- "declaredValueCents": 9007199254740991,
- "currency": "SCR",
- "contentType": "merchandise",
- "contentDescription": "string"
}, - "serviceType": "postal",
- "options": { }
}
]
}{- "success": true,
- "summary": {
- "total": -9007199254740991,
- "successful": -9007199254740991,
- "failed": -9007199254740991
}, - "results": [
- {
- "index": -9007199254740991,
- "status": "success",
- "data": {
- "serviceType": "postal",
- "chargeableWeightGrams": 0,
- "volumetricWeightGrams": 0,
- "baseCostCents": -9007199254740991,
- "zoneMultiplier": 0,
- "zoneAdjustedCostCents": -9007199254740991,
- "modifiers": [
- {
- "code": "string",
- "name": "string",
- "feeCents": -9007199254740991
}
], - "modifierTotalCents": -9007199254740991,
- "ruleAdjustmentCents": -9007199254740991,
- "totalCents": -9007199254740991,
- "b2bOverride": {
- "type": "flat_rate",
- "value": 0,
- "adjustmentCents": -9007199254740991
}, - "finalTotalCents": -9007199254740991,
- "currency": "string",
- "warnings": [
- "string"
], - "validUntil": "string"
}
}
]
}Creates up to 200 shipments in one request. Each shipment enters the created state with no billing impact — the account is only charged when the parcel is physically accepted (scanned at pickup or dropped at a counter).
Idempotency: Pass an Idempotency-Key header to make retries safe. Replays within 24h with the same key + body return the same response; same key with a different body returns 409.
Partial success: Each item in the batch is processed independently. HTTP 200 is returned even if some items fail — inspect results[i].status.
Batch of shipments to create (1–200)
required | Array of objects [ 1 .. 200 ] items |
| success required | boolean Value: true |
required | object |
required | Array of objects or objects |
{- "shipments": [
- {
- "sender": {
- "name": "string",
- "phone": "string",
- "email": "user@example.com",
- "address": {
- "street": "string",
- "city": "string",
- "region": "string",
- "postalCode": "string",
- "countryCode": "st",
- "latitude": -90,
- "longitude": -180
}
}, - "recipient": {
- "name": "string",
- "phone": "string",
- "email": "user@example.com",
- "address": {
- "street": "string",
- "city": "string",
- "region": "string",
- "postalCode": "string",
- "countryCode": "st",
- "latitude": -90,
- "longitude": -180
}
}, - "parcel": {
- "weightGrams": 2000000,
- "lengthMm": 5000,
- "widthMm": 5000,
- "heightMm": 5000,
- "declaredValueCents": 9007199254740991,
- "currency": "SCR",
- "contentType": "merchandise",
- "contentDescription": "string"
}, - "serviceType": "postal",
- "mailClass": "A",
- "options": { },
- "externalReference": "string",
}
]
}{- "success": true,
- "summary": {
- "total": -9007199254740991,
- "successful": -9007199254740991,
- "failed": -9007199254740991
}, - "results": [
- {
- "index": -9007199254740991,
- "status": "success",
- "data": {
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "s10Number": "string",
- "trackingNumber": "string",
- "externalReference": "string",
- "status": "string",
- "environment": "sandbox",
- "serviceType": "postal",
- "sender": {
- "name": "string",
- "phone": "string",
- "address": {
- "property1": null,
- "property2": null
}
}, - "recipient": {
- "name": "string",
- "phone": "string",
- "address": {
- "property1": null,
- "property2": null
}
}, - "parcel": {
- "weightGrams": 0,
- "chargeableWeightGrams": 0,
- "contentType": "string",
- "contentDescription": "string"
}, - "rate": {
- "totalCents": -9007199254740991,
- "currency": "string",
- "b2bOverrideApplied": true
}, - "labelUrl": "string",
- "createdAt": "string",
- "acceptedAt": "string"
}
}
]
}Returns parcels owned by this B2B account in the current environment. Supports filtering by status, serviceType, and creation date range.
| status | string |
| serviceType | string Enum: "postal" "courier" "ems" |
| from | string <date-time> ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[... ISO datetime, created after |
| to | string <date-time> ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[... ISO datetime, created before |
| page | integer ( 0 .. 9007199254740991 ] Default: 1 |
| limit | integer ( 0 .. 200 ] Default: 20 |
| success required | boolean Value: true |
required | Array of objects |
required | object |
{- "success": true,
- "data": [
- {
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "s10Number": "string",
- "trackingNumber": "string",
- "externalReference": "string",
- "status": "string",
- "environment": "sandbox",
- "serviceType": "postal",
- "sender": {
- "name": "string",
- "phone": "string",
- "address": {
- "property1": null,
- "property2": null
}
}, - "recipient": {
- "name": "string",
- "phone": "string",
- "address": {
- "property1": null,
- "property2": null
}
}, - "parcel": {
- "weightGrams": 0,
- "chargeableWeightGrams": 0,
- "contentType": "string",
- "contentDescription": "string"
}, - "rate": {
- "totalCents": -9007199254740991,
- "currency": "string",
- "b2bOverrideApplied": true
}, - "labelUrl": "string",
- "createdAt": "string",
- "acceptedAt": "string"
}
], - "meta": {
- "page": -9007199254740991,
- "limit": -9007199254740991,
- "total": -9007199254740991,
- "totalPages": -9007199254740991
}
}Returns details for a single shipment owned by this account.
| id required | string |
| success required | boolean Value: true |
required | object |
{- "success": true,
- "data": {
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "s10Number": "string",
- "trackingNumber": "string",
- "externalReference": "string",
- "status": "string",
- "environment": "sandbox",
- "serviceType": "postal",
- "sender": {
- "name": "string",
- "phone": "string",
- "address": {
- "property1": null,
- "property2": null
}
}, - "recipient": {
- "name": "string",
- "phone": "string",
- "address": {
- "property1": null,
- "property2": null
}
}, - "parcel": {
- "weightGrams": 0,
- "chargeableWeightGrams": 0,
- "contentType": "string",
- "contentDescription": "string"
}, - "rate": {
- "totalCents": -9007199254740991,
- "currency": "string",
- "b2bOverrideApplied": true
}, - "labelUrl": "string",
- "createdAt": "string",
- "acceptedAt": "string"
}
}Cancels up to 200 shipments. Only shipments in created state can be cancelled via the API — once a parcel has been accepted by a courier or counter, cancellation requires support.
required | Array of objects [ 1 .. 200 ] items |
| success required | boolean Value: true |
required | object |
required | Array of objects or objects |
{- "items": [
- {
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "reason": "customer_request",
- "note": "string"
}
]
}{- "success": true,
- "summary": {
- "total": -9007199254740991,
- "successful": -9007199254740991,
- "failed": -9007199254740991
}, - "results": [
- {
- "index": -9007199254740991,
- "status": "success",
- "data": {
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "status": "string",
- "cancelledAt": "string"
}
}
]
}Returns the status and event history for a single parcel by S10 or tracking number. Only parcels owned by your account are visible.
| s10 required | string |
| success required | boolean Value: true |
required | object |
{- "success": true,
- "data": {
- "s10Number": "string",
- "status": "string",
- "environment": "sandbox",
- "lastUpdated": "string",
- "events": [
- {
- "timestamp": "string",
- "type": "string",
- "status": "string",
- "location": "string",
- "facilityId": "d7244f5b-52c1-4d27-b4f5-43b1113fc304",
- "description": "string"
}
]
}
}Look up status and latest event for up to 200 tracking numbers in one request. Per-item results: success with full tracking data, or error for numbers not owned by your account.
| trackingNumbers required | Array of strings [ 1 .. 200 ] items [ items [ 1 .. 50 ] characters ] |
| success required | boolean Value: true |
required | object |
required | Array of objects or objects |
{- "trackingNumbers": [
- "string"
]
}{- "success": true,
- "summary": {
- "total": -9007199254740991,
- "successful": -9007199254740991,
- "failed": -9007199254740991
}, - "results": [
- {
- "index": -9007199254740991,
- "status": "success",
- "data": {
- "s10Number": "string",
- "status": "string",
- "environment": "sandbox",
- "lastUpdated": "string",
- "events": [
- {
- "timestamp": "string",
- "type": "string",
- "status": "string",
- "location": "string",
- "facilityId": "d7244f5b-52c1-4d27-b4f5-43b1113fc304",
- "description": "string"
}
]
}
}
]
}Returns invoices for this B2B account, scoped to the current environment.
| status | string |
| page | integer ( 0 .. 9007199254740991 ] Default: 1 |
| limit | integer ( 0 .. 200 ] Default: 20 |
| success required | boolean Value: true |
required | Array of objects |
required | object |
{- "success": true,
- "data": [
- {
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "invoiceNumber": "string",
- "status": "string",
- "currency": "string",
- "periodStart": "string",
- "periodEnd": "string",
- "totalShipments": -9007199254740991,
- "grossAmount": "string",
- "discountAmount": "string",
- "taxAmount": "string",
- "netAmount": "string",
- "dueDate": "string",
- "sentAt": "string",
- "paidAt": "string",
- "environment": "sandbox",
- "createdAt": "string"
}
], - "meta": {
- "page": -9007199254740991,
- "limit": -9007199254740991,
- "total": -9007199254740991,
- "totalPages": -9007199254740991
}
}Returns a single invoice by id (scoped to this account).
| id required | string |
| success required | boolean Value: true |
required | object |
{- "success": true,
- "data": {
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "invoiceNumber": "string",
- "status": "string",
- "currency": "string",
- "periodStart": "string",
- "periodEnd": "string",
- "totalShipments": -9007199254740991,
- "grossAmount": "string",
- "discountAmount": "string",
- "taxAmount": "string",
- "netAmount": "string",
- "dueDate": "string",
- "sentAt": "string",
- "paidAt": "string",
- "environment": "sandbox",
- "createdAt": "string"
}
}