API reference
Packages
Saved box sizes, saved customs items and the account's shipping defaults.
Endpoints
- GET /item-presets
- POST /item-presets
- PATCH /item-presets/{id}
- DELETE /item-presets/{id}
- POST /item-presets/{id}/use
- GET /package-boxes
- GET /package-presets
- POST /package-presets
- PATCH /package-presets/{id}
- DELETE /package-presets/{id}
- POST /package-presets/{id}/use
- GET /preferences/shipping
- PUT /preferences/shipping
List item presets
GET /v1/item-presets
Saved products for customs declarations: description, value, HS code and country of origin.
Response in data
items• Required array of objectsEach item · 12
created_at• Required timestampWhen it was created (ISO 8601, UTC).
currency• Required stringThree-letter currency code, e.g.
CAD.description• Required stringid• Required uuidname• Required stringquantity• Required integerHow many.
unit_value• Required numberupdated_at• Required timestampWhen it last changed (ISO 8601, UTC).
usage_count• Required integerhs_codestringHarmonized System code.
origin_countrystringTwo-letter code of the country where the item was made.
skustringYour product code.
curl "https://api.parcelhub.ca/v1/item-presets" \
-H "Authorization: Bearer $TOKEN"{
"ok": true,
"data": {
"items": [
{
"created_at": "2026-10-31T15:04:05Z",
"currency": "CAD",
"description": "string",
"hs_code": "6109.10",
"id": "3f2b8c1e-5d6a-4b7c-9e0f-1a2b3c4d5e6f",
"name": "Alex Martin",
"origin_country": "string",
"quantity": 1,
"sku": "string",
"unit_value": 1.5,
"updated_at": "2026-10-31T15:04:05Z",
"usage_count": 1
}
]
},
"request_id": "01JBX7Q2…"
}Save an item preset
POST /v1/item-presets
Saves a product for reuse in customs declarations.
Request body
name• Required stringcurrencystringThree-letter currency code, e.g.
CAD.descriptionstringhs_codestringHarmonized System code.
origin_countrystringTwo-letter code of the country where the item was made.
quantityintegerHow many.
skustringYour product code.
unit_valuenumberValue of one unit, in
currency(e.g.15.00).
Response in data
created_at• Required timestampWhen it was created (ISO 8601, UTC).
currency• Required stringThree-letter currency code, e.g.
CAD.description• Required stringid• Required uuidname• Required stringquantity• Required integerHow many.
unit_value• Required numberupdated_at• Required timestampWhen it last changed (ISO 8601, UTC).
usage_count• Required integerhs_codestringHarmonized System code.
origin_countrystringTwo-letter code of the country where the item was made.
skustringYour product code.
curl -X POST "https://api.parcelhub.ca/v1/item-presets" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{
"currency": "CAD",
"description": "string",
"hs_code": "6109.10",
"name": "Alex Martin",
"origin_country": "string",
"quantity": 1,
"sku": "string",
"unit_value": 1.5
}'{
"ok": true,
"data": {
"created_at": "2026-10-31T15:04:05Z",
"currency": "CAD",
"description": "string",
"hs_code": "6109.10",
"id": "3f2b8c1e-5d6a-4b7c-9e0f-1a2b3c4d5e6f",
"name": "Alex Martin",
"origin_country": "string",
"quantity": 1,
"sku": "string",
"unit_value": 1.5,
"updated_at": "2026-10-31T15:04:05Z",
"usage_count": 1
},
"request_id": "01JBX7Q2…"
}Update an item preset
PATCH /v1/item-presets/{id}
Changes a saved product.
Path parameters
id• Required string
Request body
name• Required stringcurrencystringThree-letter currency code, e.g.
CAD.descriptionstringhs_codestringHarmonized System code.
origin_countrystringTwo-letter code of the country where the item was made.
quantityintegerHow many.
skustringYour product code.
unit_valuenumberValue of one unit, in
currency(e.g.15.00).
Response in data
created_at• Required timestampWhen it was created (ISO 8601, UTC).
currency• Required stringThree-letter currency code, e.g.
CAD.description• Required stringid• Required uuidname• Required stringquantity• Required integerHow many.
unit_value• Required numberupdated_at• Required timestampWhen it last changed (ISO 8601, UTC).
usage_count• Required integerhs_codestringHarmonized System code.
origin_countrystringTwo-letter code of the country where the item was made.
skustringYour product code.
curl -X PATCH "https://api.parcelhub.ca/v1/item-presets/3f2b8c1e-5d6a-4b7c-9e0f-1a2b3c4d5e6f" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{
"currency": "CAD",
"description": "string",
"hs_code": "6109.10",
"name": "Alex Martin",
"origin_country": "string",
"quantity": 1,
"sku": "string",
"unit_value": 1.5
}'{
"ok": true,
"data": {
"created_at": "2026-10-31T15:04:05Z",
"currency": "CAD",
"description": "string",
"hs_code": "6109.10",
"id": "3f2b8c1e-5d6a-4b7c-9e0f-1a2b3c4d5e6f",
"name": "Alex Martin",
"origin_country": "string",
"quantity": 1,
"sku": "string",
"unit_value": 1.5,
"updated_at": "2026-10-31T15:04:05Z",
"usage_count": 1
},
"request_id": "01JBX7Q2…"
}Delete an item preset
DELETE /v1/item-presets/{id}
Deletes a saved product.
Path parameters
id• Required string
Response in data
deleted• Required boolean
curl -X DELETE "https://api.parcelhub.ca/v1/item-presets/3f2b8c1e-5d6a-4b7c-9e0f-1a2b3c4d5e6f" \
-H "Authorization: Bearer $TOKEN"{
"ok": true,
"data": {
"deleted": true
},
"request_id": "01JBX7Q2…"
}Record item use
POST /v1/item-presets/{id}/use
Records that a saved product was used, so the most used are listed first.
Path parameters
id• Required string
Response in data
created_at• Required timestampWhen it was created (ISO 8601, UTC).
currency• Required stringThree-letter currency code, e.g.
CAD.description• Required stringid• Required uuidname• Required stringquantity• Required integerHow many.
unit_value• Required numberupdated_at• Required timestampWhen it last changed (ISO 8601, UTC).
usage_count• Required integerhs_codestringHarmonized System code.
origin_countrystringTwo-letter code of the country where the item was made.
skustringYour product code.
curl -X POST "https://api.parcelhub.ca/v1/item-presets/3f2b8c1e-5d6a-4b7c-9e0f-1a2b3c4d5e6f/use" \
-H "Authorization: Bearer $TOKEN"{
"ok": true,
"data": {
"created_at": "2026-10-31T15:04:05Z",
"currency": "CAD",
"description": "string",
"hs_code": "6109.10",
"id": "3f2b8c1e-5d6a-4b7c-9e0f-1a2b3c4d5e6f",
"name": "Alex Martin",
"origin_country": "string",
"quantity": 1,
"sku": "string",
"unit_value": 1.5,
"updated_at": "2026-10-31T15:04:05Z",
"usage_count": 1
},
"request_id": "01JBX7Q2…"
}Standard boxes
GET /v1/package-boxes
ParcelHub's catalog of standard box sizes.
Response in data
items• Required array of objectsEach item · 10
code• Required stringdimension_unit• Required stringinorcm.height• Required numberHeight, in
dimension_unit.id• Required uuidlength• Required numberLength, in
dimension_unit.name• Required stringweight_unit• Required stringlborkg.width• Required numberWidth, in
dimension_unit.carrier_scopestringmax_weightnumber
curl "https://api.parcelhub.ca/v1/package-boxes" \
-H "Authorization: Bearer $TOKEN"{
"ok": true,
"data": {
"items": [
{
"carrier_scope": "string",
"code": "string",
"dimension_unit": "cm",
"height": 10,
"id": "3f2b8c1e-5d6a-4b7c-9e0f-1a2b3c4d5e6f",
"length": 30,
"max_weight": 1.5,
"name": "Alex Martin",
"weight_unit": "kg",
"width": 20
}
]
},
"request_id": "01JBX7Q2…"
}List box presets
GET /v1/package-presets
The account's saved box sizes, with an optional default weight.
Response in data
items• Required array of objectsEach item · 11
created_at• Required timestampWhen it was created (ISO 8601, UTC).
dimension_unit• Required stringinorcm.height• Required numberHeight, in
dimension_unit.id• Required uuidlength• Required numberLength, in
dimension_unit.name• Required stringupdated_at• Required timestampWhen it last changed (ISO 8601, UTC).
usage_count• Required integerweight_unit• Required stringlborkg.width• Required numberWidth, in
dimension_unit.default_weightnumberUsual weight, in
weight_unit(optional).
curl "https://api.parcelhub.ca/v1/package-presets" \
-H "Authorization: Bearer $TOKEN"{
"ok": true,
"data": {
"items": [
{
"created_at": "2026-10-31T15:04:05Z",
"default_weight": 1.5,
"dimension_unit": "cm",
"height": 10,
"id": "3f2b8c1e-5d6a-4b7c-9e0f-1a2b3c4d5e6f",
"length": 30,
"name": "Alex Martin",
"updated_at": "2026-10-31T15:04:05Z",
"usage_count": 1,
"weight_unit": "kg",
"width": 20
}
]
},
"request_id": "01JBX7Q2…"
}Save a box preset
POST /v1/package-presets
Saves a box size for reuse.
Request body
dimension_unit• Required stringinorcm.height• Required numberHeight, in
dimension_unit.length• Required numberLength, in
dimension_unit.name• Required stringweight_unit• Required stringlborkg.width• Required numberWidth, in
dimension_unit.default_weightnumberUsual weight, in
weight_unit(optional).
Response in data
created_at• Required timestampWhen it was created (ISO 8601, UTC).
dimension_unit• Required stringinorcm.height• Required numberHeight, in
dimension_unit.id• Required uuidlength• Required numberLength, in
dimension_unit.name• Required stringupdated_at• Required timestampWhen it last changed (ISO 8601, UTC).
usage_count• Required integerweight_unit• Required stringlborkg.width• Required numberWidth, in
dimension_unit.default_weightnumberUsual weight, in
weight_unit(optional).
curl -X POST "https://api.parcelhub.ca/v1/package-presets" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{
"default_weight": 1.5,
"dimension_unit": "cm",
"height": 10,
"length": 30,
"name": "Alex Martin",
"weight_unit": "kg",
"width": 20
}'{
"ok": true,
"data": {
"created_at": "2026-10-31T15:04:05Z",
"default_weight": 1.5,
"dimension_unit": "cm",
"height": 10,
"id": "3f2b8c1e-5d6a-4b7c-9e0f-1a2b3c4d5e6f",
"length": 30,
"name": "Alex Martin",
"updated_at": "2026-10-31T15:04:05Z",
"usage_count": 1,
"weight_unit": "kg",
"width": 20
},
"request_id": "01JBX7Q2…"
}Update a box preset
PATCH /v1/package-presets/{id}
Changes a saved box.
Path parameters
id• Required string
Request body
dimension_unit• Required stringinorcm.height• Required numberHeight, in
dimension_unit.length• Required numberLength, in
dimension_unit.name• Required stringweight_unit• Required stringlborkg.width• Required numberWidth, in
dimension_unit.default_weightnumberUsual weight, in
weight_unit(optional).
Response in data
created_at• Required timestampWhen it was created (ISO 8601, UTC).
dimension_unit• Required stringinorcm.height• Required numberHeight, in
dimension_unit.id• Required uuidlength• Required numberLength, in
dimension_unit.name• Required stringupdated_at• Required timestampWhen it last changed (ISO 8601, UTC).
usage_count• Required integerweight_unit• Required stringlborkg.width• Required numberWidth, in
dimension_unit.default_weightnumberUsual weight, in
weight_unit(optional).
curl -X PATCH "https://api.parcelhub.ca/v1/package-presets/3f2b8c1e-5d6a-4b7c-9e0f-1a2b3c4d5e6f" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{
"default_weight": 1.5,
"dimension_unit": "cm",
"height": 10,
"length": 30,
"name": "Alex Martin",
"weight_unit": "kg",
"width": 20
}'{
"ok": true,
"data": {
"created_at": "2026-10-31T15:04:05Z",
"default_weight": 1.5,
"dimension_unit": "cm",
"height": 10,
"id": "3f2b8c1e-5d6a-4b7c-9e0f-1a2b3c4d5e6f",
"length": 30,
"name": "Alex Martin",
"updated_at": "2026-10-31T15:04:05Z",
"usage_count": 1,
"weight_unit": "kg",
"width": 20
},
"request_id": "01JBX7Q2…"
}Delete a box preset
DELETE /v1/package-presets/{id}
Deletes a saved box.
Path parameters
id• Required string
Response in data
deleted• Required boolean
curl -X DELETE "https://api.parcelhub.ca/v1/package-presets/3f2b8c1e-5d6a-4b7c-9e0f-1a2b3c4d5e6f" \
-H "Authorization: Bearer $TOKEN"{
"ok": true,
"data": {
"deleted": true
},
"request_id": "01JBX7Q2…"
}Record box use
POST /v1/package-presets/{id}/use
Records that a saved box was used, so the most used boxes are listed first.
Path parameters
id• Required string
Response in data
created_at• Required timestampWhen it was created (ISO 8601, UTC).
dimension_unit• Required stringinorcm.height• Required numberHeight, in
dimension_unit.id• Required uuidlength• Required numberLength, in
dimension_unit.name• Required stringupdated_at• Required timestampWhen it last changed (ISO 8601, UTC).
usage_count• Required integerweight_unit• Required stringlborkg.width• Required numberWidth, in
dimension_unit.default_weightnumberUsual weight, in
weight_unit(optional).
curl -X POST "https://api.parcelhub.ca/v1/package-presets/3f2b8c1e-5d6a-4b7c-9e0f-1a2b3c4d5e6f/use" \
-H "Authorization: Bearer $TOKEN"{
"ok": true,
"data": {
"created_at": "2026-10-31T15:04:05Z",
"default_weight": 1.5,
"dimension_unit": "cm",
"height": 10,
"id": "3f2b8c1e-5d6a-4b7c-9e0f-1a2b3c4d5e6f",
"length": 30,
"name": "Alex Martin",
"updated_at": "2026-10-31T15:04:05Z",
"usage_count": 1,
"weight_unit": "kg",
"width": 20
},
"request_id": "01JBX7Q2…"
}Shipping defaults
GET /v1/preferences/shipping
Defaults applied to new shipments: label size, signature option, reference, delivery instructions and whether recipients get tracking emails.
Response in data
email_notifications_default• Required booleanEmail tracking updates to recipients by default.
label_size• Required stringthermal(4×6 in) orstandard(8.5×11 in). Defaults to the account's shipping preference.updated_at• Required timestampWhen it last changed (ISO 8601, UTC).
delivery_instructions_defaultstringDelivery instructions put on new shipments.
reference_number_defaultstringReference put on new shipments.
signature_optionstringSignature on delivery:
none,requiredoradult. Carriers charge extra for a signature.
curl "https://api.parcelhub.ca/v1/preferences/shipping" \
-H "Authorization: Bearer $TOKEN"{
"ok": true,
"data": {
"delivery_instructions_default": "string",
"email_notifications_default": true,
"label_size": "thermal",
"reference_number_default": "string",
"signature_option": "none",
"updated_at": "2026-10-31T15:04:05Z"
},
"request_id": "01JBX7Q2…"
}Update shipping defaults
PUT /v1/preferences/shipping
Replaces the account's shipping defaults.
Request body
label_size• Required stringthermal(4×6 in) orstandard(8.5×11 in). Defaults to the account's shipping preference.delivery_instructions_defaultstringDelivery instructions put on new shipments.
email_notifications_defaultbooleanEmail tracking updates to recipients by default.
reference_number_defaultstringReference put on new shipments.
signature_optionstringSignature on delivery:
none,requiredoradult. Carriers charge extra for a signature.
Response in data
email_notifications_default• Required booleanEmail tracking updates to recipients by default.
label_size• Required stringthermal(4×6 in) orstandard(8.5×11 in). Defaults to the account's shipping preference.updated_at• Required timestampWhen it last changed (ISO 8601, UTC).
delivery_instructions_defaultstringDelivery instructions put on new shipments.
reference_number_defaultstringReference put on new shipments.
signature_optionstringSignature on delivery:
none,requiredoradult. Carriers charge extra for a signature.
curl -X PUT "https://api.parcelhub.ca/v1/preferences/shipping" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{
"delivery_instructions_default": "string",
"email_notifications_default": true,
"label_size": "thermal",
"reference_number_default": "string",
"signature_option": "none"
}'{
"ok": true,
"data": {
"delivery_instructions_default": "string",
"email_notifications_default": true,
"label_size": "thermal",
"reference_number_default": "string",
"signature_option": "none",
"updated_at": "2026-10-31T15:04:05Z"
},
"request_id": "01JBX7Q2…"
}