API Docs
Customers need to quickly change and add carriers without incurring costly and
restrictive technical debt. Every carrier has different integration methods, requiring
a new development project for every new or updated carrier. This workload compounds as
you expand globally and work with a larger number of carriers.
The Zenkraft API integrates directly with shipping carriers such as
FedEx, UPS, and
DHL through a single platform. Integrate with Zenkraft’s
developer-friendly API and let Zenkraft handle the complexities of global carrier
integration.
This page includes examples of the Zenkraft API’s structure and parameters. Select a
carrier from the dropdown list in the navigation menu to access API reference
documentation listing their required and accepted parameters.
Endicia Overview
Please find the documentation for the Endicia below.
Supported Methods
Shipping Account ✔ Ship ✔ Rate ✔ Track ✔ Cancel ✔ Manifest ✔ Validate_credentials ✔ Webhook ✔
Authentication
The Zenkraft API uses a bearer token to authenticate. If you do not have one, please contact support.
zkkey : your_api_key
Base URL
https://api.zenkraft.com
/shippingaccount POST
The /shippingaccount endpoint enables you to use your carrier account credentials to create a Shipping Acccount ID in the Zenkraft system. This is used for all future API calls listed below.
POST Request Parameters
| Field | Possible Values | Example |
|---|---|---|
| shipping_account object required | |
|
| auth object Carrier credentials which are specific to each carrier | {'account_id': 'Account ID', 'passphrase': 'Password'} |
|
| account_id string Account ID required | Account ID |
|
| passphrase string Password required | Password |
|
| billing_address object | |
|
| city string the city of the recipient required | Burlington |
|
| company string the company name of the recipient | Burlington Textiles Corp of America |
|
| country string required | GD GF MW CW SN VC MM JP ZW TJ UG BZ TH CC MO AO ES BH CR HU SB IQ NC BJ AM PG VI BT NP UM BF GL GW IM MX KH TT MC LU TC GH PE PY CK NE AL DE VN BM CG IS VU BY KI CZ PK GQ DZ SO BS PW MN KW BQ SM PR GN MR AW PH CV ST DO DM NR SV EC BA CD PT TF TD CF SL AE SJ ER YE VG YT SZ BR GG MS JE CL FR AX LI PL TK PS TV CO TM LK AG PF BW CN ET NF MT ZM LC KN SA SD SY BN HN KR RW RS LA PM CM BO UZ GU MZ LB OM QA GA NG VE IR AS AQ MD MQ KM VA SC RU MF SI FM IL BG SX DJ TL AD AZ NL KZ BB US HK CX TR GI IT GT GP KY FK LV LY LR NA RE AI MA ZA TZ LS NO MH CY KG MV ME EE WF CH ML JO MK GE BE NZ BD AF FO UA TG BI KE GB SK PA UY AT SR SH EH HT IO HM JM CI GR PN BV KP GY AR GS MG NU RO HR ID TN DK WS CU BL MP EG MU NI AU IE SE FI TO CA SS GM IN MY SG LT FJ TW |
US |
| email string the email address of the recipient | jrogers@example.com |
|
| name string the name of the recipient required | Jack O'Rogers |
|
| phone string the phone number of the recipient | (336) 222-7000 |
|
| postal_code string the postal code / zip number of the recipient. Specific format depends on the country | 27215 |
|
| state string the state of the recipient | NC |
|
| street1 string the first line of the street address of the recipient required | 525 S. ZENKRAFT Ave |
|
| street2 string the second line of the street address of the recipient | suite 120 |
|
| street3 string the third line of the street address of the recipient | suite 120 |
|
| carrier string Carrier slug required | usps_endicia |
|
| country string required | GD GF MW CW TW SN VC MM JP ZW TJ BZ UG TH CC MO AO ES BH CR HU SB IQ NC BJ AM PG VI BT NP UM BF GL GW IM MX KH TT MC LU TC GH PE PY CK NE AL DE VN BM CG IS VU BY KI CZ PK GQ DZ SO BS PW MN KW BQ SM PR GN MR AW PH CV ST DO DM NR SV EC BA CD PT TF TD CF SL AE SJ ER YE VG YT SZ GG MS JE CL FR AX LI PL TK PS TV CO TM LK AG PF BW CN ET NF MT ZM LC KN SA SD SY BN HN KR RW RS LA PM CM BO UZ GU MZ LB OM QA GA NG VE IR AS AQ MD MQ KM VA SC RU MF SI FM IL BG SX DJ TL AD AZ NL KZ BB US HK CX TR GI IT GT GP KY FK LV LY LR NA RE AI MA ZA TZ LS NO MH CY KG MV ME EE WF CH ML JO MK GE BE NZ BD AF FO UA TG BI KE GB SK PA UY AT SR SH EH HT IO HM JM CI GR PN BV KP GY AR GS MG NU RO HR ID TN DK WS CU BL MP EG MU NI AU IE SE FI TO CA SS GM IN MY SG LT FJ BR |
US |
| defaults object | |
|
| currency string | YER JEP IMP TWD NZD ILS SHP MXN FKP GBP SRD XAF AOA DKK JPY IQD TRY PEN GNF IDR BDT NPR BZD GGP QAR BYN DJF XPF LKR JMD SZL MOP CNY SGD MNT PKR MMK MVR AWG BMD HNL SLL RON BWP HRK BBD UGX NOK SDG CHF MDL TTD TND GMD KGS TJS TMT XDR FJD LYD KYD CVE MKD AFN KZT PHP USD IRR TZS BIF HTG LBP RSD COP HUF SPL LRD BTN SVC KES PAB VEF AZN NGN UYU ERN KMF CRC GHS ALL OMR AUD THB BAM BOB TOP CUP CZK SAR NIO EUR BRL NAD INR MAD PGK UZS GIP BSD DZD HKD RUB XCD CLP STN SYP BGN CAD LAK KWD ZMW GTQ SOS VND PYG XOF MYR CDF JOD KHR ZAR DOP MZN ZWD MWK KPW VUV WST ISK BND PLN RWF AMD GEL KRW MUR SBD BHD ARS CUC ETB LSL MGA MRU TVD AED EGP SEK ANG UAH GYD SCR |
|
| dim_units string Dimension units of the packages, inches or centimeters | CM IN |
IN |
| label_type string Label Type | EPL2 EPL2__4x6 EPL2__3.5x5.25 EPL2__4x4 EPL2__4x5 EPL2__4x4.5 EPL2__DocTab EPL2__6x4 EPL2__4x8 EPL2__7x3 EPL2__Mailer7x5 EPL2__EnvelopeSize10 ZPLII ZPLII__4x6 ZPLII__3.5x5.25 ZPLII__4x4 ZPLII__4x5 ZPLII__4x4.5 ZPLII__DocTab ZPLII__6x4 ZPLII__4x8 ZPLII__7x3 ZPLII__Mailer7x5 ZPLII__EnvelopeSize10 GIF GIF__4x6 GIF__3.5x5.25 GIF__4x4 GIF__4x5 GIF__4x4.5 GIF__DocTab GIF__6x4 GIF__4x8 GIF__7x3 GIF__Mailer7x5 GIF__EnvelopeSize10 JPEG JPEG__4x6 JPEG__3.5x5.25 JPEG__4x4 JPEG__4x5 JPEG__4x4.5 JPEG__DocTab JPEG__6x4 JPEG__4x8 JPEG__7x3 JPEG__Mailer7x5 JPEG__EnvelopeSize10 PNG PNG__4x6 PNG__3.5x5.25 PNG__4x4 PNG__4x5 PNG__4x4.5 PNG__DocTab PNG__6x4 PNG__4x8 PNG__7x3 PNG__Mailer7x5 PNG__EnvelopeSize10 PDF PDF__4x6 PDF__3.5x5.25 PDF__4x4 PDF__4x5 PDF__4x4.5 PDF__DocTab PDF__6x4 PDF__4x8 PDF__7x3 PDF__Mailer7x5 PDF__EnvelopeSize10 |
PDF |
| packaging_type string Packaging Type | your_packaging card letter flat parcel large_parcel irregular_parcel flat_rate_envelope flat_rate_legal_envelope flat_rate_padded_envelope flat_rate_gift_card_envelope flat_rate_window_envelope flat_rate_cardboard_envelope small_flat_rate_envelope small_flat_rate_box medium_flat_rate_box large_flat_rate_box dvd_flat_rate_box large_video_flat_rate_box large_flat_rate_board_game_box regional_rate_box_a regional_rate_box_b |
your_packaging |
| service string Service Type | first priority priority_express library_mail media_mail parcel_select first_class_mail_international first_class_package_international_service priority_mail_international ground_advantage usps_return priority_mail_express_international retail_ground |
first |
| weight_units string Weight units of the packages, pounds or kilograms | LB KG |
LB |
| location_id string Location ID | 0d349ee54a8c4d0dbc61b1a3ac1ab1f4 |
|
| name string Account name | My usps_endicia test account |
|
| parent_shipping_account string Shipping account key to link this account to. This is useful when you want to create a sub-account | |
|
| test boolean If you specify test flag and omit `auth` key, we'll try to create a shipping account with our test credentials for the carrier/country combination specified | |
Successful Response
| Field | Possible Values | Example |
|---|---|---|
| shipping_account object | |
|
| auth object Carrier credentials which are specific to each carrier | {'account_id': 'Account ID', 'passphrase': 'Password'} |
|
| account_id string Account ID required | Account ID |
|
| passphrase string Password required | Password |
|
| carrier string Carrier slug required | usps_endicia |
|
| country string required | GD GF MW CW TW SN VC MM JP ZW TJ BZ UG TH CC MO AO ES BH CR HU SB IQ NC BJ AM PG VI BT NP UM BF GL GW IM MX KH TT MC LU TC GH PE PY CK NE AL DE VN BM CG IS VU BY KI CZ PK GQ DZ SO BS PW MN KW BQ SM PR GN MR AW PH CV ST DO DM NR SV EC BA CD PT TF TD CF SL AE SJ ER YE VG YT SZ GG MS JE CL FR AX LI PL TK PS TV CO TM LK AG PF BW CN ET NF MT ZM LC KN SA SD SY BN HN KR RW RS LA PM CM BO UZ GU MZ LB OM QA GA NG VE IR AS AQ MD MQ KM VA SC RU MF SI FM IL BG SX DJ TL AD AZ NL KZ BB US HK CX TR GI IT GT GP KY FK LV LY LR NA RE AI MA ZA TZ LS NO MH CY KG MV ME EE WF CH ML JO MK GE BE NZ BD AF FO UA TG BI KE GB SK PA UY AT SR SH EH HT IO HM JM CI GR PN BV KP GY AR GS MG NU RO HR ID TN DK WS CU BL MP EG MU NI AU IE SE FI TO CA SS GM IN MY SG LT FJ BR |
US |
| defaults object required | |
|
| currency string | YER JEP IMP TWD NZD ILS SHP MXN FKP GBP SRD XAF AOA DKK JPY IQD TRY PEN GNF IDR BDT NPR BZD GGP QAR BYN DJF XPF LKR JMD SZL MOP CNY SGD MNT PKR MMK MVR AWG BMD HNL SLL RON BWP HRK BBD UGX NOK SDG CHF MDL TTD TND GMD KGS TJS TMT XDR FJD LYD KYD CVE MKD AFN KZT PHP USD IRR TZS BIF HTG LBP RSD COP HUF SPL LRD BTN SVC KES PAB VEF AZN NGN UYU ERN KMF CRC GHS ALL OMR AUD THB BAM BOB TOP CUP CZK SAR NIO EUR BRL NAD INR MAD PGK UZS GIP BSD DZD HKD RUB XCD CLP STN SYP BGN CAD LAK KWD ZMW GTQ SOS VND PYG XOF MYR CDF JOD KHR ZAR DOP MZN ZWD MWK KPW VUV WST ISK BND PLN RWF AMD GEL KRW MUR SBD BHD ARS CUC ETB LSL MGA MRU TVD AED EGP SEK ANG UAH GYD SCR |
|
| dim_units string Dimension units of the packages, inches or centimeters | CM IN |
IN |
| label_type string Label Type | EPL2 EPL2__4x6 EPL2__3.5x5.25 EPL2__4x4 EPL2__4x5 EPL2__4x4.5 EPL2__DocTab EPL2__6x4 EPL2__4x8 EPL2__7x3 EPL2__Mailer7x5 EPL2__EnvelopeSize10 ZPLII ZPLII__4x6 ZPLII__3.5x5.25 ZPLII__4x4 ZPLII__4x5 ZPLII__4x4.5 ZPLII__DocTab ZPLII__6x4 ZPLII__4x8 ZPLII__7x3 ZPLII__Mailer7x5 ZPLII__EnvelopeSize10 GIF GIF__4x6 GIF__3.5x5.25 GIF__4x4 GIF__4x5 GIF__4x4.5 GIF__DocTab GIF__6x4 GIF__4x8 GIF__7x3 GIF__Mailer7x5 GIF__EnvelopeSize10 JPEG JPEG__4x6 JPEG__3.5x5.25 JPEG__4x4 JPEG__4x5 JPEG__4x4.5 JPEG__DocTab JPEG__6x4 JPEG__4x8 JPEG__7x3 JPEG__Mailer7x5 JPEG__EnvelopeSize10 PNG PNG__4x6 PNG__3.5x5.25 PNG__4x4 PNG__4x5 PNG__4x4.5 PNG__DocTab PNG__6x4 PNG__4x8 PNG__7x3 PNG__Mailer7x5 PNG__EnvelopeSize10 PDF PDF__4x6 PDF__3.5x5.25 PDF__4x4 PDF__4x5 PDF__4x4.5 PDF__DocTab PDF__6x4 PDF__4x8 PDF__7x3 PDF__Mailer7x5 PDF__EnvelopeSize10 |
PDF |
| packaging_type string Packaging Type | your_packaging card letter flat parcel large_parcel irregular_parcel flat_rate_envelope flat_rate_legal_envelope flat_rate_padded_envelope flat_rate_gift_card_envelope flat_rate_window_envelope flat_rate_cardboard_envelope small_flat_rate_envelope small_flat_rate_box medium_flat_rate_box large_flat_rate_box dvd_flat_rate_box large_video_flat_rate_box large_flat_rate_board_game_box regional_rate_box_a regional_rate_box_b |
your_packaging |
| service string Service Type | first priority priority_express library_mail media_mail parcel_select first_class_mail_international first_class_package_international_service priority_mail_international ground_advantage usps_return priority_mail_express_international retail_ground |
first |
| weight_units string Weight units of the packages, pounds or kilograms | LB KG |
LB |
| id string Shipping account number required | 5190163571408896 |
|
| location_id string Location ID | 0d349ee54a8c4d0dbc61b1a3ac1ab1f4 |
|
| name string Account name | My usps_endicia test account |
|
| parent_shipping_account string Shipping account key to link this account to. This is useful when you want to create a sub-account | |
|
| test boolean If you specify test flag and omit `auth` key, we'll try to create a shipping account with our test credentials for the carrier/country combination specified | |
Error Response
| Field | Possible Values | Example |
|---|---|---|
| error object | |
|
| code string Standardized error code required | schema_validation_error wrong_api_key missing_api_key unexpected_exception shipping_account_not_found schema_field_required master_test_shipping_account_not_found shipping_account_wrong_carrier |
master_test_shipping_account_not_found |
| detail string This field can contain additional information about the error. This field is not meant to be shown to the end-user required | |
|
| message object Error message required | Master shipping account for fedex in US does not exist |
Example Request / Response
{
"shipping_account": {
"name": "Test",
"carrier": "usps_endicia",
"auth": {
"account_id": "Account ID",
"passphrase": "Password"
},
"country": "US",
"test" : true
}
}
curl --request POST \
--url https://api.zenkraft.com/shippingaccount \
--header 'content-type: application/json' \
--header 'zkkey: XXXXXXXXXXXXXXXXXXXXXXX' \
--data '{
"shipping_account": {
"name": "Test",
"carrier": "usps_endicia",
"auth": {
"account_id": "Account ID",
"passphrase": "Password"
},
"country": "US",
"test" : true
}
}'
import requests
headers = {
"zkkey": "XXXXXXXXXXXXXXXXXXXXXXX"
}
payload = {
"shipping_account": {
"name": "Test",
"carrier": "usps_endicia",
"auth": {
"account_id": "Account ID",
"passphrase": "Password"
},
"country": "US",
"test" : true
}
}
url = "https://api.zenkraft.com/shippingaccount"
response = requests.request(url=url, method='POST', json=payload, headers=headers)
print(response.json())
/ship POST
The shipping endpoint is used to book shipments with Endicia. It will return a shipping label and tracking number in the response.
POST Request Parameters
| Field | Possible Values | Example |
|---|---|---|
| shipment object Definition of the shipment payload required | |
|
| combined_labels boolean Optional flag indicating whether package labels should be combined | |
|
| currency string | YER JEP IMP TWD NZD ILS SHP MXN FKP GBP SRD XAF AOA DKK JPY IQD TRY PEN GNF IDR BDT NPR BZD GGP QAR BYN DJF XPF LKR JMD SZL MOP CNY SGD MNT PKR MMK MVR AWG BMD HNL SLL RON BWP HRK BBD UGX NOK SDG CHF MDL TTD TND GMD KGS TJS TMT XDR FJD LYD KYD CVE MKD AFN KZT PHP USD IRR TZS BIF HTG LBP RSD COP HUF SPL LRD BTN SVC KES PAB VEF AZN NGN UYU ERN KMF CRC GHS ALL OMR AUD THB BAM BOB TOP CUP CZK SAR NIO EUR BRL NAD INR MAD PGK UZS GIP BSD DZD HKD RUB XCD CLP STN SYP BGN CAD LAK KWD ZMW GTQ SOS VND PYG XOF MYR CDF JOD KHR ZAR DOP MZN ZWD MWK KPW VUV WST ISK BND PLN RWF AMD GEL KRW MUR SBD BHD ARS CUC ETB LSL MGA MRU TVD AED EGP SEK ANG UAH GYD SCR |
|
| debug boolean calls with debug=true will be logged | |
|
| dim_units string Dimension units of the packages, inches or centimeters required | CM IN |
IN |
| documents array | |
|
| document string document content | |
|
| document_type string file format of the document | pdf |
|
| id string uploaded document ID | |
|
| include_base64_label boolean If this is enabled, base64 label is returned | |
|
| label_size string | 7x3 4x6 4x4.5 DocTab Mailer7x5 EnvelopeSize10 4x4 4x8 6x4 4x5 3.5x5.25 |
7x3 |
| label_type string the label format of the shipping labels required | EPL2 EPL2__4x6 EPL2__3.5x5.25 EPL2__4x4 EPL2__4x5 EPL2__4x4.5 EPL2__DocTab EPL2__6x4 EPL2__4x8 EPL2__7x3 EPL2__Mailer7x5 EPL2__EnvelopeSize10 ZPLII ZPLII__4x6 ZPLII__3.5x5.25 ZPLII__4x4 ZPLII__4x5 ZPLII__4x4.5 ZPLII__DocTab ZPLII__6x4 ZPLII__4x8 ZPLII__7x3 ZPLII__Mailer7x5 ZPLII__EnvelopeSize10 GIF GIF__4x6 GIF__3.5x5.25 GIF__4x4 GIF__4x5 GIF__4x4.5 GIF__DocTab GIF__6x4 GIF__4x8 GIF__7x3 GIF__Mailer7x5 GIF__EnvelopeSize10 JPEG JPEG__4x6 JPEG__3.5x5.25 JPEG__4x4 JPEG__4x5 JPEG__4x4.5 JPEG__DocTab JPEG__6x4 JPEG__4x8 JPEG__7x3 JPEG__Mailer7x5 JPEG__EnvelopeSize10 PNG PNG__4x6 PNG__3.5x5.25 PNG__4x4 PNG__4x5 PNG__4x4.5 PNG__DocTab PNG__6x4 PNG__4x8 PNG__7x3 PNG__Mailer7x5 PNG__EnvelopeSize10 PDF PDF__4x6 PDF__3.5x5.25 PDF__4x4 PDF__4x5 PDF__4x4.5 PDF__DocTab PDF__6x4 PDF__4x8 PDF__7x3 PDF__Mailer7x5 PDF__EnvelopeSize10 |
PDF |
| notifications array | |
|
| type string type of the notification needed | email sms |
email |
| value string value of the notification | notification1@example.com |
|
| packages array required | |
|
| height number height of the package according to units specified under dim_units | 5 |
|
| length number length of the package according to units specified under dim_units. ususally the length needs to be the largest of length, width, height | 11 |
|
| value number value of the package according to currency specified | 25 |
|
| weight number weight of the package according to units specified under weight_units | 4.2 |
|
| width number width of the package according to units specified under dim_units | 8.5 |
|
| packaging string the packaging type required | your_packaging |
your_packaging |
| recipient object required | |
|
| city string the city of the recipient required | Burlington |
|
| company string the company name of the recipient | Burlington Textiles Corp of America |
|
| country string required | GD GF MW CW TW SN VC MM JP ZW TJ BZ UG TH CC MO AO ES BH CR HU SB IQ NC BJ AM PG VI BT NP UM BF GL GW IM MX KH TT MC LU TC GH PE PY CK NE AL DE VN BM CG IS VU BY KI CZ PK GQ DZ SO BS PW MN KW BQ SM PR GN MR AW PH CV ST DO DM NR SV EC BA CD PT TF TD CF SL AE SJ ER YE VG YT SZ GG MS JE CL FR AX LI PL TK PS TV CO TM LK AG PF BW CN ET NF MT ZM LC KN SA SD SY BN HN KR RW RS LA PM CM BO UZ GU MZ LB OM QA GA NG VE IR AS AQ MD MQ KM VA SC RU MF SI FM IL BG SX DJ TL AD AZ NL KZ BB US HK CX TR GI IT GT GP KY FK LV LY LR NA RE AI MA ZA TZ LS NO MH CY KG MV ME EE WF CH ML JO MK GE BE NZ BD AF FO UA TG BI KE GB SK PA UY AT SR SH EH HT IO HM JM CI GR PN BV KP GY AR GS MG NU RO HR ID TN DK WS CU BL MP EG MU NI AU IE SE FI TO CA SS GM IN MY SG LT FJ BR |
US |
| email string the email address of the recipient | jrogers@example.com |
|
| name string the name of the recipient required | Jack O'Rogers |
|
| phone string the phone number of the recipient | (336) 222-7000 |
|
| postal_code string the postal code / zip number of the recipient. Specific format depends on the country | 27215 |
|
| state string the state of the recipient | NC |
|
| street1 string the first line of the street address of the recipient required | 525 S. ZENKRAFT Ave |
|
| street2 string the second line of the street address of the recipient | suite 120 |
|
| street3 string the third line of the street address of the recipient | suite 120 |
|
| references array | |
|
| type string type of reference | customer_reference |
|
| value string value of the reference | ABC-000123 |
|
| sender object required | |
|
| city string the city of the recipient required | Burlington |
|
| company string the company name of the recipient | Burlington Textiles Corp of America |
|
| country string required | GD GF MW CW TW SN VC MM JP ZW TJ BZ UG TH CC MO AO ES BH CR HU SB IQ NC BJ AM PG VI BT NP UM BF GL GW IM MX KH TT MC LU TC GH PE PY CK NE AL DE VN BM CG IS VU BY KI CZ PK GQ DZ SO BS PW MN KW BQ SM PR GN MR AW PH CV ST DO DM NR SV EC BA CD PT TF TD CF SL AE SJ ER YE VG YT SZ GG MS JE CL FR AX LI PL TK PS TV CO TM LK AG PF BW CN ET NF MT ZM LC KN SA SD SY BN HN KR RW RS LA PM CM BO UZ GU MZ LB OM QA GA NG VE IR AS AQ MD MQ KM VA SC RU MF SI FM IL BG SX DJ TL AD AZ NL KZ BB US HK CX TR GI IT GT GP KY FK LV LY LR NA RE AI MA ZA TZ LS NO MH CY KG MV ME EE WF CH ML JO MK GE BE NZ BD AF FO UA TG BI KE GB SK PA UY AT SR SH EH HT IO HM JM CI GR PN BV KP GY AR GS MG NU RO HR ID TN DK WS CU BL MP EG MU NI AU IE SE FI TO CA SS GM IN MY SG LT FJ BR |
US |
| email string the email address of the recipient | jrogers@example.com |
|
| name string the name of the recipient required | Jack O'Rogers |
|
| phone string the phone number of the recipient | (336) 222-7000 |
|
| postal_code string the postal code / zip number of the recipient. Specific format depends on the country | 27215 |
|
| state string the state of the recipient | NC |
|
| street1 string the first line of the street address of the recipient required | 525 S. ZENKRAFT Ave |
|
| street2 string the second line of the street address of the recipient | suite 120 |
|
| street3 string the third line of the street address of the recipient | suite 120 |
|
| service string the service type required | first priority priority_express library_mail media_mail parcel_select first_class_mail_international first_class_package_international_service priority_mail_international ground_advantage usps_return priority_mail_express_international retail_ground |
first |
| ship_date string shipping date in the ISO format | 2021-06-07 |
|
| shipping_account string Shipping account number required | 5190163571408896 |
|
| special_services array | delivery_confirmation signature_confirmation certified_mail registered_mail insured_mail cod hold_for_pickup open_and_distribute restricted_delivery return_receipt electronic_return_receipt adult_signature adult_signature_restricted_delivery am_delivery special_contents include_qr epr_returns address_validation signature_waiver no_weekend_delivery sunday_holiday_delivery customs_certify |
[delivery_confirmation ] |
| test boolean calls created with test = true will be directed to the carrier test servers | |
|
| type string outbound or return shipments | return outbound |
outbound |
| weight_units string Weight units of the packages, pounds or kilograms required | LB KG |
LB |
Successful Response
Most important parts of the response:tracking_numberwhich can be used to track the shipments in the track endpointlabelfor each package which needs to be printed and attached to the shipment
| Field | Possible Values | Example |
|---|---|---|
| shipment object | |
|
| context object this object can contain custom data returned by the carrier | |
|
| costs object Additional information about packages | |
|
| base_charge number gross amount | 100 |
|
| discounts number the cost of discounts applied | 0 |
|
| net_charge number net amount | 80 |
|
| surcharges number additional fees | 0 |
|
| taxes number the cost of taxes | 20 |
|
| id string shipment ID | 1f02d12868a54ed88b6cb4dafaad325d |
|
| label_size string | 7x3 4x6 4x4.5 DocTab Mailer7x5 EnvelopeSize10 4x4 4x8 6x4 4x5 3.5x5.25 |
7x3 |
| packages array | |
|
| height number height of the package according to units specified under dim_units | 5 |
|
| label string base64 label if you specify include_base64_label flag in your request or an URL to the generated label | |
|
| length number length of the package according to units specified under dim_units. ususally the length needs to be the largest of length, width, height | 11 |
|
| tracking_number string Tracking number of shipment | 567293923024 |
|
| value number value of the package according to currency specified | 25 |
|
| weight number weight of the package according to units specified under weight_units | 4.2 |
|
| width number width of the package according to units specified under dim_units | 8.5 |
|
| shipping_documents object Additional information about packages | |
|
| description string description of this customs item required | Commercial Invoice |
|
| document string base64 document contents required | |
|
| document_type string file format of the document required | PDF |
|
| special_services object | delivery_confirmation signature_confirmation certified_mail registered_mail insured_mail cod hold_for_pickup open_and_distribute restricted_delivery return_receipt electronic_return_receipt adult_signature adult_signature_restricted_delivery am_delivery special_contents include_qr epr_returns address_validation signature_waiver no_weekend_delivery sunday_holiday_delivery customs_certify |
[delivery_confirmation ] |
| tracking_number string Tracking number of shipment | 567293923024 |
Error Response
| Field | Possible Values | Example |
|---|---|---|
| error object | |
|
| code string Standardized error code required | schema_validation_error wrong_api_key carrier_http_exception missing_api_key carrier_throttling carrier_failed_connection unexpected_exception invalid_phone_number carrier_authentication carrier_timeout carrier_shipment_generation_failed shipping_account_not_found schema_field_required ship_date_past shipping_account_wrong_carrier carrier_label_generation_failed carrier_unsupported_method carrier_exception |
carrier_exception |
| detail string This field can contain additional information about the error. This field is not meant to be shown to the end-user required | |
|
| message object Error message required | FedEx API: The origin country code XX could not be found. Please check the country code. |
Service Types
| Name | API value | Code | Domestic / international |
|---|---|---|---|
| First | first âžž | First | |
| Priority | priority âžž | Priority | |
| Priority Express | priority_express âžž | PriorityExpress | |
| Library Mail | library_mail âžž | LibraryMail | |
| Media Mail | media_mail âžž | MediaMail | |
| Parcel Select | parcel_select âžž | ParcelSelect | |
| First Class Mail International | first_class_mail_international âžž | FirstClassMailInternational | |
| First Class Package International Service | first_class_package_international_service âžž | FirstClassPackageInternationalService | |
| Priority Mail International | priority_mail_international âžž | PriorityMailInternational | |
| Ground Advantage | ground_advantage âžž | GroundAdvantage | |
| USPS Return | usps_return âžž | USPSReturn | |
| Priority Mail Express International | priority_mail_express_international âžž | PriorityMailExpressInternational | |
| Retail Ground | retail_ground âžž | RetailGround | |
| Show more | |||
Packaging Types
| Name | API value | Domestic / international |
|---|---|---|
| Your Packaging | your_packaging âžž | |
| Card | card âžž | |
| Letter | letter âžž | |
| Flat | flat âžž | |
| Parcel | parcel âžž | |
| LargeParcel | large_parcel âžž | |
| IrregularParcel | irregular_parcel âžž | |
| FlatRateEnvelope | flat_rate_envelope âžž | |
| FlatRateLegalEnvelope | flat_rate_legal_envelope âžž | |
| FlatRatePaddedEnvelope | flat_rate_padded_envelope âžž | |
| FlatRateGiftCardEnvelope | flat_rate_gift_card_envelope âžž | |
| FlatRateWindowEnvelope | flat_rate_window_envelope âžž | |
| FlatRateCardboardEnvelope | flat_rate_cardboard_envelope âžž | |
| SmallFlatRateEnvelope | small_flat_rate_envelope âžž | |
| SmallFlatRateBox | small_flat_rate_box âžž | |
| MediumFlatRateBox | medium_flat_rate_box âžž | |
| LargeFlatRateBox | large_flat_rate_box âžž | |
| DVDFlatRateBox | dvd_flat_rate_box âžž | |
| LargeVideoFlatRateBox | large_video_flat_rate_box âžž | |
| LargeFlatRateBoardGameBox | large_flat_rate_board_game_box âžž | |
| RegionalRateBoxA | regional_rate_box_a âžž | |
| RegionalRateBoxB | regional_rate_box_b âžž |
Billing Fields
| Name | API value | Domestic / international |
|---|
Special Services
| Name | API value | Code |
|---|---|---|
| Delivery Confirmation | delivery_confirmation | DeliveryConfirmation |
| Signature Confirmation | signature_confirmation | SignatureConfirmation |
| Certified Mail | certified_mail | CertifiedMail |
| Registered Mail | registered_mail | RegisteredMail |
| Insured Mail | insured_mail | InsuredMail |
| Collect On Delivery | cod | COD |
| Hold For Pickup | hold_for_pickup | HoldForPickup |
| Open And Distribute | open_and_distribute | OpenAndDistribute |
| Restricted Delivery | restricted_delivery | RestrictedDelivery |
| Return Receipt | return_receipt | ReturnReceipt |
| Electronic Return Receipt | electronic_return_receipt | ElectronicReturnReceipt |
| Adult Signature | adult_signature | AdultSignature |
| Adult Signature Restricted Delivery | adult_signature_restricted_delivery | AdultSignatureRestrictedDelivery |
| AM Delivery | am_delivery | AMDelivery |
| Special Contents | special_contents | SpecialContents |
| Include QR | include_qr | InstaLabel |
| Pay-On-Use Returns (EPR) | epr_returns | PayOnUseReturn |
| Address validation | address_validation | address_validation |
| Signature Waiver | signature_waiver | SignatureWaiver |
| No Weekend Delivery | no_weekend_delivery | NoWeekendDelivery |
| Sunday Holiday Delivery | sunday_holiday_delivery | SundayHolidayDelivery |
| Customs Certify | customs_certify | CustomsCertify |
Package Special Services
| Name | API value | Code |
|---|---|---|
| Please contact us for package special services. | ||
Custom Fields
| Name | API value | Possible Values | Required |
|---|---|---|---|
| Endicia Label Type | endicia_label_type | default, certified_mail, destination_confirm, domestic, international | False |
| Endicia Label Size | endicia_label_size | none, 4x6, 4x6c, 3_5x5_25, 4x4, 4x5, 4x4_5, doc_tab, 6x4, 4x8, 7x3, dymo30384, envelope_size_10, mailer7x5, 7x4, 8x3, booklet, EnvelopeSize10 | False |
| Endicia Label Sub Type | endicia_label_subtype | integrated | False |
| Endicia Image Resolution | endicia_image_resolution | 203, 300, 600 | False |
| Endicia Image Rotation | endicia_image_rotation | none, rotate_90, rotate_180, rotate_270 | False |
| Sort Type | sort_type | ndc, five_digit, mixed_ndc, non_presorted, presorted, scf, single_piece, three_digit | False |
| Endicia Weight Units | endicia_weight_units | lb, kg, oz | False |
| Entry Facility | entry_facility | destination_ndc, destination_delivery_unit, destination_sectional_center_facility, origin_ndc, other | False |
| PO Box Zip Code | po_box_postal_code | False | |
| Show Return Address | show_return_address | False | |
| Date Advance | date_advance | False | |
| Machinable | machinable | False | |
| Outbound Transaction ID | outbound_transaction_id | False | |
| Description | description | False |
Customs
| Name | API value | Possible Values | Node | Required |
|---|---|---|---|---|
| Quantity | quantity | customs_item | True | |
| Description | description | customs_item | True | |
| Weight | weight | customs_item | True | |
| Value | value | customs_item | True | |
| Manufacture Country Code | manufacture_country_code | customs_item | False | |
| Contents Type | purpose_of_shipment | documents, gift, merchandise, other, sample, returned_goods, humanitarian_donation, dangerous_goods | shipment | False |
| Contents Explanation | contents_explanation | shipment | True | |
| Harmonized Code | harmonized_code | customs_item | False | |
| Restriction Type | restriction_type | none, other, quarantine, sanitary | shipment | False |
| Senders Customs Reference | senders_customs_reference | shipment | False | |
| ImportersCustomsReference | importers_customs_reference | shipment | False | |
| License Number | license_number | shipment | False | |
| Certificate Number | certificate_number | shipment | False | |
| Invoice Number | invoice_number | shipment | False | |
| Non Delivery Option | non_delivery_option | abandon, return | shipment | False |
| EEL/PFC | eel_pfc | shipment | False |
References
| Name | API value | Code |
|---|---|---|
| Reference 1 | reference_1 | ReferenceID |
| Reference 2 | reference_2 | ReferenceID2 |
| Reference 3 | reference_3 | ReferenceID3 |
| Reference 4 | reference_4 | ReferenceID4 |
Example Request / Response
{
"shipment": {
"carrier": "usps_endicia",
"currency": "GBP",
"debug": true,
"dim_units": "CM",
"include_base64_label": true,
"label_type": "EPL2",
"packages": [
{
"height": 1,
"length": 1,
"value": 1,
"weight": 1,
"width": 1
}
],
"packaging": "your_packaging",
"recipient": {
"city": "london",
"company": "Zenkraft User",
"country": "GB",
"email": "testexample@gmail.com",
"name": "Test User",
"phone": "01222 555 555",
"postal_code": "EC1R 4UG",
"state": "",
"street1": "1 Hardwick Street"
},
"sender": {
"city": "Bath",
"company": "TestCompany",
"country": "GB",
"email": "uk@testing.com",
"name": "TestCompany Name",
"phone": "",
"postal_code": "EC2R 6PJ",
"street1": "30 Moorgate"
},
"service": "first",
"ship_date": "2026-11-09",
"shipping_account": "811195730",
"test": true,
"type": "outbound",
"weight_units": "KG",
"customs_items": [
{
"quantity": 1,
"description": "Description",
"weight": 10.1,
"value": 10.1,
"manufacture_country_code": "Manufacture Country Code",
"harmonized_code": "Harmonized Code"
}
],
"purpose_of_shipment": "documents",
"contents_explanation": "Contents Explanation",
"restriction_type": "none",
"senders_customs_reference": "Senders Customs Reference",
"importers_customs_reference": "ImportersCustomsReference",
"license_number": "License Number",
"certificate_number": "Certificate Number",
"invoice_number": "Invoice Number",
"non_delivery_option": "abandon",
"eel_pfc": "EEL/PFC",
"references": [
{
"type": "reference_1",
"value": "Reference 1"
},
{
"type": "reference_2",
"value": "Reference 2"
},
{
"type": "reference_3",
"value": "Reference 3"
},
{
"type": "reference_4",
"value": "Reference 4"
}
],
"label_size": "7x3",
"special_services": [
"delivery_confirmation"
]
}
}
curl --request POST \
--url https://api.zenkraft.com/ship \
--header 'content-type: application/json' \
--header 'zkkey: XXXXXXXXXXXXXXXXXXXXXXX' \
--data '{
"shipment": {
"carrier": "usps_endicia",
"currency": "GBP",
"debug": true,
"dim_units": "CM",
"include_base64_label": true,
"label_type": "EPL2",
"packages": [
{
"height": 1,
"length": 1,
"value": 1,
"weight": 1,
"width": 1
}
],
"packaging": "your_packaging",
"recipient": {
"city": "london",
"company": "Zenkraft User",
"country": "GB",
"email": "testexample@gmail.com",
"name": "Test User",
"phone": "01222 555 555",
"postal_code": "EC1R 4UG",
"state": "",
"street1": "1 Hardwick Street"
},
"sender": {
"city": "Bath",
"company": "TestCompany",
"country": "GB",
"email": "uk@testing.com",
"name": "TestCompany Name",
"phone": "",
"postal_code": "EC2R 6PJ",
"street1": "30 Moorgate"
},
"service": "first",
"ship_date": "2026-11-09",
"shipping_account": "811195730",
"test": true,
"type": "outbound",
"weight_units": "KG",
"customs_items": [
{
"quantity": 1,
"description": "Description",
"weight": 10.1,
"value": 10.1,
"manufacture_country_code": "Manufacture Country Code",
"harmonized_code": "Harmonized Code"
}
],
"purpose_of_shipment": "documents",
"contents_explanation": "Contents Explanation",
"restriction_type": "none",
"senders_customs_reference": "Senders Customs Reference",
"importers_customs_reference": "ImportersCustomsReference",
"license_number": "License Number",
"certificate_number": "Certificate Number",
"invoice_number": "Invoice Number",
"non_delivery_option": "abandon",
"eel_pfc": "EEL/PFC",
"references": [
{
"type": "reference_1",
"value": "Reference 1"
},
{
"type": "reference_2",
"value": "Reference 2"
},
{
"type": "reference_3",
"value": "Reference 3"
},
{
"type": "reference_4",
"value": "Reference 4"
}
],
"label_size": "7x3",
"special_services": [
"delivery_confirmation"
]
}
}'
import requests
headers = {
"zkkey": "XXXXXXXXXXXXXXXXXXXXXXX"
}
payload = {
"shipment": {
"carrier": "usps_endicia",
"currency": "GBP",
"debug": true,
"dim_units": "CM",
"include_base64_label": true,
"label_type": "EPL2",
"packages": [
{
"height": 1,
"length": 1,
"value": 1,
"weight": 1,
"width": 1
}
],
"packaging": "your_packaging",
"recipient": {
"city": "london",
"company": "Zenkraft User",
"country": "GB",
"email": "testexample@gmail.com",
"name": "Test User",
"phone": "01222 555 555",
"postal_code": "EC1R 4UG",
"state": "",
"street1": "1 Hardwick Street"
},
"sender": {
"city": "Bath",
"company": "TestCompany",
"country": "GB",
"email": "uk@testing.com",
"name": "TestCompany Name",
"phone": "",
"postal_code": "EC2R 6PJ",
"street1": "30 Moorgate"
},
"service": "first",
"ship_date": "2026-11-09",
"shipping_account": "811195730",
"test": true,
"type": "outbound",
"weight_units": "KG",
"customs_items": [
{
"quantity": 1,
"description": "Description",
"weight": 10.1,
"value": 10.1,
"manufacture_country_code": "Manufacture Country Code",
"harmonized_code": "Harmonized Code"
}
],
"purpose_of_shipment": "documents",
"contents_explanation": "Contents Explanation",
"restriction_type": "none",
"senders_customs_reference": "Senders Customs Reference",
"importers_customs_reference": "ImportersCustomsReference",
"license_number": "License Number",
"certificate_number": "Certificate Number",
"invoice_number": "Invoice Number",
"non_delivery_option": "abandon",
"eel_pfc": "EEL/PFC",
"references": [
{
"type": "reference_1",
"value": "Reference 1"
},
{
"type": "reference_2",
"value": "Reference 2"
},
{
"type": "reference_3",
"value": "Reference 3"
},
{
"type": "reference_4",
"value": "Reference 4"
}
],
"label_size": "7x3",
"special_services": [
"delivery_confirmation"
]
}
}
url = "https://api.zenkraft.com/ship"
response = requests.request(url=url, method='POST', json=payload, headers=headers)
print(response.json())
{
"shipment": {
"carrier": "usps_endicia",
"shipping_account": "5190163571408896",
"test": true,
"debug": false,
"ship_date": "2026-11-09",
"type": "outbound",
"combined_labels": false,
"service": "first",
"special_services": [
"saturday_delivery"
],
"packaging": "your_packaging",
"dim_units": "IN",
"weight_units": "LB",
"currency": "USD",
"sender": {
"name": "Jack O'Rogers",
"company": "Burlington Textiles Corp of America",
"street1": "525 S. ZENKRAFT Ave",
"street2": "suite 120",
"email": "jrogers@example.com",
"phone": "(336) 222-7000",
"city": "Burlington",
"state": "NC",
"postal_code": "27215",
"country": "US"
},
"recipient": {
"name": "Jack O'Rogers",
"company": "Burlington Textiles Corp of America",
"street1": "525 S. ZENKRAFT Ave",
"street2": "suite 120",
"email": "jrogers@example.com",
"phone": "(336) 222-7000",
"city": "Burlington",
"state": "NC",
"postal_code": "27215",
"country": "US"
},
"packages": [
{
"weight": 4.2,
"value": 25,
"length": 11,
"width": 8.5,
"height": 5,
"tracking_number": "567293923024",
"label": "string"
}
],
"label_type": "PDF",
"include_base64_label": false,
"references": [
{
"type": "customer_reference",
"value": "ABC-000123"
}
],
"notifications": [
{
"type": "email",
"value": "notification1@example.com"
}
],
"costs": {
"base_charge": 100,
"net_charge": 80,
"taxes": 20,
"surcharges": 0,
"discounts": 0
},
"id": "1f02d12868a54ed88b6cb4dafaad325d",
"tracking_number": "567293923024",
"shipping_documents": [{
"description": "Commercial Invoice",
"document_type": "PDF",
"document": "string"
}],
"context": {}
}
}
/ship GET
This endpoint allows you to retrieve previously created shipments
GET Request Parameters
| Field | Possible Values | Example |
|---|---|---|
| shipment_id object ID of the previously created shipment returned from POST on /ship required | |
Successful Response
| Field | Possible Values | Example |
|---|---|---|
| shipment object | |
|
| carrier string the carrier name | usps_endicia |
|
| created string when was this object created | 2021-06-02T07:22:43.000 |
|
| id string shipment ID | 1f02d12868a54ed88b6cb4dafaad325d |
|
| label string base64 label | |
|
| label_type string the label format of the shipping labels | EPL2 EPL2__4x6 EPL2__3.5x5.25 EPL2__4x4 EPL2__4x5 EPL2__4x4.5 EPL2__DocTab EPL2__6x4 EPL2__4x8 EPL2__7x3 EPL2__Mailer7x5 EPL2__EnvelopeSize10 ZPLII ZPLII__4x6 ZPLII__3.5x5.25 ZPLII__4x4 ZPLII__4x5 ZPLII__4x4.5 ZPLII__DocTab ZPLII__6x4 ZPLII__4x8 ZPLII__7x3 ZPLII__Mailer7x5 ZPLII__EnvelopeSize10 GIF GIF__4x6 GIF__3.5x5.25 GIF__4x4 GIF__4x5 GIF__4x4.5 GIF__DocTab GIF__6x4 GIF__4x8 GIF__7x3 GIF__Mailer7x5 GIF__EnvelopeSize10 JPEG JPEG__4x6 JPEG__3.5x5.25 JPEG__4x4 JPEG__4x5 JPEG__4x4.5 JPEG__DocTab JPEG__6x4 JPEG__4x8 JPEG__7x3 JPEG__Mailer7x5 JPEG__EnvelopeSize10 PNG PNG__4x6 PNG__3.5x5.25 PNG__4x4 PNG__4x5 PNG__4x4.5 PNG__DocTab PNG__6x4 PNG__4x8 PNG__7x3 PNG__Mailer7x5 PNG__EnvelopeSize10 PDF PDF__4x6 PDF__3.5x5.25 PDF__4x4 PDF__4x5 PDF__4x4.5 PDF__DocTab PDF__6x4 PDF__4x8 PDF__7x3 PDF__Mailer7x5 PDF__EnvelopeSize10 |
PDF |
| shipping_account string Shipping account number | 5190163571408896 |
|
| status string Standardized shipment status | success pending |
success |
| tracking_number string Tracking number of shipment | 567293923024 |
|
| updated string when was this object updated | 2021-06-02T13:10:02.000 |
Error Response
| Field | Possible Values | Example |
|---|---|---|
| error object | |
|
| code string Standardized error code required | schema_validation_error wrong_api_key carrier_no_shipment_found carrier_http_exception missing_api_key carrier_throttling carrier_failed_connection unexpected_exception carrier_authentication carrier_timeout shipping_account_not_found schema_field_required shipping_account_wrong_carrier carrier_label_generation_failed carrier_unsupported_method carrier_exception |
carrier_exception |
| detail string This field can contain additional information about the error. This field is not meant to be shown to the end-user required | |
|
| message object Error message required | DHL Global Forwarding API: Your shipment was rejected due to an unpaid invoice on your previous shipment. Contact DHL support to resolve the issue. |
Example Request / Response
https://api.zenkraft.com/ship/b87ff34556ec4dba9e724963216d2dd7
curl --request GET \
--url https://api.zenkraft.com/ship/b87ff34556ec4dba9e724963216d2dd7 \
--header 'content-type: application/json' \
--header 'zkkey: XXXXXXXXXXXXXXXXXXXXXXX'
import requests
headers = {
"zkkey": "XXXXXXXXXXXXXXXXXXXXXXX"
}
payload = None
url = "https://api.zenkraft.com/ship/b87ff34556ec4dba9e724963216d2dd7"
response = requests.request(url=url, method='GET', json=payload, headers=headers)
print(response.json())
{
"shipment": {
"carrier": "usps_endicia",
"shipping_account": "5190163571408896",
"test": true,
"debug": false,
"ship_date": "2026-11-09",
"type": "outbound",
"combined_labels": false,
"service": "first",
"special_services": [
"saturday_delivery"
],
"packaging": "your_packaging",
"dim_units": "IN",
"weight_units": "LB",
"currency": "USD",
"sender": {
"name": "Jack O'Rogers",
"company": "Burlington Textiles Corp of America",
"street1": "525 S. ZENKRAFT Ave",
"street2": "suite 120",
"email": "jrogers@example.com",
"phone": "(336) 222-7000",
"city": "Burlington",
"state": "NC",
"postal_code": "27215",
"country": "US"
},
"recipient": {
"name": "Jack O'Rogers",
"company": "Burlington Textiles Corp of America",
"street1": "525 S. ZENKRAFT Ave",
"street2": "suite 120",
"email": "jrogers@example.com",
"phone": "(336) 222-7000",
"city": "Burlington",
"state": "NC",
"postal_code": "27215",
"country": "US"
},
"packages": [
{
"weight": 4.2,
"value": 25,
"length": 11,
"width": 8.5,
"height": 5,
"tracking_number": "567293923024",
"label": "string"
}
],
"label_type": "PDF",
"include_base64_label": false,
"references": [
{
"type": "customer_reference",
"value": "ABC-000123"
}
],
"notifications": [
{
"type": "email",
"value": "notification1@example.com"
}
],
"costs": {
"base_charge": 100,
"net_charge": 80,
"taxes": 20,
"surcharges": 0,
"discounts": 0
},
"id": "1f02d12868a54ed88b6cb4dafaad325d",
"tracking_number": "567293923024",
"shipping_documents": [{
"description": "Commercial Invoice",
"document_type": "PDF",
"document": "string"
}],
"context": {}
}
}
/rate POST
The rating endpoint is used to return estimated costs & time in transit data from the carrier. Zenkraft normalize this data across carriers providing a standardized date and cost format from the carriers (where the functionality is supported).
POST Request Parameters
| Field | Possible Values | Example |
|---|---|---|
| shipment object Definition of the shipment payload required | |
|
| currency string | YER JEP IMP TWD NZD ILS SHP MXN FKP GBP SRD XAF AOA DKK JPY IQD TRY PEN GNF IDR BDT NPR BZD GGP QAR BYN DJF XPF LKR JMD SZL MOP CNY SGD MNT PKR MMK MVR AWG BMD HNL SLL RON BWP HRK BBD UGX NOK SDG CHF MDL TTD TND GMD KGS TJS TMT XDR FJD LYD KYD CVE MKD AFN KZT PHP USD IRR TZS BIF HTG LBP RSD COP HUF SPL LRD BTN SVC KES PAB VEF AZN NGN UYU ERN KMF CRC GHS ALL OMR AUD THB BAM BOB TOP CUP CZK SAR NIO EUR BRL NAD INR MAD PGK UZS GIP BSD DZD HKD RUB XCD CLP STN SYP BGN CAD LAK KWD ZMW GTQ SOS VND PYG XOF MYR CDF JOD KHR ZAR DOP MZN ZWD MWK KPW VUV WST ISK BND PLN RWF AMD GEL KRW MUR SBD BHD ARS CUC ETB LSL MGA MRU TVD AED EGP SEK ANG UAH GYD SCR |
|
| debug boolean calls with debug=true will be logged | |
|
| dim_units string Dimension units of the packages, inches or centimeters required | CM IN |
IN |
| packages array required | |
|
| height number height of the package according to units specified under dim_units | 5 |
|
| length number length of the package according to units specified under dim_units. ususally the length needs to be the largest of length, width, height | 11 |
|
| value number value of the package according to currency specified | 25 |
|
| weight number weight of the package according to units specified under weight_units | 4.2 |
|
| width number width of the package according to units specified under dim_units | 8.5 |
|
| packaging string the packaging type required | your_packaging |
your_packaging |
| recipient object required | |
|
| city string the city of the recipient | Burlington |
|
| company string the company name of the recipient | Burlington Textiles Corp of America |
|
| country string required | GD GF MW CW TW SN VC MM JP ZW TJ BZ UG TH CC MO AO ES BH CR HU SB IQ NC BJ AM PG VI BT NP UM BF GL GW IM MX KH TT MC LU TC GH PE PY CK NE AL DE VN BM CG IS VU BY KI CZ PK GQ DZ SO BS PW MN KW BQ SM PR GN MR AW PH CV ST DO DM NR SV EC BA CD PT TF TD CF SL AE SJ ER YE VG YT SZ GG MS JE CL FR AX LI PL TK PS TV CO TM LK AG PF BW CN ET NF MT ZM LC KN SA SD SY BN HN KR RW RS LA PM CM BO UZ GU MZ LB OM QA GA NG VE IR AS AQ MD MQ KM VA SC RU MF SI FM IL BG SX DJ TL AD AZ NL KZ BB US HK CX TR GI IT GT GP KY FK LV LY LR NA RE AI MA ZA TZ LS NO MH CY KG MV ME EE WF CH ML JO MK GE BE NZ BD AF FO UA TG BI KE GB SK PA UY AT SR SH EH HT IO HM JM CI GR PN BV KP GY AR GS MG NU RO HR ID TN DK WS CU BL MP EG MU NI AU IE SE FI TO CA SS GM IN MY SG LT FJ BR |
US |
| email string the email address of the recipient | jrogers@example.com |
|
| name string the name of the recipient | Jack O'Rogers |
|
| phone string the phone number of the recipient | (336) 222-7000 |
|
| postal_code string the postal code / zip number of the recipient. Specific format depends on the country | 27215 |
|
| state string the state of the recipient | NC |
|
| street1 string the first line of the street address of the recipient | 525 S. ZENKRAFT Ave |
|
| street2 string the second line of the street address of the recipient | suite 120 |
|
| street3 string the third line of the street address of the recipient | suite 120 |
|
| sender object required | |
|
| city string the city of the recipient | Burlington |
|
| company string the company name of the recipient | Burlington Textiles Corp of America |
|
| country string required | GD GF MW CW TW SN VC MM JP ZW TJ BZ UG TH CC MO AO ES BH CR HU SB IQ NC BJ AM PG VI BT NP UM BF GL GW IM MX KH TT MC LU TC GH PE PY CK NE AL DE VN BM CG IS VU BY KI CZ PK GQ DZ SO BS PW MN KW BQ SM PR GN MR AW PH CV ST DO DM NR SV EC BA CD PT TF TD CF SL AE SJ ER YE VG YT SZ GG MS JE CL FR AX LI PL TK PS TV CO TM LK AG PF BW CN ET NF MT ZM LC KN SA SD SY BN HN KR RW RS LA PM CM BO UZ GU MZ LB OM QA GA NG VE IR AS AQ MD MQ KM VA SC RU MF SI FM IL BG SX DJ TL AD AZ NL KZ BB US HK CX TR GI IT GT GP KY FK LV LY LR NA RE AI MA ZA TZ LS NO MH CY KG MV ME EE WF CH ML JO MK GE BE NZ BD AF FO UA TG BI KE GB SK PA UY AT SR SH EH HT IO HM JM CI GR PN BV KP GY AR GS MG NU RO HR ID TN DK WS CU BL MP EG MU NI AU IE SE FI TO CA SS GM IN MY SG LT FJ BR |
US |
| email string the email address of the recipient | jrogers@example.com |
|
| name string the name of the recipient | Jack O'Rogers |
|
| phone string the phone number of the recipient | (336) 222-7000 |
|
| postal_code string the postal code / zip number of the recipient. Specific format depends on the country | 27215 |
|
| state string the state of the recipient | NC |
|
| street1 string the first line of the street address of the recipient | 525 S. ZENKRAFT Ave |
|
| street2 string the second line of the street address of the recipient | suite 120 |
|
| street3 string the third line of the street address of the recipient | suite 120 |
|
| service string if you specify the service type, you'll get rates only for this service | first priority priority_express library_mail media_mail parcel_select first_class_mail_international first_class_package_international_service priority_mail_international ground_advantage usps_return priority_mail_express_international retail_ground |
first |
| ship_date string shipping date in the ISO format | 2021-06-07 |
|
| shipping_account string Shipping account number required | 5190163571408896 |
|
| special_services array | delivery_confirmation signature_confirmation certified_mail registered_mail insured_mail cod hold_for_pickup open_and_distribute restricted_delivery return_receipt electronic_return_receipt adult_signature adult_signature_restricted_delivery am_delivery special_contents include_qr epr_returns address_validation signature_waiver no_weekend_delivery sunday_holiday_delivery customs_certify |
[delivery_confirmation ] |
| test boolean calls created with test = true will be directed to the carrier test servers | |
|
| type string outbound or return shipments | return outbound |
outbound |
| weight_units string Weight units of the packages, pounds or kilograms required | LB KG |
LB |
Successful Response
| Field | Possible Values | Example |
|---|---|---|
| rates array | |
|
| currency string | USD AED AFN ALL AMD ANG AOA ARS AUD AWG AZN BAM BBD BDT BGN BHD BIF BMD BND BOB BRL BSD BTN BWP BYN BZD CAD CDF CHF CLP CNY COP CRC CUC CUP CVE CZK DJF DKK DOP DZD EGP ERN ETB EUR FJD FKP GBP GEL GGP GHS GIP GMD GNF GTQ GYD HKD HNL HRK HTG HUF IDR ILS IMP INR IQD IRR ISK JEP JMD JOD JPY KES KGS KHR KMF KPW KRW KWD KYD KZT LAK LBP LKR LRD LSL LYD MAD MDL MGA MKD MMK MNT MOP MRU MUR MVR MWK MXN MYR MZN NAD NGN NIO NOK NPR NZD OMR PAB PEN PGK PHP PKR PLN PYG QAR RON RSD RUB RWF SAR SBD SCR SDG SEK SGD SHP SLL SOS SPL SRD STN SVC SYP SZL THB TJS TMT TND TOP TRY TTD TVD TWD TZS UAH UGX UYU UZS VEF VND VUV WST XAF XCD XDR XOF XPF YER ZAR ZMW ZWD |
|
| delivery_day string Day of the week of the delivery. This field is optional depending on the carrier | Mon |
|
| estimated_date string Number of days to ship. This field is optional depending on the carrier | 2021-06-04 |
|
| service_name string carrier supplied name of this service | FedEx Freight |
|
| service_type string service slug which can be used when selecting a service in /ship | first priority priority_express library_mail media_mail parcel_select first_class_mail_international first_class_package_international_service priority_mail_international ground_advantage usps_return priority_mail_express_international retail_ground |
first |
| total_cost string total estimated price for this shipment | 192.16 |
|
| transit_days integer Number of days to ship. This field is optional depending on the carrier | 3 |
Error Response
| Field | Possible Values | Example |
|---|---|---|
| error object | |
|
| code string Standardized error code required | schema_validation_error wrong_api_key carrier_http_exception missing_api_key carrier_throttling carrier_failed_connection unexpected_exception carrier_authentication carrier_timeout shipping_account_not_found schema_field_required ship_date_past shipping_account_wrong_carrier carrier_unsupported_method carrier_exception |
carrier_exception |
| detail string This field can contain additional information about the error. This field is not meant to be shown to the end-user required | |
|
| message object Error message required | FedEx API: The origin country code XX could not be found. Please check the country code. |
Example Request / Response
{
"shipment": {
"carrier": "usps_endicia",
"currency": "GBP",
"debug": true,
"dim_units": "CM",
"include_base64_label": true,
"label_type": "EPL2",
"packages": [
{
"height": 1,
"length": 1,
"value": 1,
"weight": 1,
"width": 1
}
],
"packaging": "your_packaging",
"recipient": {
"city": "london",
"company": "Zenkraft User",
"country": "GB",
"email": "testexample@gmail.com",
"name": "Test User",
"phone": "01222 555 555",
"postal_code": "EC1R 4UG",
"state": "",
"street1": "1 Hardwick Street"
},
"sender": {
"city": "Bath",
"company": "TestCompany",
"country": "GB",
"email": "uk@testing.com",
"name": "TestCompany Name",
"phone": "",
"postal_code": "EC2R 6PJ",
"street1": "30 Moorgate"
},
"service": "first",
"ship_date": "2026-11-09",
"shipping_account": "811195730",
"test": true,
"type": "outbound",
"weight_units": "KG",
"customs_items": [
{
"quantity": 1,
"description": "Description",
"weight": 10.1,
"value": 10.1,
"manufacture_country_code": "Manufacture Country Code",
"harmonized_code": "Harmonized Code"
}
],
"purpose_of_shipment": "documents",
"contents_explanation": "Contents Explanation",
"restriction_type": "none",
"senders_customs_reference": "Senders Customs Reference",
"importers_customs_reference": "ImportersCustomsReference",
"license_number": "License Number",
"certificate_number": "Certificate Number",
"invoice_number": "Invoice Number",
"non_delivery_option": "abandon",
"eel_pfc": "EEL/PFC",
"references": [
{
"type": "reference_1",
"value": "Reference 1"
},
{
"type": "reference_2",
"value": "Reference 2"
},
{
"type": "reference_3",
"value": "Reference 3"
},
{
"type": "reference_4",
"value": "Reference 4"
}
],
"label_size": "7x3",
"special_services": [
"delivery_confirmation"
]
}
}
curl --request POST \
--url https://api.zenkraft.com/rate \
--header 'content-type: application/json' \
--header 'zkkey: XXXXXXXXXXXXXXXXXXXXXXX' \
--data '{
"shipment": {
"carrier": "usps_endicia",
"currency": "GBP",
"debug": true,
"dim_units": "CM",
"include_base64_label": true,
"label_type": "EPL2",
"packages": [
{
"height": 1,
"length": 1,
"value": 1,
"weight": 1,
"width": 1
}
],
"packaging": "your_packaging",
"recipient": {
"city": "london",
"company": "Zenkraft User",
"country": "GB",
"email": "testexample@gmail.com",
"name": "Test User",
"phone": "01222 555 555",
"postal_code": "EC1R 4UG",
"state": "",
"street1": "1 Hardwick Street"
},
"sender": {
"city": "Bath",
"company": "TestCompany",
"country": "GB",
"email": "uk@testing.com",
"name": "TestCompany Name",
"phone": "",
"postal_code": "EC2R 6PJ",
"street1": "30 Moorgate"
},
"service": "first",
"ship_date": "2026-11-09",
"shipping_account": "811195730",
"test": true,
"type": "outbound",
"weight_units": "KG",
"customs_items": [
{
"quantity": 1,
"description": "Description",
"weight": 10.1,
"value": 10.1,
"manufacture_country_code": "Manufacture Country Code",
"harmonized_code": "Harmonized Code"
}
],
"purpose_of_shipment": "documents",
"contents_explanation": "Contents Explanation",
"restriction_type": "none",
"senders_customs_reference": "Senders Customs Reference",
"importers_customs_reference": "ImportersCustomsReference",
"license_number": "License Number",
"certificate_number": "Certificate Number",
"invoice_number": "Invoice Number",
"non_delivery_option": "abandon",
"eel_pfc": "EEL/PFC",
"references": [
{
"type": "reference_1",
"value": "Reference 1"
},
{
"type": "reference_2",
"value": "Reference 2"
},
{
"type": "reference_3",
"value": "Reference 3"
},
{
"type": "reference_4",
"value": "Reference 4"
}
],
"label_size": "7x3",
"special_services": [
"delivery_confirmation"
]
}
}'
import requests
headers = {
"zkkey": "XXXXXXXXXXXXXXXXXXXXXXX"
}
payload = {
"shipment": {
"carrier": "usps_endicia",
"currency": "GBP",
"debug": true,
"dim_units": "CM",
"include_base64_label": true,
"label_type": "EPL2",
"packages": [
{
"height": 1,
"length": 1,
"value": 1,
"weight": 1,
"width": 1
}
],
"packaging": "your_packaging",
"recipient": {
"city": "london",
"company": "Zenkraft User",
"country": "GB",
"email": "testexample@gmail.com",
"name": "Test User",
"phone": "01222 555 555",
"postal_code": "EC1R 4UG",
"state": "",
"street1": "1 Hardwick Street"
},
"sender": {
"city": "Bath",
"company": "TestCompany",
"country": "GB",
"email": "uk@testing.com",
"name": "TestCompany Name",
"phone": "",
"postal_code": "EC2R 6PJ",
"street1": "30 Moorgate"
},
"service": "first",
"ship_date": "2026-11-09",
"shipping_account": "811195730",
"test": true,
"type": "outbound",
"weight_units": "KG",
"customs_items": [
{
"quantity": 1,
"description": "Description",
"weight": 10.1,
"value": 10.1,
"manufacture_country_code": "Manufacture Country Code",
"harmonized_code": "Harmonized Code"
}
],
"purpose_of_shipment": "documents",
"contents_explanation": "Contents Explanation",
"restriction_type": "none",
"senders_customs_reference": "Senders Customs Reference",
"importers_customs_reference": "ImportersCustomsReference",
"license_number": "License Number",
"certificate_number": "Certificate Number",
"invoice_number": "Invoice Number",
"non_delivery_option": "abandon",
"eel_pfc": "EEL/PFC",
"references": [
{
"type": "reference_1",
"value": "Reference 1"
},
{
"type": "reference_2",
"value": "Reference 2"
},
{
"type": "reference_3",
"value": "Reference 3"
},
{
"type": "reference_4",
"value": "Reference 4"
}
],
"label_size": "7x3",
"special_services": [
"delivery_confirmation"
]
}
}
url = "https://api.zenkraft.com/rate"
response = requests.request(url=url, method='POST', json=payload, headers=headers)
print(response.json())
/track POST
The track endpoint is used to track shipment status as it's being delivered.
POST Request Parameters
| Field | Possible Values | Example |
|---|---|---|
| track object required | |
|
| checkpoints boolean whether to include checkpoint events in the response or not | |
|
| debug boolean calls with debug=true will be logged | |
|
| refresh boolean whether to force calling live carrier API. By default, we might return a fresh result from the cache | |
|
| shipping_account string Shipping account number required | 5190163571408896 |
|
| test boolean calls created with test = true will be directed to the carrier test servers | |
|
| tracking_number string Tracking number of shipment required | 567293923024 |
|
| webhooks boolean whether to allow webhook functionality for this shipment | |
Successful Response
| Field | Possible Values | Example |
|---|---|---|
| carrier string the carrier name | usps_endicia |
|
| checkpoints array | |
|
| description string | Delivered to a mailbox |
|
| status string the most recent important status description | Delivered to a mailbox |
|
| time string | 2021-06-07T10:46:07.000+1000 |
|
| tracking_stage string the most recent important status standardized shipment stage | CREATION_PENDING CREATED PICKED_UP IN_TRANSIT OUT_FOR_DELIVERY DRIVER_ASSIGNED CHECKED_IN DELIVERED SHIPMENT_VOIDED EXCEPTION |
DELIVERED |
| delivered boolean whether the shipment was successfully delivered | |
|
| delivery_date string delivery date of this shipment | 2021-06-07T00:00:00.000Z |
|
| estimated_delivery string estimated delivery date of this shipment | 2021-06-07T00:00:00.000Z |
|
| status string the most recent important status description | Delivered to a mailbox |
|
| tracking_number string Tracking number of shipment | 567293923024 |
|
| tracking_stage string the most recent important status standardized shipment stage | CREATION_PENDING CREATED PICKED_UP IN_TRANSIT OUT_FOR_DELIVERY DRIVER_ASSIGNED CHECKED_IN DELIVERED SHIPMENT_VOIDED EXCEPTION |
DELIVERED |
Error Response
| Field | Possible Values | Example |
|---|---|---|
| error object | |
|
| code string Standardized error code required | schema_validation_error wrong_api_key carrier_no_shipment_found carrier_http_exception missing_api_key carrier_throttling carrier_failed_connection unexpected_exception carrier_authentication carrier_timeout shipping_account_not_found schema_field_required shipping_account_wrong_carrier carrier_unsupported_method carrier_exception |
carrier_no_shipment_found |
| detail string This field can contain additional information about the error. This field is not meant to be shown to the end-user required | |
|
| message object Error message required | FedEx API: No shipment found with tracking number: 567293923024 |
Example Request / Response
{
"track": {
"test":false,
"carrier": "usps_endicia",
"shipping_account": 00000000000000,
"tracking_number": "1Z7881280399212000"
}
}
curl --request POST \
--url https://api.zenkraft.com/track \
--header 'content-type: application/json' \
--header 'zkkey: XXXXXXXXXXXXXXXXXXXXXXX' \
--data '{
"track": {
"test":false,
"carrier": "usps_endicia",
"shipping_account": 00000000000000,
"tracking_number": "1Z7881280399212000"
}
}'
import requests
headers = {
"zkkey": "XXXXXXXXXXXXXXXXXXXXXXX"
}
payload = {
"track": {
"test":false,
"carrier": "usps_endicia",
"shipping_account": 00000000000000,
"tracking_number": "1Z7881280399212000"
}
}
url = "https://api.zenkraft.com/track"
response = requests.request(url=url, method='POST', json=payload, headers=headers)
print(response.json())
{
"carrier": "usps_endicia",
"delivered": true,
"estimated_delivery": "2021-06-07T00:00:00.000Z",
"delivery_date": "2021-06-07T00:00:00.000Z",
"tracking_number": "567293923024",
"status": "Delivered to a mailbox",
"tracking_stage": "DELIVERED",
"checkpoints": [
{
"description": "Delivered to a mailbox",
"status": "Delivered to a mailbox",
"tracking_stage": "DELIVERED",
"time": "2021-06-07T10:46:07.000+1000"
}
]
}
Batch tracking
You can pass several track objects into your API request to get results.
Request and response details are the same and can be checked here.
Example Request / Response
[
{
"track": {
"test":false,
"carrier": "usps_endicia",
"shipping_account": 00000000000000,
"tracking_number": "1Z7881280399212000"
}
},
{
"track": {
"test":false,
"carrier": "usps_endicia",
"shipping_account": 00000000000000,
"tracking_number": "1Z7881280399212000"
}
}
]
curl --request POST \
--url https://api.zenkraft.com/track \
--header 'content-type: application/json' \
--header 'zkkey: XXXXXXXXXXXXXXXXXXXXXXX' \
--data '[
{
"track": {
"test":false,
"carrier": "usps_endicia",
"shipping_account": 00000000000000,
"tracking_number": "1Z7881280399212000"
}
},
{
"track": {
"test":false,
"carrier": "usps_endicia",
"shipping_account": 00000000000000,
"tracking_number": "1Z7881280399212000"
}
}
]'
import requests
headers = {
"zkkey": "XXXXXXXXXXXXXXXXXXXXXXX"
}
payload = [
{
"track": {
"test":false,
"carrier": "usps_endicia",
"shipping_account": 00000000000000,
"tracking_number": "1Z7881280399212000"
}
},
{
"track": {
"test":false,
"carrier": "usps_endicia",
"shipping_account": 00000000000000,
"tracking_number": "1Z7881280399212000"
}
}
]
url = "https://api.zenkraft.com/track"
response = requests.request(url=url, method='POST', json=payload, headers=headers)
print(response.json())
[
{
"carrier": "usps_endicia",
"delivered": true,
"estimated_delivery": "2021-06-07T00:00:00.000Z",
"delivery_date": "2021-06-07T00:00:00.000Z",
"tracking_number": "567293923024",
"status": "Delivered to a mailbox",
"tracking_stage": "DELIVERED",
"checkpoints": [
{
"description": "Delivered to a mailbox",
"status": "Delivered to a mailbox",
"tracking_stage": "DELIVERED",
"time": "2021-06-07T10:46:07.000+1000"
}
]
},
{
"carrier": "usps_endicia",
"delivered": true,
"estimated_delivery": "2021-06-07T00:00:00.000Z",
"delivery_date": "2021-06-07T00:00:00.000Z",
"tracking_number": "567293923024",
"status": "Delivered to a mailbox",
"tracking_stage": "DELIVERED",
"checkpoints": [
{
"description": "Delivered to a mailbox",
"status": "Delivered to a mailbox",
"tracking_stage": "DELIVERED",
"time": "2021-06-07T10:46:07.000+1000"
}
]
}
]
/cancel POST
The cancel endpoint allows you to cancel shipments with the carrier.
POST Request Parameters
| Field | Possible Values | Example |
|---|---|---|
| cancel object required | |
|
| checkpoints boolean whether to include checkpoint events in the response or not | |
|
| debug boolean calls with debug=true will be logged | |
|
| locale string language used in the checkpoint response. Not all carriers support different languages | km_KH ar_DZ teo_KE ms_MY lt_LT zh_Hans ee_TG fr_TD uk_UA mfe_MU rm_CH es_BO en_AU am_ET en_IN fr_BL en_MU sg_CF bo_IN tr_TR yo_NG en_ZA kn_IN as_IN en_CA cy_GB bn_IN so_SO az_Latn_AZ ar_QA el_GR fa_IR ses_ML bg_BG jmc_TZ or_IN ebu_KE ar_KW nn_NO es_UY teo_UG chr_US fr_CD ar_OM fr_GP kl_GL om_ET bez_TZ de_BE en_IE bem_ZM fr_BE mer_KE et_EE fr_KM id_ID en_US seh_MZ es_US en_MH it_IT zh_Hant_MO ga_IE zh_Hant mk_MK en_IL sr_Latn_RS ar_SA de_LI cgg_UG fr_LU sv_SE fr_CA en_SG vi_VN kw_GB en_BZ he_IL ko_KR ar_AE es_AR en_BW lv_LV ha_Latn_NE af_NA bn_BD ur_IN en_NZ es_PY en_BE ar_SY es_CO rw_RW en_VI vun_TZ zh_Hant_HK en_JM fr_GA mas_KE om_KE si_LK zh_Hans_MO fr_DJ zh_Hans_HK sn_ZW pa_Arab fr_BJ sr_Cyrl_ME fr_NE hy_AM bm_ML asa_TZ en_PH kln_KE naq_NA ja_JP sr_Latn_BA uz_Arab uz_Cyrl_UZ bo_CN ar_TN kok_IN de_DE uz_Arab_AF en_MP fr_RE tzm_Latn af_ZA sl_SI pa_Guru ta_LK es_SV ar_IQ khq_ML fr_MG pt_BR az_Cyrl fr_CG yue_Hant_HK az_Cyrl_AZ zh_Hant_TW ms_BN eu_ES fr_MQ de_AT kab_DZ uz_Cyrl be_BY gv_GB ka_GE xog_UG en_MT de_LU zh_Hans_SG hi_IN fr_BF sr_Latn ar_JO sr_Cyrl_BA fr_ML es_EC en_ZW fr_BI zh_Hans_CN fr_RW mg_MG ml_IN nd_ZW ha_Latn_GH ha_Latn_NG sr_Cyrl_RS shi_Latn dav_KE te_IN ar_EG ha_Latn is_IS kea_CV rof_TZ pt_GW ps_AF ar_LY so_DJ so_ET guz_KE es_CR es_PE fr_MC es_419 az_Latn kam_KE pa_Arab_PK it_CH kk_Cyrl_KZ ru_MD so_KE mr_IN ur_PK fr_MF sr_Cyrl ro_RO ti_ER my_MM es_HN ee_GH pa_Guru_IN da_DK rwk_TZ ru_RU fi_FI cs_CZ fr_CI fr_FR shi_Latn_MA gsw_CH nl_NL ar_MA gu_IN es_GQ en_AS sk_SK es_PA lag_TZ ru_UA ak_GH uz_Latn_UZ nyn_UG kde_TZ hu_HU fr_TG sw_KE to_TO en_TT ki_KE pt_PT tzm_Latn_MA nl_BE gl_ES fr_SN de_CH sv_FI shi_Tfng pt_MZ luo_KE ne_NP ca_ES fo_FO shi_Tfng_MA ti_ET es_DO luy_KE fa_AF ar_YE en_GU fr_CF kk_Cyrl es_VE fil_PH mt_MT en_GB saq_KE ii_CN es_MX zu_ZA es_GT ne_IN fr_GQ fr_GN uz_Latn ar_SD nb_NO lg_UG ar_BH haw_US ta_IN ro_MD en_NA th_TH es_ES es_PR es_NI sw_TZ bs_BA pl_PL ff_SN fr_CM ar_LB en_PK en_HK ig_NG es_CL hr_HR el_CY mas_TZ en_UM sr_Latn_ME fr_CH sq_AL |
en_US |
| refresh boolean whether to force calling live carrier API. By default, we might return a fresh result from the cache | |
|
| shipping_account string Shipping account number required | 5190163571408896 |
|
| test boolean calls created with test = true will be directed to the carrier test servers | |
|
| tracking_number string Tracking number of shipment required | 567293923024 |
|
| webhooks boolean whether to allow webhook functionality for this shipment | |
Successful Response
| Field | Possible Values | Example |
|---|---|---|
| success object | |
|
| message string Message describing the action was performed successfully | Success! |
Error Response
| Field | Possible Values | Example |
|---|---|---|
| error object | |
|
| code string Standardized error code required | schema_validation_error wrong_api_key carrier_no_shipment_found carrier_http_exception missing_api_key carrier_throttling carrier_failed_connection unexpected_exception carrier_authentication carrier_timeout shipping_account_not_found schema_field_required shipping_account_wrong_carrier carrier_unsupported_method carrier_exception |
carrier_no_shipment_found |
| detail string This field can contain additional information about the error. This field is not meant to be shown to the end-user required | |
|
| message object Error message required | FedEx API: No shipment found with tracking number: 567293923024 |
Example Request / Response
{
"cancel": {
"shipping_account": "00000000000000",
"carrier": "ups",
"tracking_number": "1Z168R020399800319"
}
}
curl --request POST \
--url https://api.zenkraft.com/cancel \
--header 'content-type: application/json' \
--header 'zkkey: XXXXXXXXXXXXXXXXXXXXXXX' \
--data '{
"cancel": {
"shipping_account": "00000000000000",
"carrier": "ups",
"tracking_number": "1Z168R020399800319"
}
}'
import requests
headers = {
"zkkey": "XXXXXXXXXXXXXXXXXXXXXXX"
}
payload = {
"cancel": {
"shipping_account": "00000000000000",
"carrier": "ups",
"tracking_number": "1Z168R020399800319"
}
}
url = "https://api.zenkraft.com/cancel"
response = requests.request(url=url, method='POST', json=payload, headers=headers)
print(response.json())
/manifest POST
Manifesting allows you to notify the carrier that your shipments are ready for shipping/pickup.
POST Request Parameters
| Field | Possible Values | Example |
|---|---|---|
| manifest object required | |
|
| debug boolean calls with debug=true will be logged | |
|
| shipping_account string Shipping account number required | 5190163571408896 |
|
| test boolean calls created with test = true will be directed to the carrier test servers | |
Successful Response
| Field | Possible Values | Example |
|---|---|---|
| manifest object | |
|
| costs object Additional information about packages | |
|
| base_charge number gross amount | 100 |
|
| discounts number the cost of discounts applied | |
|
| net_charge number net amount | 80 |
|
| surcharges number additional fees | |
|
| taxes number the cost of taxes | 20 |
|
| id string carrier ID of this manifest which can be used in GET on /manifest/<manifest_id> | 963681622636173689 |
|
| shipping_documents object Additional information about packages | |
|
| description string description of this customs item required | Manifest |
|
| document string base64 document contents required | |
|
| document_type string file format of the document required | PDF |
Error Response
| Field | Possible Values | Example |
|---|---|---|
| error object | |
|
| code string Standardized error code. If the code equals `carrier_large_manifest` you might retrieve manifest_id from the error detail required | schema_validation_error wrong_api_key carrier_http_exception missing_api_key carrier_throttling carrier_failed_connection unexpected_exception carrier_authentication carrier_timeout carrier_large_manifest shipping_account_not_found schema_field_required shipping_account_wrong_carrier carrier_unsupported_method carrier_exception |
carrier_large_manifest |
| detail string This field can contain additional information about the error. This field is not meant to be shown to the end-user required | 963681622636173689 |
|
| message string Error message required | The manifest is too large and it's going to take around 15 to generate. Retry again later please |
Example Request / Response
{
"manifest": {
"carrier": "usps_endicia",
"debug": true,
"shipping_account": 40910738,
"test": true,
"tracking_numbers": [
"33GKB500127801000961509",
"111JD575508301000961502",
"111JD575511501000961500"
]
}
}
curl --request POST \
--url https://api.zenkraft.com/manifest \
--header 'content-type: application/json' \
--header 'zkkey: XXXXXXXXXXXXXXXXXXXXXXX' \
--data '{
"manifest": {
"carrier": "usps_endicia",
"debug": true,
"shipping_account": 40910738,
"test": true,
"tracking_numbers": [
"33GKB500127801000961509",
"111JD575508301000961502",
"111JD575511501000961500"
]
}
}'
import requests
headers = {
"zkkey": "XXXXXXXXXXXXXXXXXXXXXXX"
}
payload = {
"manifest": {
"carrier": "usps_endicia",
"debug": true,
"shipping_account": 40910738,
"test": true,
"tracking_numbers": [
"33GKB500127801000961509",
"111JD575508301000961502",
"111JD575511501000961500"
]
}
}
url = "https://api.zenkraft.com/manifest"
response = requests.request(url=url, method='POST', json=payload, headers=headers)
print(response.json())
/manifest GET
This endpoint allows you to retrieve previously created manifests.
Successful Response
| Field | Possible Values | Example |
|---|---|---|
| manifests array | |
|
| carrier string the carrier name | usps_endicia |
|
| created string when was this object created | 2021-06-02T07:22:43.000 |
|
| id string carrier ID of this manifest which can be used in GET on /manifest/<manifest_id> | 963681622636173689 |
|
| shipping_account string Shipping account number | 5190163571408896 |
Error Response
| Field | Possible Values | Example |
|---|---|---|
| error object | |
|
| code string Standardized error code required | missing_api_key wrong_api_key shipping_account_not_found shipping_account_wrong_carrier schema_validation_error schema_field_required unexpected_exception |
|
| detail string This field can contain additional information about the error. This field is not meant to be shown to the end-user required | |
|
| message string Error message required | Missing zkkey HTTP header containing your Zenkraft API key |
Example Request / Response
https://api.zenkraft.com/manifest
curl --request GET \
--url https://api.zenkraft.com/manifest \
--header 'content-type: application/json' \
--header 'zkkey: XXXXXXXXXXXXXXXXXXXXXXX'
import requests
headers = {
"zkkey": "XXXXXXXXXXXXXXXXXXXXXXX"
}
payload = None
url = "https://api.zenkraft.com/manifest"
response = requests.request(url=url, method='GET', json=payload, headers=headers)
print(response.json())
/webhook POST
Webhooks provide you with a real-time view of your shipments.
1. Create a webhook configuration
In order to start using webhooks, you need to create a webhook configuration. You can find an example payload on the right side.
2. Receive a webhook
Now we will start sending tracking event updates as POST requests to your chosen address. The request will be formatted the same way as our track response
3. Verify a webhook
Webhooks can be verified by calculating a digital signature.
Each webhook request includes a base64-encoded X-Zenkraft-Hmac-SHA256 header, which is generated using your API key along with the data sent in the request.
Once you verify this signature, you can be sure the request came from us and you can continue your processing.
4. Response to a webhook
Your endpoint acknowledges that it received data by sending a 200 response. Any response outside of 200-range is considered an error. On our side, we have set a 5 second timeout. Any errors will be retried in a staggered manner over the course of the day.
Testing a Webhook
To test a webhook, run a local server or use a publicly available service such as Beeceptor. If you decide to run a server locally, then you need to make it publicly available using a service such as Pagekite or ngrok. The following URLs can't be endpoints for a webhook:
- Localhost
- Any URL ending in the word "internal"
- Domains like www.example.com
- Zenkraft domains such as api.zenkraft.com
POST Request Parameters
| Field | Possible Values | Example |
|---|---|---|
| webhook object required | |
|
| api_version string The webhook version. Used for future compatibility | v1 |
|
| callback string URL of the receiving endpoint required | https://webhook.site/3a788dd3-bd7c-44a8-bae0-297e3b68b508 |
|
| debug boolean calls with debug=true will be logged | |
|
| description string Webhook description | |
|
| events array Events to receive. If left empty, it's assumed you want to receive all the events | shipment.driver_assigned return.created shipment.creation_pending return.delivered return.out_for_delivery shipment.created return.picked_up shipment.shipment_voided return.checked_in shipment.out_for_delivery return.shipment_voided shipment.in_transit return.exception shipment.picked_up return.creation_pending shipment.delivered return.driver_assigned shipment.checked_in shipment.exception return.in_transit |
shipment.delivered |
| format string Currently only JSON is supported. Used for future compatibility | json |
|
| headers array Headers that will be sent to the webhook callback. | |
|
| name string | Authorization |
|
| value string | api_key |
|
| name string Webhook name | |
|
| shipping_account_id integer | 123 |
|
| trigger_mode string | stage checkpoint |
|
Successful Response
| Field | Possible Values | Example |
|---|---|---|
| webhook object | |
|
| api_version string The webhook version. Used for future compatibility | v1 |
|
| callback string URL of the receiving endpoint required | https://webhook.site/3a788dd3-bd7c-44a8-bae0-297e3b68b508 |
|
| debug boolean calls with debug=true will be logged | |
|
| description string Webhook description | |
|
| events array Events to receive. If left empty, it's assumed you want to receive all the events | shipment.driver_assigned return.created shipment.creation_pending return.delivered return.out_for_delivery shipment.created return.picked_up shipment.shipment_voided return.checked_in shipment.out_for_delivery return.shipment_voided shipment.in_transit return.exception shipment.picked_up return.creation_pending shipment.delivered return.driver_assigned shipment.checked_in shipment.exception return.in_transit |
shipment.delivered |
| format string Currently only JSON is supported. Used for future compatibility | json |
|
| headers array Headers that will be sent to the webhook callback. | |
|
| name string | Authorization |
|
| value string | api_key |
|
| id string ID of the subscription | 484fe753dcda47a1b817456f3a10e38e |
|
| name string Webhook name | |
|
| shipping_account_id integer | 123 |
|
| trigger_mode string | stage checkpoint |
|
Error Response
| Field | Possible Values | Example |
|---|---|---|
| error object | |
|
| code string Standardized error code required | missing_api_key wrong_api_key shipping_account_not_found shipping_account_wrong_carrier schema_validation_error schema_field_required unexpected_exception |
|
| detail string This field can contain additional information about the error. This field is not meant to be shown to the end-user required | |
|
| message string Error message required | Missing zkkey HTTP header containing your Zenkraft API key |
Example Request / Response
{
"webhook": {
"name": "Test Webhook",
"description": "Send delivery notifications",
"events": ["shipment.out_for_delivery", "shipment.delivered"],
"callback": "https://webhook.site/f263f99d-e822-4185-9ff8-f56789bc78c6",
"debug": false,
"api_version": "v1",
"format": "json",
"headers": [
{
"name": "Authorization",
"value": "api_key"
}
],
"shipping_account_id": 123,
"trigger_mode": "checkpoint"
}
}
curl --request POST \
--url https://api.zenkraft.com/webhook \
--header 'content-type: application/json' \
--header 'zkkey: XXXXXXXXXXXXXXXXXXXXXXX' \
--data '{
"webhook": {
"name": "Test Webhook",
"description": "Send delivery notifications",
"events": ["shipment.out_for_delivery", "shipment.delivered"],
"callback": "https://webhook.site/f263f99d-e822-4185-9ff8-f56789bc78c6",
"debug": false,
"api_version": "v1",
"format": "json",
"headers": [
{
"name": "Authorization",
"value": "api_key"
}
],
"shipping_account_id": 123,
"trigger_mode": "checkpoint"
}
}'
import requests
headers = {
"zkkey": "XXXXXXXXXXXXXXXXXXXXXXX"
}
payload = {
"webhook": {
"name": "Test Webhook",
"description": "Send delivery notifications",
"events": ["shipment.out_for_delivery", "shipment.delivered"],
"callback": "https://webhook.site/f263f99d-e822-4185-9ff8-f56789bc78c6",
"debug": false,
"api_version": "v1",
"format": "json",
"headers": [
{
"name": "Authorization",
"value": "api_key"
}
],
"shipping_account_id": 123,
"trigger_mode": "checkpoint"
}
}
url = "https://api.zenkraft.com/webhook"
response = requests.request(url=url, method='POST', json=payload, headers=headers)
print(response.json())
{
"webhook": {
"name": "Test Webhook",
"description": "Send delivery notifications",
"events": ["shipment.out_for_delivery", "shipment.delivered"],
"callback": "https://webhook.site/f263f99d-e822-4185-9ff8-f56789bc78c6",
"debug": false,
"api_version": "v1",
"format": "json",
"id": "484fe753dcda47a1b817456f3a10e38e",
"headers": [
{
"name": "Authorization",
"value": "api_key"
}
],
"shipping_account_id": 123,
"trigger_mode": "checkpoint"
}
}
/webhook GET
This endpoint allows you to retrieve previously created webhooks.
Successful Response
| Field | Possible Values | Example |
|---|---|---|
| webhooks array | |
|
| api_version string The webhook version. Used for future compatibility | v1 |
|
| callback string URL of the receiving endpoint | https://webhook.site/3a788dd3-bd7c-44a8-bae0-297e3b68b508 |
|
| debug boolean calls with debug=true will be logged | |
|
| description string Webhook description | |
|
| events array Events to receive. If left empty, it's assumed you want to receive all the events | shipment.driver_assigned return.created shipment.creation_pending return.delivered return.out_for_delivery shipment.created return.picked_up shipment.shipment_voided return.checked_in shipment.out_for_delivery return.shipment_voided shipment.in_transit return.exception shipment.picked_up return.creation_pending shipment.delivered return.driver_assigned shipment.checked_in shipment.exception return.in_transit |
shipment.delivered |
| format string Currently only JSON is supported. Used for future compatibility | json |
|
| headers array Headers that will be sent to the webhook callback. | |
|
| name string | Authorization |
|
| value string | api_key |
|
| id string ID of the subscription | 484fe753dcda47a1b817456f3a10e38e |
|
| name string Webhook name | |
|
| shipping_account_id integer | 123 |
|
| trigger_mode string | stage checkpoint |
|
Error Response
| Field | Possible Values | Example |
|---|---|---|
| error object | |
|
| code string Standardized error code required | missing_api_key wrong_api_key shipping_account_not_found shipping_account_wrong_carrier schema_validation_error schema_field_required unexpected_exception |
|
| detail string This field can contain additional information about the error. This field is not meant to be shown to the end-user required | |
|
| message string Error message required | Missing zkkey HTTP header containing your Zenkraft API key |
Example Request / Response
https://api.zenkraft.com/webhook
curl --request GET \
--url https://api.zenkraft.com/webhook \
--header 'content-type: application/json' \
--header 'zkkey: XXXXXXXXXXXXXXXXXXXXXXX'
import requests
headers = {
"zkkey": "XXXXXXXXXXXXXXXXXXXXXXX"
}
payload = None
url = "https://api.zenkraft.com/webhook"
response = requests.request(url=url, method='GET', json=payload, headers=headers)
print(response.json())
{
"webhooks": [
{
"name": "Test Webhook",
"description": "Send delivery notifications",
"debug": false,
"api_version": "v1",
"format": "json",
"events": [
"shipment.delivered"
],
"callback": "https://webhook.site/3a788dd3-bd7c-44a8-bae0-297e3b68b508",
"headers": [
{
"name": "Authorization",
"value": "api_key"
}
],
"shipping_account_id": 123,
"trigger_mode": "checkpoint",
"id": "484fe753dcda47a1b817456f3a10e38e"
}
]
}
/webhook/{webhook_id} PUT
This endpoint allows you to put the webhook.
PUT Request Parameters
| Field | Possible Values | Example |
|---|---|---|
| webhook object | |
|
| api_version string The webhook version. Used for future compatibility | v1 |
|
| callback string URL of the receiving endpoint required | https://webhook.site/3a788dd3-bd7c-44a8-bae0-297e3b68b508 |
|
| debug boolean calls with debug=true will be logged | |
|
| description string Webhook description | |
|
| events array Events to receive. If left empty, it's assumed you want to receive all the events | shipment.driver_assigned return.created shipment.creation_pending return.delivered return.out_for_delivery shipment.created return.picked_up shipment.shipment_voided return.checked_in shipment.out_for_delivery return.shipment_voided shipment.in_transit return.exception shipment.picked_up return.creation_pending shipment.delivered return.driver_assigned shipment.checked_in shipment.exception return.in_transit |
shipment.delivered |
| format string Currently only JSON is supported. Used for future compatibility | json |
|
| headers array Headers that will be sent to the webhook callback. | |
|
| name string | Authorization |
|
| value string | api_key |
|
| name string Webhook name | |
|
| shipping_account_id integer | 123 |
|
| trigger_mode string | stage checkpoint |
|
Successful Response
| Field | Possible Values | Example |
|---|---|---|
| webhook object | |
|
| api_version string The webhook version. Used for future compatibility | v1 |
|
| callback string URL of the receiving endpoint required | https://webhook.site/3a788dd3-bd7c-44a8-bae0-297e3b68b508 |
|
| debug boolean calls with debug=true will be logged | |
|
| description string Webhook description | |
|
| events array Events to receive. If left empty, it's assumed you want to receive all the events | shipment.driver_assigned return.created shipment.creation_pending return.delivered return.out_for_delivery shipment.created return.picked_up shipment.shipment_voided return.checked_in shipment.out_for_delivery return.shipment_voided shipment.in_transit return.exception shipment.picked_up return.creation_pending shipment.delivered return.driver_assigned shipment.checked_in shipment.exception return.in_transit |
shipment.delivered |
| format string Currently only JSON is supported. Used for future compatibility | json |
|
| headers array Headers that will be sent to the webhook callback. | |
|
| name string | Authorization |
|
| value string | api_key |
|
| id string ID of the subscription | 484fe753dcda47a1b817456f3a10e38e |
|
| name string Webhook name | |
|
| shipping_account_id integer | 123 |
|
| trigger_mode string | stage checkpoint |
|
Error Response
| Field | Possible Values | Example |
|---|---|---|
| error object | |
|
| code string Standardized error code. If the code equals `carrier_large_manifest` you might retrieve manifest_id from the error detail required | schema_validation_error wrong_api_key missing_api_key webhook_not_found unexpected_exception shipping_account_not_found schema_field_required shipping_account_wrong_carrier |
|
| detail string This field can contain additional information about the error. This field is not meant to be shown to the end-user required | |
|
| message string Error message required | No webhook exists with that ID |
Example Request / Response
{
"webhook": {
"name": "Test Webhook",
"description": "Send delivery notifications",
"events": ["shipment.out_for_delivery", "shipment.delivered"],
"callback": "https://webhook.site/f263f99d-e822-4185-9ff8-f56789bc78c6",
"debug": false,
"api_version": "v1",
"format": "json",
"headers": [
{
"name": "Authorization",
"value": "api_key"
}
],
"shipping_account_id": 123,
"trigger_mode": "checkpoint"
}
}
curl --request PUT \
--url https://api.zenkraft.com/webhook \
--header 'content-type: application/json' \
--header 'zkkey: XXXXXXXXXXXXXXXXXXXXXXX' \
--data '{
"webhook": {
"name": "Test Webhook",
"description": "Send delivery notifications",
"events": ["shipment.out_for_delivery", "shipment.delivered"],
"callback": "https://webhook.site/f263f99d-e822-4185-9ff8-f56789bc78c6",
"debug": false,
"api_version": "v1",
"format": "json",
"headers": [
{
"name": "Authorization",
"value": "api_key"
}
],
"shipping_account_id": 123,
"trigger_mode": "checkpoint"
}
}'
import requests
headers = {
"zkkey": "XXXXXXXXXXXXXXXXXXXXXXX"
}
payload = None
url = "{
"webhook": {
"name": "Test Webhook",
"description": "Send delivery notifications",
"events": ["shipment.out_for_delivery", "shipment.delivered"],
"callback": "https://webhook.site/f263f99d-e822-4185-9ff8-f56789bc78c6",
"debug": false,
"api_version": "v1",
"format": "json",
"headers": [
{
"name": "Authorization",
"value": "api_key"
}
],
"shipping_account_id": 123,
"trigger_mode": "checkpoint"
}
}"
response = requests.request(url=url, method='PUT', json=payload, headers=headers)
print(response.json())
{
"webhook": {
"name": "Test Webhook",
"description": "Send delivery notifications",
"events": ["shipment.out_for_delivery", "shipment.delivered"],
"callback": "https://webhook.site/f263f99d-e822-4185-9ff8-f56789bc78c6",
"debug": false,
"api_version": "v1",
"format": "json",
"id": "484fe753dcda47a1b817456f3a10e38e",
"headers": [
{
"name": "Authorization",
"value": "api_key"
}
],
"shipping_account_id": 123,
"trigger_mode": "checkpoint"
}
}
/webhook/{webhook_id} DELETE
This endpoint allows you to delete the specific webhook.
DELETE Request Parameters
| Field | Possible Values | Example |
|---|---|---|
| webhook_id object ID of the previously created webhook returned from POST on /webhook required | |
Successful Response
| Field | Possible Values | Example |
|---|---|---|
| success object required | |
|
| message string Message describing the action was performed successfully | Success! |
Error Response
| Field | Possible Values | Example |
|---|---|---|
| error object | |
|
| code string Standardized error code. If the code equals `carrier_large_manifest` you might retrieve manifest_id from the error detail required | schema_validation_error wrong_api_key missing_api_key webhook_not_found unexpected_exception shipping_account_not_found schema_field_required shipping_account_wrong_carrier |
|
| detail string This field can contain additional information about the error. This field is not meant to be shown to the end-user required | |
|
| message string Error message required | No webhook exists with that ID |
Example Request / Response
https://api.zenkraft.com/webhook/7acd186c4bad4197ad36b918eff71c03
curl --request GET \
--url https://api.zenkraft.com/webhook/7acd186c4bad4197ad36b918eff71c03 \
--header 'content-type: application/json' \
--header 'zkkey: XXXXXXXXXXXXXXXXXXXXXXX'
import requests
headers = {
"zkkey": "XXXXXXXXXXXXXXXXXXXXXXX"
}
payload = None
url = "https://api.zenkraft.com/webhook/7acd186c4bad4197ad36b918eff71c03"
response = requests.request(url=url, method='GET', json=payload, headers=headers)
print(response.json())
Object References
currencies
| Field | Type | Required | Min Length | Max Length |
locale
requested locale
| Field | Type | Required | Min Length | Max Length |
countries
| Field | Type | Required | Min Length | Max Length |
location_base
| Field | Type | Required | Min Length | Max Length |
| name | string | - | 35 | |
| company | string | - | 35 | |
| street1 | string | - | 50 | |
| street2 | string | - | 50 | |
| street3 | string | - | 50 | |
| string | - | 100 | ||
| phone | string | - | 35 | |
| city | string | - | 50 | |
| state | string | - | 35 | |
| postal_code | string | - | 15 | |
| country | string | - | - |
location
| Field | Type | Required | Min Length | Max Length |
| name | string | True | - | 35 |
| company | string | - | 35 | |
| street1 | string | True | - | 50 |
| street2 | string | - | 50 | |
| street3 | string | - | 50 | |
| string | - | 100 | ||
| phone | string | - | 35 | |
| city | string | True | - | 50 |
| state | string | - | 35 | |
| postal_code | string | - | 15 | |
| country | string | True | - | - |
location_rate
| Field | Type | Required | Min Length | Max Length |
| name | string | - | 35 | |
| company | string | - | 35 | |
| street1 | string | - | 50 | |
| street2 | string | - | 50 | |
| street3 | string | - | 50 | |
| string | - | 100 | ||
| phone | string | - | 35 | |
| city | string | - | 50 | |
| state | string | - | 35 | |
| postal_code | string | - | 15 | |
| country | string | True | - | - |
packages
We need to know the size and dimensions of your packages.
| Field | Type | Required | Min Length | Max Length |
| weight | number | True | - | - |
| value | number | - | - | |
| length | number | - | - | |
| width | number | - | - | |
| height | number | - | - |
references
For carriers that allow you to add reference information to your shipment.
| Field | Type | Required | Min Length | Max Length |
| type | string | True | - | - |
| value | string | True | - | - |
tracking_number
Tracking number of shipment
| Field | Type | Required | Min Length | Max Length |
reference_number
some carriers allow you to track either by the tracking number or the reference number
| Field | Type | Required | Min Length | Max Length |
ship_date
shipping date in the ISO format
| Field | Type | Required | Min Length | Max Length |
confirmation_number
reference number of this pickup. It can be used to cancel the pickup if the carrier allows it
| Field | Type | Required | Min Length | Max Length |
shipping_account
Shipping account number
| Field | Type | Required | Min Length | Max Length |
special_services
Specific special services (e.g. COD or a Required Signature) depend on a carrier, so go through our documentation to find which those are
| Field | Type | Required | Min Length | Max Length |
notifications
For carriers that allow you to set email/sms for notifications to your shippers.
| Field | Type | Required | Min Length | Max Length |
| type | string | True | - | - |
| value | string | True | - | - |
customs_items
Additional information about packages
| Field | Type | Required | Min Length | Max Length |
| description | string | True | - | - |
| quantity | integer | True | - | - |
| value | number | True | - | - |
| weight | number | True | - | - |
costs
Additional information about packages
| Field | Type | Required | Min Length | Max Length |
| base_charge | number | - | - | |
| net_charge | number | - | - | |
| taxes | number | - | - | |
| surcharges | number | - | - | |
| discounts | number | - | - |
shipping_documents
Additional information about packages
| Field | Type | Required | Min Length | Max Length |
| description | string | True | - | - |
| document_type | string | True | - | - |
| document | string | True | - | - |
carrier
the carrier name
| Field | Type | Required | Min Length | Max Length |
status
the most recent important status description
| Field | Type | Required | Min Length | Max Length |
tracking_stage
the most recent important status standardized shipment stage
| Field | Type | Required | Min Length | Max Length |
label_type
the label format of the shipping labels
| Field | Type | Required | Min Length | Max Length |
label_size
the shipping labels size
| Field | Type | Required | Min Length | Max Length |
service
the service type
| Field | Type | Required | Min Length | Max Length |
dim_units
Dimension units of the packages, inches or centimeters
| Field | Type | Required | Min Length | Max Length |
weight_units
Weight units of the packages, pounds or kilograms
| Field | Type | Required | Min Length | Max Length |
created
when was this object created
| Field | Type | Required | Min Length | Max Length |
updated
when was this object updated
| Field | Type | Required | Min Length | Max Length |
debug
calls with debug=true will be logged
| Field | Type | Required | Min Length | Max Length |
base_shipment
Definition of the shipment payload
| Field | Type | Required | Min Length | Max Length |
| shipping_account | string | True | - | - |
| test | boolean | - | - | |
| debug | boolean | - | - | |
| ship_date | string | - | - | |
| type | string | - | - | |
| service | string | - | - | |
| special_services | array | - | - | |
| packaging | string | True | - | - |
| dim_units | string | True | - | - |
| weight_units | string | True | - | - |
| currency | string | - | - | |
| packages | array | True | - | - |
shipment
Definition of the shipment payload
| Field | Type | Required | Min Length | Max Length |
| shipping_account | string | True | - | - |
| test | boolean | - | - | |
| debug | boolean | - | - | |
| ship_date | string | - | - | |
| type | string | - | - | |
| service | string | True | - | - |
| special_services | array | - | - | |
| packaging | string | True | - | - |
| dim_units | string | True | - | - |
| weight_units | string | True | - | - |
| currency | string | - | - | |
| packages | array | True | - | - |
| label_type | string | True | - | - |
| label_size | string | - | - | |
| include_base64_label | boolean | - | - | |
| references | array | - | - | |
| notifications | array | - | - | |
| sender | object | True | - | - |
| recipient | object | True | - | - |
shipment_id
shipment ID
| Field | Type | Required | Min Length | Max Length |
shipment_status
Standardized shipment status
| Field | Type | Required | Min Length | Max Length |
ship_response
| Field | Type | Required | Min Length | Max Length |
| shipment | True | - | - |
_shipment_status_response
| Field | Type | Required | Min Length | Max Length |
| shipment | True | - | - |
shipment_status_pending_response
| Field | Type | Required | Min Length | Max Length |
| shipment | True | - | - |
shipment_status_success_response
| Field | Type | Required | Min Length | Max Length |
| shipment | True | - | - |
rate
Definition of the shipment payload
| Field | Type | Required | Min Length | Max Length |
| shipping_account | string | True | - | - |
| test | boolean | - | - | |
| debug | boolean | - | - | |
| ship_date | string | - | - | |
| type | string | - | - | |
| service | string | - | - | |
| special_services | array | - | - | |
| packaging | string | True | - | - |
| dim_units | string | True | - | - |
| weight_units | string | True | - | - |
| currency | string | - | - | |
| packages | array | True | - | - |
| sender | object | True | - | - |
| recipient | object | True | - | - |
rate_response
| Field | Type | Required | Min Length | Max Length |
| rates | array | True | - | - |
pickup_response
| Field | Type | Required | Min Length | Max Length |
| pickup | object | True | - | - |
cancel_pickup_response
| Field | Type | Required | Min Length | Max Length |
| cancel | object | True | - | - |
pickup_availability_response
| Field | Type | Required | Min Length | Max Length |
| pickup_availability | object | True | - | - |
cancel_pickup
| Field | Type | Required | Min Length | Max Length |
| shipping_account | string | True | - | - |
| test | boolean | - | - | |
| debug | boolean | - | - | |
| confirmation_number | string | True | - | - |
_pickup
| Field | Type | Required | Min Length | Max Length |
| shipping_account | string | True | - | - |
| test | boolean | - | - | |
| debug | boolean | - | - | |
| description | string | - | - | |
| currency | string | - | - | |
| dim_units | string | True | - | - |
| weight_units | string | True | - | - |
| location | object | True | - | - |
| shipments | array | True | - | - |
| time | object | True | - | - |
__pickup
| Field | Type | Required | Min Length | Max Length |
| shipping_account | string | True | - | - |
| test | boolean | - | - | |
| debug | boolean | - | - | |
| description | string | - | - | |
| currency | string | - | - | |
| dim_units | string | True | - | - |
| weight_units | string | True | - | - |
| location | object | True | - | - |
| shipments | array | True | - | - |
__track
| Field | Type | Required | Min Length | Max Length |
| shipping_account | string | True | - | - |
| test | boolean | - | - | |
| debug | boolean | - | - | |
| checkpoints | boolean | - | - | |
| refresh | boolean | - | - | |
| webhooks | boolean | - | - | |
| locale | string | - | - |
track_by_tracking_number
| Field | Type | Required | Min Length | Max Length |
| shipping_account | string | True | - | - |
| test | boolean | - | - | |
| debug | boolean | - | - | |
| checkpoints | boolean | - | - | |
| refresh | boolean | - | - | |
| webhooks | boolean | - | - | |
| locale | string | - | - | |
| tracking_number | string | True | - | - |
track_by_reference_number
| Field | Type | Required | Min Length | Max Length |
| shipping_account | string | True | - | - |
| test | boolean | - | - | |
| debug | boolean | - | - | |
| checkpoints | boolean | - | - | |
| refresh | boolean | - | - | |
| webhooks | boolean | - | - | |
| locale | string | - | - | |
| reference_number | string | True | - | - |
| ship_date | string | - | - |
track
| Field | Type | Required | Min Length | Max Length |
| shipping_account | string | True | - | - |
| test | boolean | - | - | |
| debug | boolean | - | - | |
| checkpoints | boolean | - | - | |
| refresh | boolean | - | - | |
| webhooks | boolean | - | - | |
| locale | string | - | - | |
| tracking_number | string | True | - | - |
estimated_delivery
estimated delivery date of this shipment
| Field | Type | Required | Min Length | Max Length |
track_response
| Field | Type | Required | Min Length | Max Length |
| carrier | string | - | - | |
| delivered | boolean | - | - | |
| estimated_delivery | string | - | - | |
| delivery_date | string | - | - | |
| tracking_number | string | - | - | |
| status | string | - | - | |
| tracking_stage | string | - | - | |
| locale | string | - | - | |
| checkpoints | array | - | - |
manifest_id
carrier ID of this manifest which can be used in GET on /manifest/<manifest_id>
| Field | Type | Required | Min Length | Max Length |
manifest_post_response
| Field | Type | Required | Min Length | Max Length |
| manifest | True | - | - |
manifest_get_response
| Field | Type | Required | Min Length | Max Length |
| manifest | True | - | - |
manifest_list_response
| Field | Type | Required | Min Length | Max Length |
| manifests | array | True | - | - |
webhook
| Field | Type | Required | Min Length | Max Length |
| name | string | - | - | |
| description | string | - | - | |
| debug | boolean | - | - | |
| api_version | string | - | - | |
| format | string | - | - | |
| events | array | - | - | |
| callback | string | True | - | - |
| headers | array | - | - | |
| shipping_account_id | integer | - | - | |
| trigger_mode | string | - | - |
webhook_list_response
| Field | Type | Required | Min Length | Max Length |
| webhooks | array | True | - | - |
webhook_id
ID of the subscription
| Field | Type | Required | Min Length | Max Length |
_webhook_response
| Field | Type | Required | Min Length | Max Length |
| name | string | - | - | |
| description | string | - | - | |
| debug | boolean | - | - | |
| api_version | string | - | - | |
| format | string | - | - | |
| events | array | - | - | |
| callback | string | True | - | - |
| headers | array | - | - | |
| shipping_account_id | integer | - | - | |
| trigger_mode | string | - | - | |
| id | string | - | - |
webhook_response
| Field | Type | Required | Min Length | Max Length |
| webhook | object | - | - |
dopu
| Field | Type | Required | Min Length | Max Length |
| shipping_account | string | True | - | - |
| test | boolean | - | - | |
| debug | boolean | - | - | |
| location | object | True | - | - |
dopu_response
| Field | Type | Required | Min Length | Max Length |
| locations | array | True | - | - |
shippingaccount_response
Carrier credentials
| Field | Type | Required | Min Length | Max Length |
| shipping_account | object | True | - | - |
error
| Field | Type | Required | Min Length | Max Length |
| error | object | True | - | - |
ship_error
| Field | Type | Required | Min Length | Max Length |
| error | object | True | - | - |
shipment_status_error
| Field | Type | Required | Min Length | Max Length |
| error | object | True | - | - |
rate_error
| Field | Type | Required | Min Length | Max Length |
| error | object | True | - | - |
shippingaccount_error
| Field | Type | Required | Min Length | Max Length |
| error | object | True | - | - |
track_error
| Field | Type | Required | Min Length | Max Length |
| error | object | True | - | - |
dopu_error
| Field | Type | Required | Min Length | Max Length |
| error | object | True | - | - |
pickup_error
| Field | Type | Required | Min Length | Max Length |
| error | object | True | - | - |
pickup_availability_error
| Field | Type | Required | Min Length | Max Length |
| error | object | True | - | - |
manifest_error
| Field | Type | Required | Min Length | Max Length |
| error | object | True | - | - |
webhook_error
| Field | Type | Required | Min Length | Max Length |
| error | object | True | - | - |
location_error
| Field | Type | Required | Min Length | Max Length |
| error | object | True | - | - |
successful_response
| Field | Type | Required | Min Length | Max Length |
| success | object | True | - | - |
UserBase
| Field | Type | Required | Min Length | Max Length |
| name | string | True | - | - |
| string | True | - | - |
UserDetails
| Field | Type | Required | Min Length | Max Length |
| total_1_day | integer | True | - | - |
| total_7_days | integer | True | - | - |
| total_28_days | integer | True | - | - |
| api_key | string | True | - | - |
| user_token | string | True | - | - |
| company | string | True | - | - |
| created | string | True | - | - |
| mfa | boolean | True | - | - |
User
| Field | Type | Required | Min Length | Max Length |
| name | string | True | - | - |
| string | True | - | - | |
| total_1_day | integer | True | - | - |
| total_7_days | integer | True | - | - |
| total_28_days | integer | True | - | - |
| api_key | string | True | - | - |
| user_token | string | True | - | - |
| company | string | True | - | - |
| created | string | True | - | - |
| mfa | boolean | True | - | - |
log_item
| Field | Type | Required | Min Length | Max Length |
| id | string | - | - | |
| created | string | - | - | |
| status_code | number | - | - | |
| url | string | - | - | |
| ip_address | string | - | - |
LogDetails
| Field | Type | Required | Min Length | Max Length |
| id | string | - | - | |
| created | string | - | - | |
| status_code | number | - | - | |
| url | string | - | - | |
| ip_address | string | - | - | |
| http_method | string | True | - | - |
| user_agent | string | True | - | - |
| content_type | string | True | - | - |
| request | object | True | - | - |
| response | object | True | - | - |
ShipmentCheckpoint
| Field | Type | Required | Min Length | Max Length |
| time | string | True | - | - |
| status | string | True | - | - |
| description | string | True | - | - |
ShipmentItem
| Field | Type | Required | Min Length | Max Length |
| id | string | True | - | - |
| tracking_number | string | True | - | - |
| reference_number | string | True | - | - |
| carrier | string | True | - | - |
| status | string | True | - | - |
| created | string | True | - | - |
| is_return | boolean | True | - | - |
ShipmentDetails
| Field | Type | Required | Min Length | Max Length |
| id | string | True | - | - |
| tracking_number | string | True | - | - |
| reference_number | string | True | - | - |
| carrier | string | True | - | - |
| status | string | True | - | - |
| created | string | True | - | - |
| is_return | boolean | True | - | - |
| shipping_account_id | integer | True | - | - |
| updated | string | True | - | - |
| estimated_delivery | string | True | - | - |
| checkpoints | array | True | - | - |
LocationBase
| Field | Type | Required | Min Length | Max Length |
| name | string | True | - | 35 |
| company | string | True | - | 35 |
| street1 | string | True | - | 50 |
| street2 | string | - | 50 | |
| street3 | string | - | 50 | |
| string | True | - | 100 | |
| phone | string | True | - | 35 |
| city | string | True | - | 50 |
| state | string | True | - | 35 |
| postal_code | string | True | - | 15 |
| country | string | True | - | - |
| type | string | True | - | - |
| timezone | string | - | - | |
| cutoff_hours | integer | - | - | |
| cutoff_minutes | integer | - | - |
Location
| Field | Type | Required | Min Length | Max Length |
| name | string | True | - | 35 |
| company | string | True | - | 35 |
| street1 | string | True | - | 50 |
| street2 | string | - | 50 | |
| street3 | string | - | 50 | |
| string | True | - | 100 | |
| phone | string | True | - | 35 |
| city | string | True | - | 50 |
| state | string | True | - | 35 |
| postal_code | string | True | - | 15 |
| country | string | True | - | - |
| type | string | True | - | - |
| timezone | string | - | - | |
| cutoff_hours | integer | - | - | |
| cutoff_minutes | integer | - | - | |
| id | string | True | - | - |
| updated | string | - | - |
return_method_type
| Field | Type | Required | Min Length | Max Length |
return_line
| Field | Type | Required | Min Length | Max Length |
| quantity | integer | True | - | - |
| value | number | True | - | - |
| weight | number | True | - | - |
| product_name | string | True | - | - |
| line_id | string | True | - | - |
| hs_code | string | True | - | - |
| sku | string | True | - | - |
| country_of_manufacture | string | True | - | - |
| reasons | array | True | - | - |
operational_hours
| Field | Type | Required | Min Length | Max Length |
| open | string | True | - | - |
| close | string | True | - | - |
return_cost
| Field | Type | Required | Min Length | Max Length |
| carrier_charge | number | True | - | - |
| customer_charge | number | True | - | - |
ReturnMethodBase
| Field | Type | Required | Min Length | Max Length |
| position | integer | True | - | - |
| method_name | string | True | 1 | 50 |
| display_name | string | True | 1 | 50 |
| type | string | True | - | - |
| shipping_account_id | integer | True | - | - |
| location_id | string | True | - | - |
| sf_shipping_preference_id | string | - | - | |
| service_type | string | True | - | - |
| return_charge | string | True | - | - |
| filters | array | True | - | - |
ReturnMethodCountryFilter
| Field | Type | Required | Min Length | Max Length |
| field | string | True | - | - |
| operator | string | True | - | - |
| value | string | True | - | - |
ReturnMethodNumberFilter
| Field | Type | Required | Min Length | Max Length |
| field | string | True | - | - |
| operator | string | True | - | - |
| value | string | True | - | - |
ReturnMethodCustomFilter
| Field | Type | Required | Min Length | Max Length |
| field | string | True | - | - |
| operator | string | True | - | - |
| name | string | True | - | 50 |
| value | string | True | - | - |
ReturnMethod
| Field | Type | Required | Min Length | Max Length |
| position | integer | True | - | - |
| method_name | string | True | 1 | 50 |
| display_name | string | True | 1 | 50 |
| type | string | True | - | - |
| shipping_account_id | integer | True | - | - |
| location_id | string | True | - | - |
| sf_shipping_preference_id | string | - | - | |
| service_type | string | True | - | - |
| return_charge | string | True | - | - |
| filters | array | True | - | - |
| id | string | True | - | - |
ReturnMethodShortDetails
| Field | Type | Required | Min Length | Max Length |
| id | string | True | - | - |
| carrier | string | True | - | - |
| carrier_logo | string | True | - | - |
| carrier_name | string | True | - | - |
| method_name | string | True | - | - |
| type | string | True | - | - |
return_pickup
| Field | Type | Required | Min Length | Max Length |
| id | string | True | - | - |
| confirmation_number | string | True | - | - |
| reference_number | string | True | - | - |
return_shipment
| Field | Type | Required | Min Length | Max Length |
| id | string | True | - | - |
| tracking_number | string | True | - | - |
| reference_number | string | True | - | - |
| status | string | True | - | - |
| label | string | True | - | - |
ReturnItem
| Field | Type | Required | Min Length | Max Length |
| id | string | True | - | - |
| customer_id | string | True | - | - |
| order_id | string | - | - | |
| created | string | True | - | - |
| return_lines | array | True | - | - |
| return_method | object | True | - | - |
| pickup | object | - | - | |
| shipment | object | True | - | - |
| custom | array | - | - |
return_method_error
| Field | Type | Required | Min Length | Max Length |
| error | object | True | - | - |
ShipmentEvent
| Field | Type | Required | Min Length | Max Length |
| carrier | string | True | - | - |
| tracking_number | string | True | - | - |
| from_country | string | True | - | - |
| to_country | string | True | - | - |
| service | string | True | - | - |
| is_outbound | boolean | True | - | - |
| total_costs | number | True | - | - |
| currency | string | True | - | - |
| created | string | True | - | - |
FtpConnectedAccountCredentials
| Field | Type | Required | Min Length | Max Length |
| ftp_username | string | True | - | - |
| ftp_password | string | True | - | - |
FtpConnectedAccount
| Field | Type | Required | Min Length | Max Length |
| ftp_username | string | True | - | - |
| ftp_password | string | True | - | - |
| shipping_account_id | integer | True | - | - |
| name | string | True | - | - |
| service | integer | True | - | - |
QuantumViewConnectedAccount
| Field | Type | Required | Min Length | Max Length |
| shipping_account_id | integer | True | - | - |
| name | string | True | - | - |
| service | integer | True | - | - |
ShopifyConnectedAccount
| Field | Type | Required | Min Length | Max Length |
| shop_url | string | True | - | - |
| shipping_account | array | True | - | - |
| name | string | True | - | - |
| service | integer | True | - | - |
custom_context
Custom context attached to the return
| Field | Type | Required | Min Length | Max Length |
NewstoreConnectedAccount
| Field | Type | Required | Min Length | Max Length |
| shipping_account_id | string | True | - | - |
| shipping_account_key | integer | True | - | - |
| name | string | True | - | - |
| service | integer | True | - | - |
SalesforceCore
| Field | Type | Required | Min Length | Max Length |
| service | integer | True | - | - |
| environment | string | True | - | - |
| custom_domain | string | True | - | - |
| client_id | string | - | - | |
| client_secret | string | - | - |
SalesforceCommerceCloud
| Field | Type | Required | Min Length | Max Length |
| url | string | True | - | - |
| service | integer | True | - | - |
ConnectedAccountBase
| Field | Type | Required | Min Length | Max Length |
| id | string | True | - | - |
| status | string | True | - | - |
ItemConnectedAccount
| Field | Type | Required | Min Length | Max Length |
| id | string | True | - | - |
| status | string | True | - | - |
| ftp_username | string | True | - | - |
| ftp_password | string | True | - | - |
| shipping_account_id | integer | True | - | - |
| name | string | True | - | - |
| service | integer | True | - | - |
CreateConnectedAccount
| Field | Type | Required | Min Length | Max Length |
| id | string | True | - | - |
| status | string | True | - | - |
| ftp_username | string | True | - | - |
| ftp_password | string | True | - | - |
| shipping_account_id | integer | True | - | - |
| name | string | True | - | - |
| service | integer | True | - | - |
UpdateConnectedAccount
| Field | Type | Required | Min Length | Max Length |
| id | string | True | - | - |
| status | string | True | - | - |
| ftp_username | string | True | - | - |
| ftp_password | string | True | - | - |
| shipping_account_id | integer | True | - | - |
| name | string | True | - | - |
| service | integer | True | - | - |
connected_account_error
| Field | Type | Required | Min Length | Max Length |
| error | object | True | - | - |