Skip to main content
The UniUni Platform Client API lets you programmatically create shipments, purchase labels, manage batches, track deliveries, and receive webhook notifications.

Environments

We provide both sandbox and production environments. Test your integration in sandbox first before going live.
EnvironmentBase URL
Sandboxhttps://api-sandbox.ship.uniuni.com/client/
Productionhttps://api.ship.uniuni.com/prod/client/
All requests are HTTPS only.

Authentication

Every request must include your API access token in the Authorization header:
Authorization: Bearer <YOUR_ACCESS_TOKEN>
You can generate up to 5 access tokens from the dashboard: You can also find this page by navigating to New shipment > Import from integration > REST API on the UniUni Platform website.
Treat access tokens with the same level of security as passwords. Deleting an access token immediately revokes its access.

Request & response format

  • All requests and responses use JSON.
  • Use Content-Type: application/json; charset=utf-8 for POST bodies.
  • All object keys are in camelCase.
  • Response HTTP code is always 200 with a valid payload. Invalid payloads return HTTP 422.
Every response follows this structure:
{
  "message": "Shipment created successfully",
  "code": 0,
  "data": { ... }
}
FieldTypeDescription
messagestringAdditional information about the request status
codeintegerStatus code (0 indicates success)
dataobject | nullResponse payload. Returns null if code is not 0

Pagination

Collection endpoints support pagination via query parameters:
ParameterDefaultMaxDescription
page1Page number
pageSize10500Results per page

Sandbox testing

You can test your integration freely using the sandbox base URL. No charges will be incurred. Sandbox data is isolated and can be reset without affecting production. To add test credits in sandbox, use the test credit card number 4242 4242 4242 4242 with any expiry and CVC.

Error handling

422 Unprocessable Content

Returned when required parameters are missing or have the wrong type:
{
  "message": "Invalid payload [...]",
  "errorCode": "PayloadValidationError",
  "statusCode": 422,
  "meta": {
    "issues": [
      {
        "code": "invalid_type",
        "expected": "number",
        "received": "nan",
        "path": ["page"],
        "message": "Expected number, received nan"
      }
    ],
    "name": "ZodError"
  }
}

Authentication errors

{
  "message": "Invalid or revoked access token",
  "code": 1009,
  "data": null
}
{
  "message": "Missing access token",
  "code": 1009,
  "data": null
}

Error codes

CodeReason
0Success
1002Invalid request
1006Database error
1009General error
1014Resource not found (labels/batches)
1031Tracking lookup failed