openapi: 3.2.0
info:
description: "\nKarrio is a multi-carrier shipping API that simplifies the integration of logistics carrier services.\n\nThe Karrio API is organized around REST. Our API has predictable resource-oriented URLs, accepts JSON-encoded\nrequest bodies, returns JSON-encoded responses, and uses standard HTTP response codes, authentication, and verbs.\n\nThe Karrio API differs for every account as we release new versions.\nThese docs are customized to your version of the API.\n\n\n## Versioning\n\nWhen backwards-incompatible changes are made to the API, a new, dated version is released.\nThe current version is `2026.1.32`.\n\nRead our API changelog to learn more about backwards compatibility.\n\nAs a precaution, use API versioning to check a new API version before committing to an upgrade.\n\n\n## Environments\n\nThe Karrio API offer the possibility to create and retrieve certain objects in `test_mode`.\nIn development, it is therefore possible to add carrier connections, get live rates,\nbuy labels, create trackers and schedule pickups in `test_mode`.\n\n\n## Pagination\n\nAll top-level API resources have support for bulk fetches via \"list\" API methods. For instance, you can list addresses,\nlist shipments, and list trackers. These list API methods share a common structure, taking at least these\ntwo parameters: limit, and offset.\n\nKarrio utilizes offset-based pagination via the offset and limit parameters.\nBoth parameters take a number as value (see below) and return objects in reverse chronological order.\nThe offset parameter returns objects listed after an index.\nThe limit parameter take a limit on the number of objects to be returned from 1 to 100.\n\n\n```json\n{\n \"count\": 100,\n \"next\": \"/v1/shipments?limit=25&offset=50\",\n \"previous\": \"/v1/shipments?limit=25&offset=25\",\n \"results\": [\n { ... },\n ]\n}\n```\n\n## Metadata\n\nUpdateable Karrio objects—including Shipment and Order have a metadata parameter.\nYou can use this parameter to attach key-value data to these Karrio objects.\n\nMetadata is useful for storing additional, structured information on an object.\nAs an example, you could store your user's full name and corresponding unique identifier\nfrom your system on a Karrio Order object.\n\nDo not store any sensitive information as metadata.\n\n## Authentication\n\nAPI keys are used to authenticate requests. You can view and manage your API keys in the Dashboard.\n\nYour API keys carry many privileges, so be sure to keep them secure! Do not share your secret\nAPI keys in publicly accessible areas such as GitHub, client-side code, and so forth.\n\nAuthentication to the API is performed via HTTP Basic Auth. Provide your API token as\nthe basic auth username value. You do not need to provide a password.\n\n```shell\n$ curl https://instance.api.com/v1/shipments \\\n -u key_xxxxxx:\n# The colon prevents curl from asking for a password.\n```\n\nIf you need to authenticate via bearer auth (e.g., for a cross-origin request),\nuse `-H \"Authorization: Token key_xxxxxx\"` instead of `-u key_xxxxxx`.\n\nAll API requests must be made over [HTTPS](http://en.wikipedia.org/wiki/HTTP_Secure).\nAPI requests without authentication will also fail.\n"
title: Karrio Pickups API
version: 2026.1.32
tags:
- name: Pickups
description: "This is an object representing your Karrio pickup booking.\n You can retrieve all pickup booked historically for your Karrio account shipments.\n "
paths:
/v1/pickups:
get:
operationId: $$$$list
description: Retrieve all scheduled pickups.
summary: List shipment pickups
parameters:
- in: query
name: address
schema:
type: string
- in: query
name: carrier_name
schema:
type: string
description: 'The unique carrier slug.
Values: `aramex`, `asendia`, `asendia_us`, `australiapost`, `boxknight`, `bpost`, `canadapost`, `canpar`, `chronopost`, `colissimo`, `dhl_express`, `dhl_parcel_de`, `dhl_poland`, `dhl_universal`, `dicom`, `dpd`, `dpd_meta`, `dtdc`, `easypost`, `easyship`, `eshipper`, `fedex`, `freightcom`, `generic`, `geodis`, `gls`, `hay_post`, `hermes`, `landmark`, `laposte`, `locate2u`, `mydhl`, `nationex`, `parcelone`, `postat`, `purolator`, `roadie`, `royalmail`, `sapient`, `seko`, `sendle`, `shipengine`, `smartkargo`, `spring`, `teleship`, `tge`, `tnt`, `ups`, `usps`, `usps_international`, `veho`, `zoom2u`'
- in: query
name: confirmation_number
schema:
type: string
- in: query
name: created_after
schema:
type: string
format: date-time
- in: query
name: created_before
schema:
type: string
format: date-time
- in: query
name: is_archived
schema:
type: boolean
- in: query
name: keyword
schema:
type: string
- in: query
name: pickup_date_after
schema:
type: string
format: date
- in: query
name: pickup_date_before
schema:
type: string
format: date
- in: query
name: request_id
schema:
type: string
- in: query
name: status
schema:
type: string
description: 'The pickup status.
Values: `scheduled`, `picked_up`, `cancelled`, `closed`'
tags:
- Pickups
security:
- TokenBasic: []
- Token: []
- OAuth2: []
- JWT: []
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/PickupList'
description: ''
'404':
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
description: ''
'500':
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
description: ''
x-operationId: listPickups
post:
operationId: $$$$create
description: 'Schedule a pickup for one or many shipments with labels already purchased.
The carrier is identified by `carrier_code` in the request body.
Use `options.connection_id` to target a specific carrier connection.'
summary: Schedule a pickup
tags:
- Pickups
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/PickupData'
required: true
security:
- TokenBasic: []
- Token: []
- OAuth2: []
- JWT: []
responses:
'201':
content:
application/json:
schema:
$ref: '#/components/schemas/Pickup'
description: ''
'400':
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
description: ''
'424':
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorMessages'
description: ''
'500':
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
description: ''
x-operationId: createPickup
/v1/pickups/{carrier_name}/schedule:
post:
operationId: $$$$schedule
description: 'Schedule a pickup for one or many shipments with labels already purchased.
**Deprecated**: Use `POST /v1/pickups` with `carrier_code` in the request body instead.'
summary: Schedule a pickup (deprecated)
parameters:
- in: path
name: carrier_name
schema:
type: string
required: true
tags:
- Pickups
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/PickupData'
required: true
security:
- TokenBasic: []
- Token: []
- OAuth2: []
- JWT: []
deprecated: true
responses:
'201':
content:
application/json:
schema:
$ref: '#/components/schemas/Pickup'
description: ''
'400':
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
description: ''
'424':
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorMessages'
description: ''
'500':
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
description: ''
x-operationId: schedulePickup
/v1/pickups/{id}:
get:
operationId: $$$$retrieve
description: Retrieve a scheduled pickup.
summary: Retrieve a pickup
parameters:
- in: path
name: id
schema:
type: string
required: true
tags:
- Pickups
security:
- TokenBasic: []
- Token: []
- OAuth2: []
- JWT: []
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/Pickup'
description: ''
'404':
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
description: ''
'500':
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
description: ''
x-operationId: retrievePickup
post:
operationId: $$$$update
description: Modify a pickup for one or many shipments with labels already purchased.
summary: Update a pickup
parameters:
- in: path
name: id
schema:
type: string
required: true
tags:
- Pickups
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/PickupUpdateData'
required: true
security:
- TokenBasic: []
- Token: []
- OAuth2: []
- JWT: []
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/Pickup'
description: ''
'404':
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
description: ''
'400':
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
description: ''
'424':
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorMessages'
description: ''
'500':
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
description: ''
x-operationId: updatePickup
/v1/pickups/{id}/cancel:
post:
operationId: $$$$cancel
description: 'Cancel a pickup of one or more shipments.
``pk`` can be either the karrio pickup ID (``pck_…``) or a
``request_id`` stored in ``pickup.meta["request_id"]``.'
summary: Cancel a pickup
parameters:
- in: path
name: id
schema:
type: string
required: true
tags:
- Pickups
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/PickupCancelData'
security:
- TokenBasic: []
- Token: []
- OAuth2: []
- JWT: []
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/Pickup'
description: ''
'404':
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
description: ''
'409':
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
description: ''
'424':
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorMessages'
description: ''
'500':
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
description: ''
x-operationId: cancelPickup
components:
schemas:
PickupUpdateData:
type: object
properties:
carrier_code:
type:
- string
- 'null'
description: "The carrier code for the pickup (e.g., 'canadapost', 'fedex').
\n Required when using `POST /v1/pickups`."
pickup_date:
type: string
description: "The expected pickup date.
\n Date Format: YYYY-MM-DD\n "
address:
allOf:
- $ref: '#/components/schemas/AddressData'
description: The pickup address
parcels_count:
type:
- integer
- 'null'
minimum: 1
description: The number of parcels to be picked up (alternative to linking shipments)
ready_time:
type:
- string
- 'null'
description: The ready time for pickup.
closing_time:
type:
- string
- 'null'
description: The closing or late time of the pickup
instruction:
type:
- string
- 'null'
description: "The pickup instruction.
\n eg: Handle with care.\n "
package_location:
type:
- string
- 'null'
description: "The package(s) location.
\n eg: Behind the entrance door.\n "
pickup_type:
enum:
- one_time
- daily
- recurring
type: string
x-spec-enum-id: f6e56facfab73bf5
default: one_time
description: "The pickup scheduling type.
\n - one_time: Single pickup on a specific date
\n - daily: Recurring pickup every business day
\n - recurring: Custom recurring schedule\n "
recurrence:
type:
- object
- 'null'
additionalProperties: {}
description: "Recurrence configuration for recurring pickups.
\n Example: {\"frequency\": \"weekly\", \"days_of_week\": [\"monday\", \"wednesday\", \"friday\"], \"end_date\": \"2024-12-31\"}\n "
options:
type:
- object
- 'null'
additionalProperties: {}
description: Advanced carrier specific pickup options
tracking_numbers:
type: array
items:
type: string
description: The list of shipments to be picked up
metadata:
type: object
additionalProperties: {}
default: {}
description: User metadata for the pickup
confirmation_number:
type: string
description: pickup identification number
required:
- confirmation_number
Parcel:
type: object
properties:
id:
type: string
description: A unique identifier
weight:
type: number
format: double
description: The parcel's weight
width:
type:
- number
- 'null'
format: double
description: The parcel's width
height:
type:
- number
- 'null'
format: double
description: The parcel's height
length:
type:
- number
- 'null'
format: double
description: The parcel's length
packaging_type:
type:
- string
- 'null'
description: "The parcel's packaging type.
\n **Note that the packaging is optional when using a package preset.**
\n values:
\n `envelope` `pak` `tube` `pallet` `small_box` `medium_box` `your_packaging`
\n For carrier specific packaging types, please consult the reference.\n "
maxLength: 100
package_preset:
type:
- string
- 'null'
description: "The parcel's package preset.
\n For carrier specific package presets, please consult the reference.\n "
maxLength: 100
description:
type:
- string
- 'null'
description: The parcel's description
maxLength: 250
content:
type:
- string
- 'null'
description: The parcel's content description
maxLength: 100
is_document:
type:
- boolean
- 'null'
default: false
description: Indicates if the parcel is composed of documents only
weight_unit:
enum:
- KG
- LB
- OZ
- G
type: string
x-spec-enum-id: 3a766910e8401666
description: The parcel's weight unit
dimension_unit:
enum:
- CM
- IN
- null
type:
- string
- 'null'
x-spec-enum-id: 41993cb8117c279c
description: The parcel's dimension unit
items:
type: array
items:
$ref: '#/components/schemas/Commodity'
description: The parcel items.
reference_number:
type:
- string
- 'null'
description: "The parcel reference number.
\n (can be used as tracking number for custom carriers)\n "
maxLength: 100
freight_class:
type:
- string
- 'null'
description: The parcel's freight class for pallet and freight shipments.
maxLength: 6
options:
type: object
additionalProperties: {}
default: {}
description: "\n Parcel specific options.
\n\n {\n \"insurance\": \"100.00\",\n \"insured_by\": \"carrier\",\n }\n \n "
meta:
type:
- object
- 'null'
additionalProperties: {}
description: "Template metadata for template identification.\n Structure: {\"label\": \"Standard Box\", \"is_default\": true}\n "
object_type:
type: string
default: parcel
description: Specifies the object type
required:
- weight
- weight_unit
AddressValidation:
type: object
properties:
success:
type: boolean
description: True if the address is valid
meta:
type:
- object
- 'null'
additionalProperties: {}
description: validation service details
required:
- success
Commodity:
type: object
properties:
id:
type: string
description: A unique identifier
weight:
type: number
format: double
description: The commodity's weight
weight_unit:
enum:
- KG
- LB
- OZ
- G
type: string
x-spec-enum-id: 3a766910e8401666
description: The commodity's weight unit
title:
type:
- string
- 'null'
description: A description of the commodity
maxLength: 200
description:
type:
- string
- 'null'
description: A description of the commodity
maxLength: 200
quantity:
type: integer
default: 1
description: The commodity's quantity (number or item)
sku:
type:
- string
- 'null'
description: The commodity's sku number
maxLength: 100
hs_code:
type:
- string
- 'null'
description: The commodity's hs_code number
maxLength: 100
value_amount:
type:
- number
- 'null'
format: double
description: The monetary value of the commodity
value_currency:
enum:
- EUR
- AED
- USD
- XCD
- AMD
- ANG
- AOA
- ARS
- AUD
- AWG
- AZN
- BAM
- BBD
- BDT
- XOF
- BGN
- BHD
- BIF
- BMD
- BND
- BOB
- BRL
- BSD
- BTN
- BWP
- BYN
- BZD
- CAD
- CDF
- XAF
- CHF
- NZD
- CLP
- CNY
- COP
- CRC
- CUC
- CVE
- CZK
- DJF
- DKK
- DOP
- DZD
- EGP
- ERN
- ETB
- FJD
- GBP
- GEL
- GHS
- GMD
- GNF
- GTQ
- GYD
- HKD
- HNL
- HRK
- HTG
- HUF
- IDR
- ILS
- INR
- IRR
- ISK
- JMD
- JOD
- JPY
- KES
- KGS
- KHR
- KMF
- KPW
- KRW
- KWD
- KYD
- KZT
- LAK
- LKR
- LRD
- LSL
- LYD
- MAD
- MDL
- MGA
- MKD
- MMK
- MNT
- MOP
- MRO
- MUR
- MVR
- MWK
- MXN
- MYR
- MZN
- NAD
- XPF
- NGN
- NIO
- NOK
- NPR
- OMR
- PEN
- PGK
- PHP
- PKR
- PLN
- PYG
- QAR
- RON
- RSD
- RUB
- RWF
- SAR
- SBD
- SCR
- SDG
- SEK
- SGD
- SHP
- SLL
- SOS
- SRD
- SSP
- STD
- SYP
- SZL
- THB
- TJS
- TND
- TOP
- TRY
- TTD
- TWD
- TZS
- UAH
- UYU
- UZS
- VEF
- VND
- VUV
- WST
- YER
- ZAR
- null
type:
- string
- 'null'
x-spec-enum-id: fd73376ae25ab80b
description: The currency of the commodity value amount
origin_country:
enum:
- AC
- AD
- AE
- AF
- AG
- AI
- AL
- AM
- AN
- AO
- AR
- AS
- AT
- AU
- AW
- AZ
- BA
- BB
- BD
- BE
- BF
- BG
- BH
- BI
- BJ
- BM
- BN
- BO
- BR
- BS
- BT
- BW
- BY
- BZ
- CA
- CD
- CF
- CG
- CH
- CI
- CK
- CL
- CM
- CN
- CO
- CR
- CU
- CV
- CY
- CZ
- DE
- DJ
- DK
- DM
- DO
- DZ
- EC
- EE
- EG
- ER
- ES
- ET
- FI
- FJ
- FK
- FM
- FO
- FR
- GA
- GB
- GD
- GE
- GF
- GG
- GH
- GI
- GL
- GM
- GN
- GP
- GQ
- GR
- GT
- GU
- GW
- GY
- HK
- HN
- HR
- HT
- HU
- IC
- ID
- IE
- IL
- IN
- IQ
- IR
- IS
- IT
- JE
- JM
- JO
- JP
- KE
- KG
- KH
- KI
- KM
- KN
- KP
- KR
- KV
- KW
- KY
- KZ
- LA
- LB
- LC
- LI
- LK
- LR
- LS
- LT
- LU
- LV
- LY
- MA
- MC
- MD
- ME
- MG
- MH
- MK
- ML
- MM
- MN
- MO
- MP
- MQ
- MR
- MS
- MT
- MU
- MV
- MW
- MX
- MY
- MZ
- NA
- NC
- NE
- NG
- NI
- NL
- 'NO'
- NP
- NR
- NU
- NZ
- OM
- PA
- PE
- PF
- PG
- PH
- PK
- PL
- PR
- PT
- PW
- PY
- QA
- RE
- RO
- RS
- RU
- RW
- SA
- SB
- SC
- SD
- SE
- SG
- SH
- SI
- SK
- SL
- SM
- SN
- SO
- SR
- SS
- ST
- SV
- SY
- SZ
- TC
- TD
- TG
- TH
- TJ
- TL
- TN
- TO
- TR
- TT
- TV
- TW
- TZ
- UA
- UG
- US
- UY
- UZ
- VA
- VC
- VE
- VG
- VI
- VN
- VU
- WS
- XB
- XC
- XE
- XM
- XN
- XS
- XY
- YE
- YT
- ZA
- ZM
- ZW
- EH
- IM
- BL
- MF
- SX
- null
type:
- string
- 'null'
x-spec-enum-id: b4b44aee15c8daa0
description: The origin or manufacture country
product_url:
type:
- string
- 'null'
description: The product url
image_url:
type:
- string
- 'null'
description: The image url
product_id:
type:
- string
- 'null'
description: The product id
variant_id:
type:
- string
- 'null'
description: The variant id
parent_id:
type:
- string
- 'null'
description: The id of the related order line item.
metadata:
type:
- object
- 'null'
additionalProperties: {}
description: "\n Commodity user references metadata.
\n\n {\n \"part_number\": \"5218487281\",\n \"reference1\": \"# ref 1\",\n \"reference2\": \"# ref 2\",\n \"reference3\": \"# ref 3\",\n ...\n }\n \n "
meta:
type:
- object
- 'null'
additionalProperties: {}
description: "Template metadata for template identification.\n Structure: {\"label\": \"Widget Pro\", \"is_default\": false}\n "
object_type:
type: string
default: commodity
description: Specifies the object type
required:
- weight
- weight_unit
Charge:
type: object
properties:
name:
type:
- string
- 'null'
description: The charge description
amount:
type:
- number
- 'null'
format: double
description: The charge monetary value
currency:
type:
- string
- 'null'
description: The charge amount currency
id:
type:
- string
- 'null'
description: A surcharge id
Message:
type: object
properties:
message:
type: string
description: The error or warning message
code:
type: string
description: The message code
level:
type: string
description: The message level
details:
type: object
additionalProperties: {}
description: any additional details
carrier_name:
type: string
description: The targeted carrier
carrier_id:
type: string
description: The targeted carrier name (unique identifier)
AddressData:
type: object
properties:
id:
type:
- string
- 'null'
description: A unique identifier for the address (used in JSON embedded data)
postal_code:
type:
- string
- 'null'
description: "The address postal code\n **(required for shipment purchase)**\n "
maxLength: 20
city:
type:
- string
- 'null'
description: "The address city.\n **(required for shipment purchase)**\n "
maxLength: 50
federal_tax_id:
type:
- string
- 'null'
description: The party frederal tax id
maxLength: 50
state_tax_id:
type:
- string
- 'null'
description: The party state id
maxLength: 50
person_name:
type:
- string
- 'null'
description: "Attention to\n **(required for shipment purchase)**\n "
maxLength: 100
company_name:
type:
- string
- 'null'
description: The company name if the party is a company
maxLength: 100
country_code:
enum:
- AC
- AD
- AE
- AF
- AG
- AI
- AL
- AM
- AN
- AO
- AR
- AS
- AT
- AU
- AW
- AZ
- BA
- BB
- BD
- BE
- BF
- BG
- BH
- BI
- BJ
- BM
- BN
- BO
- BR
- BS
- BT
- BW
- BY
- BZ
- CA
- CD
- CF
- CG
- CH
- CI
- CK
- CL
- CM
- CN
- CO
- CR
- CU
- CV
- CY
- CZ
- DE
- DJ
- DK
- DM
- DO
- DZ
- EC
- EE
- EG
- ER
- ES
- ET
- FI
- FJ
- FK
- FM
- FO
- FR
- GA
- GB
- GD
- GE
- GF
- GG
- GH
- GI
- GL
- GM
- GN
- GP
- GQ
- GR
- GT
- GU
- GW
- GY
- HK
- HN
- HR
- HT
- HU
- IC
- ID
- IE
- IL
- IN
- IQ
- IR
- IS
- IT
- JE
- JM
- JO
- JP
- KE
- KG
- KH
- KI
- KM
- KN
- KP
- KR
- KV
- KW
- KY
- KZ
- LA
- LB
- LC
- LI
- LK
- LR
- LS
- LT
- LU
- LV
- LY
- MA
- MC
- MD
- ME
- MG
- MH
- MK
- ML
- MM
- MN
- MO
- MP
- MQ
- MR
- MS
- MT
- MU
- MV
- MW
- MX
- MY
- MZ
- NA
- NC
- NE
- NG
- NI
- NL
- 'NO'
- NP
- NR
- NU
- NZ
- OM
- PA
- PE
- PF
- PG
- PH
- PK
- PL
- PR
- PT
- PW
- PY
- QA
- RE
- RO
- RS
- RU
- RW
- SA
- SB
- SC
- SD
- SE
- SG
- SH
- SI
- SK
- SL
- SM
- SN
- SO
- SR
- SS
- ST
- SV
- SY
- SZ
- TC
- TD
- TG
- TH
- TJ
- TL
- TN
- TO
- TR
- TT
- TV
- TW
- TZ
- UA
- UG
- US
- UY
- UZ
- VA
- VC
- VE
- VG
- VI
- VN
- VU
- WS
- XB
- XC
- XE
- XM
- XN
- XS
- XY
- YE
- YT
- ZA
- ZM
- ZW
- EH
- IM
- BL
- MF
- SX
type: string
x-spec-enum-id: b4b44aee15c8daa0
description: The address country code
email:
type:
- string
- 'null'
description: The party email
phone_number:
type:
- string
- 'null'
description: The party phone number.
maxLength: 50
state_code:
type:
- string
- 'null'
description: The address state code
maxLength: 50
residential:
type:
- boolean
- 'null'
default: false
description: Indicate if the address is residential or commercial (enterprise)
street_number:
type:
- string
- 'null'
description: The address street number
maxLength: 100
address_line1:
type:
- string
- 'null'
description: "The address line with street number
\n **(required for shipment purchase)**\n "
maxLength: 100
address_line2:
type:
- string
- 'null'
description: The address line with suite number
maxLength: 100
validate_location:
type:
- boolean
- 'null'
default: false
description: Indicate if the address should be validated
meta:
type:
- object
- 'null'
additionalProperties: {}
description: "Template metadata for template identification.\n Structure: {\"label\": \"Warehouse A\", \"is_default\": true, \"usage\": [\"sender\", \"return\"]}\n "
required:
- country_code
PickupList:
type: object
properties:
count:
type:
- integer
- 'null'
next:
type:
- string
- 'null'
format: uri
previous:
type:
- string
- 'null'
format: uri
results:
type: array
items:
$ref: '#/components/schemas/Pickup'
required:
- results
PickupCancelData:
type: object
properties:
reason:
type: string
description: The reason of the pickup cancellation
PickupData:
type: object
properties:
carrier_code:
type:
- string
- 'null'
description: "The carrier code for the pickup (e.g., 'canadapost', 'fedex').
\n Required when using `POST /v1/pickups`."
pickup_date:
type: string
description: "The expected pickup date.
\n Date Format: `YYYY-MM-DD`\n "
address:
allOf:
- $ref: '#/components/schemas/AddressData'
description: The pickup address
parcels_count:
type:
- integer
- 'null'
minimum: 1
description: The number of parcels to be picked up (alternative to linking shipments)
ready_time:
type: string
description: "The ready time for pickup.
\n Time Format: `HH:MM`\n "
closing_time:
type: string
description: "The closing or late time of the pickup.
\n Time Format: `HH:MM`\n "
instruction:
type:
- string
- 'null'
description: "The pickup instruction.
\n eg: Handle with care.\n "
maxLength: 50
package_location:
type:
- string
- 'null'
description: "The package(s) location.
\n eg: Behind the entrance door.\n "
maxLength: 50
pickup_type:
enum:
- one_time
- daily
- recurring
type: string
x-spec-enum-id: f6e56facfab73bf5
default: one_time
description: "The pickup scheduling type.
\n - one_time: Single pickup on a specific date
\n - daily: Recurring pickup every business day
\n - recurring: Custom recurring schedule\n "
recurrence:
type:
- object
- 'null'
additionalProperties: {}
description: "Recurrence configuration for recurring pickups.
\n Example: {\"frequency\": \"weekly\", \"days_of_week\": [\"monday\", \"wednesday\", \"friday\"], \"end_date\": \"2024-12-31\"}\n "
options:
type:
- object
- 'null'
additionalProperties: {}
description: Advanced carrier specific pickup options
tracking_numbers:
type: array
items:
type: string
description: The list of shipments to be picked up (optional if parcels_count provided)
metadata:
type: object
additionalProperties: {}
default: {}
description: User metadata for the pickup
required:
- closing_time
- pickup_date
- ready_time
APIError:
type: object
properties:
message:
type: string
description: The error or warning message
code:
type: string
description: The message code
level:
type: string
description: The message level
details:
type: object
additionalProperties: {}
description: any additional details
Pickup:
type: object
properties:
id:
type: string
description: A unique pickup identifier
object_type:
type: string
default: pickup
description: Specifies the object type
is_archived:
type: boolean
default: false
description: Indicates whether this pickup is archived.
archived_at:
type:
- string
- 'null'
description: Timestamp when the pickup was archived.
carrier_name:
type: string
description: The pickup carrier
carrier_id:
type: string
description: The pickup carrier configured name
confirmation_number:
type: string
description: The pickup confirmation identifier
status:
enum:
- scheduled
- picked_up
- cancelled
- closed
type: string
x-spec-enum-id: 04b3c4e318bbbc64
default: scheduled
description: The current pickup status
pickup_date:
type:
- string
- 'null'
description: The pickup date
pickup_charge:
allOf:
- $ref: '#/components/schemas/Charge'
description: The pickup cost details
ready_time:
type:
- string
- 'null'
description: The pickup expected ready time
closing_time:
type:
- string
- 'null'
description: The pickup expected closing or late time
pickup_type:
enum:
- one_time
- daily
- recurring
- null
type:
- string
- 'null'
x-spec-enum-id: f6e56facfab73bf5
default: one_time
description: "The pickup scheduling type.
\n - one_time: Single pickup on a specific date
\n - daily: Recurring pickup every business day
\n - recurring: Custom recurring schedule\n "
recurrence:
type:
- object
- 'null'
additionalProperties: {}
description: "Recurrence configuration for recurring pickups.
\n Example: {\"frequency\": \"weekly\", \"days_of_week\": [\"monday\", \"wednesday\", \"friday\"]}\n "
metadata:
type: object
additionalProperties: {}
default: {}
description: User metadata for the pickup
meta:
type:
- object
- 'null'
additionalProperties: {}
description: provider specific metadata
carrier_code:
type:
- string
- 'null'
description: "The carrier code for the pickup (e.g., 'canadapost', 'fedex').
\n Required when using `POST /v1/pickups`."
address:
allOf:
- $ref: '#/components/schemas/Address'
description: The pickup address
parcels:
type: array
items:
$ref: '#/components/schemas/Parcel'
description: The shipment parcels to pickup.
parcels_count:
type:
- integer
- 'null'
minimum: 1
description: The number of parcels to be picked up (alternative to providing parcels array)
instruction:
type:
- string
- 'null'
description: "The pickup instruction.
\n eg: Handle with care.\n "
maxLength: 50
package_location:
type:
- string
- 'null'
description: "The package(s) location.
\n eg: Behind the entrance door.\n "
maxLength: 50
options:
type:
- object
- 'null'
additionalProperties: {}
description: Advanced carrier specific pickup options
test_mode:
type: boolean
description: Specified whether it was created with a carrier in test mode
required:
- address
- carrier_id
- carrier_name
- confirmation_number
- parcels
- test_mode
ErrorResponse:
type: object
properties:
errors:
type: array
items:
$ref: '#/components/schemas/APIError'
description: The list of API errors
Address:
type: object
properties:
id:
type: string
description: A unique identifier
postal_code:
type:
- string
- 'null'
description: "The address postal code\n **(required for shipment purchase)**\n "
maxLength: 20
city:
type:
- string
- 'null'
description: "The address city.\n **(required for shipment purchase)**\n "
maxLength: 50
federal_tax_id:
type:
- string
- 'null'
description: The party frederal tax id
maxLength: 50
state_tax_id:
type:
- string
- 'null'
description: The party state id
maxLength: 50
person_name:
type:
- string
- 'null'
description: "Attention to\n **(required for shipment purchase)**\n "
maxLength: 100
company_name:
type:
- string
- 'null'
description: The company name if the party is a company
maxLength: 100
country_code:
enum:
- AC
- AD
- AE
- AF
- AG
- AI
- AL
- AM
- AN
- AO
- AR
- AS
- AT
- AU
- AW
- AZ
- BA
- BB
- BD
- BE
- BF
- BG
- BH
- BI
- BJ
- BM
- BN
- BO
- BR
- BS
- BT
- BW
- BY
- BZ
- CA
- CD
- CF
- CG
- CH
- CI
- CK
- CL
- CM
- CN
- CO
- CR
- CU
- CV
- CY
- CZ
- DE
- DJ
- DK
- DM
- DO
- DZ
- EC
- EE
- EG
- ER
- ES
- ET
- FI
- FJ
- FK
- FM
- FO
- FR
- GA
- GB
- GD
- GE
- GF
- GG
- GH
- GI
- GL
- GM
- GN
- GP
- GQ
- GR
- GT
- GU
- GW
- GY
- HK
- HN
- HR
- HT
- HU
- IC
- ID
- IE
- IL
- IN
- IQ
- IR
- IS
- IT
- JE
- JM
- JO
- JP
- KE
- KG
- KH
- KI
- KM
- KN
- KP
- KR
- KV
- KW
- KY
- KZ
- LA
- LB
- LC
- LI
- LK
- LR
- LS
- LT
- LU
- LV
- LY
- MA
- MC
- MD
- ME
- MG
- MH
- MK
- ML
- MM
- MN
- MO
- MP
- MQ
- MR
- MS
- MT
- MU
- MV
- MW
- MX
- MY
- MZ
- NA
- NC
- NE
- NG
- NI
- NL
- 'NO'
- NP
- NR
- NU
- NZ
- OM
- PA
- PE
- PF
- PG
- PH
- PK
- PL
- PR
- PT
- PW
- PY
- QA
- RE
- RO
- RS
- RU
- RW
- SA
- SB
- SC
- SD
- SE
- SG
- SH
- SI
- SK
- SL
- SM
- SN
- SO
- SR
- SS
- ST
- SV
- SY
- SZ
- TC
- TD
- TG
- TH
- TJ
- TL
- TN
- TO
- TR
- TT
- TV
- TW
- TZ
- UA
- UG
- US
- UY
- UZ
- VA
- VC
- VE
- VG
- VI
- VN
- VU
- WS
- XB
- XC
- XE
- XM
- XN
- XS
- XY
- YE
- YT
- ZA
- ZM
- ZW
- EH
- IM
- BL
- MF
- SX
type: string
x-spec-enum-id: b4b44aee15c8daa0
description: The address country code
email:
type:
- string
- 'null'
description: The party email
phone_number:
type:
- string
- 'null'
description: The party phone number.
maxLength: 50
state_code:
type:
- string
- 'null'
description: The address state code
maxLength: 50
residential:
type:
- boolean
- 'null'
default: false
description: Indicate if the address is residential or commercial (enterprise)
street_number:
type:
- string
- 'null'
description: The address street number
maxLength: 100
address_line1:
type:
- string
- 'null'
description: "The address line with street number
\n **(required for shipment purchase)**\n "
maxLength: 100
address_line2:
type:
- string
- 'null'
description: The address line with suite number
maxLength: 100
validate_location:
type:
- boolean
- 'null'
default: false
description: Indicate if the address should be validated
meta:
type:
- object
- 'null'
additionalProperties: {}
description: "Template metadata for template identification.\n Structure: {\"label\": \"Warehouse A\", \"is_default\": true, \"usage\": [\"sender\", \"return\"]}\n "
object_type:
type: string
default: address
description: Specifies the object type
validation:
allOf:
- $ref: '#/components/schemas/AddressValidation'
description: Specify address validation result
required:
- country_code
ErrorMessages:
type: object
properties:
messages:
type: array
items:
$ref: '#/components/schemas/Message'
description: The list of error messages
securitySchemes:
JWT:
in: header
type: apiKey
scheme: bearer
bearerFormat: JWT
name: Authorization
description: 'Authorization: Bearer xxx.xxx.xxx'
OAuth2:
type: oauth2
in: header
name: Authorization
flows:
authorizationCode:
authorizationUrl: /oauth/authorize/
tokenUrl: /oauth/token/
scopes:
read: Read access to Karrio data
write: Write access to Karrio data
openid: OpenID connect
description: 'Authorization: Bearer xxxxxxxx'
Token:
type: apiKey
in: header
name: Authorization
description: 'Authorization: Token key_xxxxxxxx'
TokenBasic:
type: http
scheme: basic
name: Authorization
description: '-u key_xxxxxxxx:'