Skip to main content
The UpdatePackage endpoint allows you to modify individual fields on an existing package record. Only the fields you include in the request body are changed — omitted fields are left untouched. This makes the endpoint safe for partial updates without needing to re-submit the full package payload.

Endpoint

POST /api/UpdatePackage.php
Authentication: JWT Bearer token with package:edit permission required.
Authorization: Bearer <your_token>

Request Body

package_id
string
required
The UUID of the package you want to update. You can retrieve this from the List Packages endpoint.
user_code
string
Reassign the package to a different customer by providing their user code.
first_name
string
Update the first name associated with this package.
last_name
string
Update the last name associated with this package.
shipper
string
Update the shipper or sender name (e.g., "Amazon", "eBay Seller").
description
string
Update the description of the package contents (e.g., "Clothing - T-Shirts").
weight
number
Update the package weight. Value must be provided in pounds (LBS).
length
number
Update the package length dimension, in inches.
width
number
Update the package width dimension, in inches.
height
number
Update the package height dimension, in inches.
package_type
string
Update the package type classification (e.g., "box", "envelope", "pallet").
tracking_number
string
Update or correct the carrier tracking number assigned to this package.

Example Requests

{
  "package_id": "pkg-uuid-here",
  "weight": 4.2,
  "description": "Clothing - T-Shirts"
}

Responses

Success — Fields Updated

Returned when one or more fields were changed successfully.
{
  "status": "success",
  "message": "Update successful.",
  "data": {
    "fields_updated": 2,
    "package_id": "pkg-uuid-here"
  }
}
status
string
"success" when the update was applied.
message
string
Confirmation message.
data
object

Success — No Changes Detected

Returned when the submitted values are identical to what’s already stored. No write occurs.
{
  "status": "success",
  "message": "No changes detected."
}
A "No changes detected." response is still an HTTP 200. This is not an error — it simply means the package already has the submitted values and no write was necessary.

Error Responses

HTTP StatusCause
400package_id is missing from the request body
403The authenticated courier does not own this package
404No package found matching the provided package_id

Post-Update Sync Behaviour

After any successful update, the package is automatically marked for re-synchronisation. If your integration monitors sync status, account for this behaviour when processing update events.

Role-Based Access

Courier role users can only update packages that belong to their own courier account. Attempting to update a package assigned to a different courier will return a 403 Forbidden error.
To update dimensions (length, width, height) and weight together in a single call, include all four fields in one request body. Each will be counted individually in fields_updated.