Karrio Connections API
This is an object representing your Karrio carrier connections. You can retrieve all carrier connections available to your account. The `carrier_id` is a friendly name you assign to your connection.
This is an object representing your Karrio carrier connections. You can retrieve all carrier connections available to your account. The `carrier_id` is a friendly name you assign to your connection.
Every API here is available over the APIs.io API and to AI agents over MCP.
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
find_apisBrowse and filter every API in the catalog.get_api_artifactsOne API's artifacts, grouped by type.get_openapiThe primary OpenAPI for this API.find_similar_apisAPIs that look like this one.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.curl "https://apis.io/api/v1/apis/karrio-connections-api"
curl "https://apis.io/api/v1/apis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.
A second provider on the same verified email joins the account you already have.
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 Connections API
version: 2026.1.32
tags:
- name: Connections
description: "This is an object representing your Karrio carrier connections.\n You can retrieve all carrier connections available to your account.\n The `carrier_id` is a friendly name you assign to your connection.\n "
paths:
/v1/connections:
get:
operationId: '&&&list'
description: Retrieve all carrier connections
summary: List carrier connections
parameters:
- in: query
name: active
schema:
type: boolean
- in: query
name: carrier_name
schema:
type: string
description: 'The unique carrier slug. <br/>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: metadata_key
schema:
type: string
- in: query
name: metadata_value
schema:
type: string
- in: query
name: system_only
schema:
type: boolean
tags:
- Connections
security:
- TokenBasic: []
- Token: []
- OAuth2: []
- JWT: []
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/CarrierConnectionList'
description: ''
'400':
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
description: ''
x-operationId: listCarrierConnections
post:
operationId: '&&&add'
description: Add a new carrier connection.
summary: Add a carrier connection
tags:
- Connections
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/CarrierConnectionData'
required: true
security:
- TokenBasic: []
- Token: []
- OAuth2: []
- JWT: []
responses:
'201':
content:
application/json:
schema:
$ref: '#/components/schemas/CarrierConnection'
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: addCarrierConnection
/v1/connections/{id}:
get:
operationId: '&&&retrieve'
description: Retrieve carrier connection.
summary: Retrieve a connection
parameters:
- in: path
name: id
schema:
type: string
required: true
tags:
- Connections
security:
- TokenBasic: []
- Token: []
- OAuth2: []
- JWT: []
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/CarrierConnection'
description: ''
'400':
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
description: ''
'500':
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
description: ''
x-operationId: retrieveCarrierConnection
patch:
operationId: '&&&update'
description: Update a carrier connection.
summary: Update a connection
parameters:
- in: path
name: id
schema:
type: string
required: true
tags:
- Connections
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/PatchedCarrierConnectionData'
security:
- TokenBasic: []
- Token: []
- OAuth2: []
- JWT: []
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/CarrierConnection'
description: ''
'400':
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
description: ''
'404':
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
description: ''
'500':
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
description: ''
x-operationId: updateCarrierConnection
delete:
operationId: '&&&remove'
description: Remove a carrier connection.
summary: Remove a carrier connection
parameters:
- in: path
name: id
schema:
type: string
required: true
tags:
- Connections
security:
- TokenBasic: []
- Token: []
- OAuth2: []
- JWT: []
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/CarrierConnection'
description: ''
'404':
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
description: ''
'409':
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
description: ''
'500':
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
description: ''
x-operationId: removeCarrierConnection
components:
schemas:
dtdc:
type: object
properties:
api_key:
type: string
customer_code:
type: string
username:
type:
- string
- 'null'
password:
type:
- string
- 'null'
account_country_code:
type:
- string
- 'null'
default: IN
required:
- api_key
- customer_code
sapient:
type: object
properties:
client_id:
type: string
client_secret:
type: string
shipping_account_id:
type: string
sapient_carrier_code:
enum:
- DX
- EVRI
- RM
- UPS
- YODEL
type: string
x-spec-enum-id: 24b797aea0df4a45
description: Indicates a sapient_carrier_code string
account_country_code:
type:
- string
- 'null'
default: GB
required:
- client_id
- client_secret
- shipping_account_id
usps:
type: object
properties:
client_id:
type: string
client_secret:
type: string
account_number:
type:
- string
- 'null'
account_type:
enum:
- EPS
- PERMIT
- METER
type: string
x-spec-enum-id: e8d4abea89e0d6bd
description: Indicates a account_type string
manifest_MID:
type:
- string
- 'null'
CRID:
type:
- string
- 'null'
MID:
type:
- string
- 'null'
account_country_code:
type:
- string
- 'null'
default: US
required:
- client_id
- client_secret
asendia:
type: object
properties:
username:
type: string
password:
type: string
customer_id:
type:
- string
- 'null'
account_country_code:
type:
- string
- 'null'
required:
- password
- username
fedex:
type: object
properties:
api_key:
type:
- string
- 'null'
secret_key:
type:
- string
- 'null'
account_number:
type:
- string
- 'null'
track_api_key:
type:
- string
- 'null'
track_secret_key:
type:
- string
- 'null'
account_country_code:
type:
- string
- 'null'
locate2u:
type: object
properties:
client_id:
type:
- string
- 'null'
client_secret:
type:
- string
- 'null'
account_country_code:
type:
- string
- 'null'
default: AU
shipengine:
type: object
properties:
api_key:
type: string
carrier_ids:
type:
- string
- 'null'
account_number:
type:
- string
- 'null'
account_country_code:
type:
- string
- 'null'
required:
- api_key
royalmail:
type: object
properties:
client_id:
type: string
client_secret:
type: string
account_country_code:
type:
- string
- 'null'
default: UK
required:
- client_id
- client_secret
purolator:
type: object
properties:
username:
type: string
password:
type: string
account_number:
type: string
user_token:
type:
- string
- 'null'
language:
enum:
- en
- fr
type: string
x-spec-enum-id: e4be23cf445bc4cb
description: Indicates a language string
account_country_code:
type:
- string
- 'null'
default: CA
required:
- account_number
- password
- username
tnt:
type: object
properties:
username:
type: string
password:
type: string
account_number:
type:
- string
- 'null'
account_country_code:
type:
- string
- 'null'
required:
- password
- username
landmark:
type: object
properties:
username:
type: string
password:
type: string
client_id:
type: string
account_number:
type:
- string
- 'null'
region:
type:
- string
- 'null'
default: Landmark CMH
account_country_code:
type:
- string
- 'null'
required:
- client_id
- password
- username
hermes:
type: object
properties:
username:
type: string
password:
type: string
client_id:
type: string
client_secret:
type: string
account_country_code:
type:
- string
- 'null'
default: DE
required:
- client_id
- client_secret
- password
- username
ErrorMessages:
type: object
properties:
messages:
type: array
items:
$ref: '#/components/schemas/Message'
description: The list of error messages
geodis:
type: object
properties:
api_key:
type: string
identifier:
type: string
code_client:
type:
- string
- 'null'
language:
enum:
- fr
- en
type: string
x-spec-enum-id: e4be23cf445bc4cb
description: Indicates a language string
account_country_code:
type:
- string
- 'null'
default: FR
required:
- api_key
- identifier
smartkargo:
type: object
properties:
api_key:
type: string
account_number:
type: string
account_country_code:
type:
- string
- 'null'
required:
- account_number
- api_key
sendle:
type: object
properties:
sendle_id:
type: string
api_key:
type: string
account_country_code:
type:
- string
- 'null'
required:
- api_key
- sendle_id
veho:
type: object
properties:
api_key:
type: string
account_number:
type:
- string
- 'null'
account_country_code:
type:
- string
- 'null'
required:
- api_key
tge:
type: object
properties:
username:
type: string
password:
type: string
api_key:
type: string
toll_username:
type: string
toll_password:
type: string
my_toll_token:
type: string
my_toll_identity:
type: string
account_code:
type:
- string
- 'null'
sscc_count:
type: integer
shipment_count:
type: integer
account_country_code:
type:
- string
- 'null'
default: AU
required:
- api_key
- my_toll_identity
- my_toll_token
- password
- toll_password
- toll_username
- username
canadapost:
type: object
properties:
username:
type: string
password:
type: string
customer_number:
type:
- string
- 'null'
contract_id:
type:
- string
- 'null'
language:
enum:
- en
- fr
type: string
x-spec-enum-id: e4be23cf445bc4cb
description: Indicates a language string
account_country_code:
type:
- string
- 'null'
default: CA
required:
- password
- username
colissimo:
type: object
properties:
password:
type: string
contract_number:
type: string
laposte_api_key:
type:
- string
- 'null'
account_country_code:
type:
- string
- 'null'
default: FR
required:
- contract_number
- password
dpd:
type: object
properties:
delis_id:
type: string
password:
type: string
depot:
type:
- string
- 'null'
message_language:
type:
- string
- 'null'
default: en_EN
account_country_code:
type:
- string
- 'null'
default: BE
required:
- delis_id
- password
seko:
type: object
properties:
access_key:
type: string
account_country_code:
type:
- string
- 'null'
required:
- access_key
nationex:
type: object
properties:
api_key:
type: string
customer_id:
type: string
billing_account:
type:
- string
- 'null'
language:
enum:
- en
- fr
type: string
x-spec-enum-id: e4be23cf445bc4cb
description: Indicates a language string
account_country_code:
type:
- string
- 'null'
default: CA
required:
- api_key
- customer_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)
postat:
type: object
properties:
client_id:
type: string
org_unit_id:
type: string
org_unit_guid:
type: string
account_country_code:
type:
- string
- 'null'
default: AT
required:
- client_id
- org_unit_guid
- org_unit_id
dhl_express:
type: object
properties:
site_id:
type: string
password:
type: string
account_number:
type:
- string
- 'null'
account_country_code:
type:
- string
- 'null'
required:
- password
- site_id
chronopost:
type: object
properties:
account_number:
type: string
password:
type: string
id_emit:
type:
- string
- 'null'
default: CHRFR
language:
enum:
- en_GB
- fr_FR
type: string
x-spec-enum-id: 497f777dd9f49678
description: Indicates a language string
account_country_code:
type:
- string
- 'null'
default: FR
required:
- account_number
- password
dhl_parcel_de:
type: object
properties:
username:
type:
- string
- 'null'
password:
type:
- string
- 'null'
client_id:
type:
- string
- 'null'
client_secret:
type:
- string
- 'null'
account_country_code:
type:
- string
- 'null'
default: DE
mydhl:
type: object
properties:
username:
type: string
password:
type: string
account_number:
type:
- string
- 'null'
account_country_code:
type:
- string
- 'null'
required:
- password
- username
ErrorResponse:
type: object
properties:
errors:
type: array
items:
$ref: '#/components/schemas/APIError'
description: The list of API errors
ConnectionCredentialsField:
oneOf:
- $ref: '#/components/schemas/aramex'
- $ref: '#/components/schemas/asendia'
- $ref: '#/components/schemas/asendia_us'
- $ref: '#/components/schemas/australiapost'
- $ref: '#/components/schemas/boxknight'
- $ref: '#/components/schemas/bpost'
- $ref: '#/components/schemas/canadapost'
- $ref: '#/components/schemas/canpar'
- $ref: '#/components/schemas/chronopost'
- $ref: '#/components/schemas/colissimo'
- $ref: '#/components/schemas/dhl_express'
- $ref: '#/components/schemas/dhl_parcel_de'
- $ref: '#/components/schemas/dhl_poland'
- $ref: '#/components/schemas/dhl_universal'
- $ref: '#/components/schemas/dicom'
- $ref: '#/components/schemas/dpd'
- $ref: '#/components/schemas/dpd_meta'
- $ref: '#/components/schemas/dtdc'
- $ref: '#/components/schemas/easypost'
- $ref: '#/components/schemas/easyship'
- $ref: '#/components/schemas/eshipper'
- $ref: '#/components/schemas/fedex'
- $ref: '#/components/schemas/freightcom'
- $ref: '#/components/schemas/generic'
- $ref: '#/components/schemas/geodis'
- $ref: '#/components/schemas/gls'
- $ref: '#/components/schemas/hay_post'
- $ref: '#/components/schemas/hermes'
- $ref: '#/components/schemas/landmark'
- $ref: '#/components/schemas/laposte'
- $ref: '#/components/schemas/locate2u'
- $ref: '#/components/schemas/mydhl'
- $ref: '#/components/schemas/nationex'
- $ref: '#/components/schemas/parcelone'
- $ref: '#/components/schemas/postat'
- $ref: '#/components/schemas/purolator'
- $ref: '#/components/schemas/roadie'
- $ref: '#/components/schemas/royalmail'
- $ref: '#/components/schemas/sapient'
- $ref: '#/components/schemas/seko'
- $ref: '#/components/schemas/sendle'
- $ref: '#/components/schemas/shipengine'
- $ref: '#/components/schemas/smartkargo'
- $ref: '#/components/schemas/spring'
- $ref: '#/components/schemas/teleship'
- $ref: '#/components/schemas/tge'
- $ref: '#/components/schemas/tnt'
- $ref: '#/components/schemas/ups'
- $ref: '#/components/schemas/usps'
- $ref: '#/components/schemas/usps_international'
- $ref: '#/components/schemas/veho'
- $ref: '#/components/schemas/zoom2u'
dpd_meta:
type: object
properties:
dpd_login:
type:
- string
- 'null'
dpd_password:
type:
- string
- 'null'
dpd_client_id:
type:
- string
- 'null'
dpd_client_secret:
type:
- string
- 'null'
dpd_bucode:
type:
- string
- 'null'
customer_id:
type:
- string
- 'null'
customer_account_number:
type:
- string
- 'null'
customer_sub_account_number:
type:
- string
- 'null'
account_country_code:
type:
- string
- 'null'
dhl_universal:
type: object
properties:
consumer_key:
type: string
consumer_secret:
type: string
language:
enum:
- en
- de
type: string
x-spec-enum-id: fe98ee970a2fed33
description: Indicates a language string
account_country_code:
type:
- string
- 'null'
default: DE
required:
- consumer_key
- consumer_secret
ups:
type: object
properties:
client_id:
type: string
client_secret:
type: string
account_number:
type:
- string
- 'null'
account_country_code:
type:
- string
- 'null'
required:
- client_id
- client_secret
easypost:
type: object
properties:
api_key:
type: string
account_country_code:
type:
- string
- 'null'
required:
- api_key
freightcom:
type: object
properties:
username:
type: string
password:
type: string
account_country_code:
type:
- string
- 'null'
required:
- password
- username
dhl_poland:
type: object
properties:
username:
type: string
password:
type: string
account_number:
type:
- string
- 'null'
account_country_code:
type:
- string
- 'null'
default: PL
required:
- password
- username
CarrierConnectionList:
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/CarrierConnection'
required:
- results
spring:
type: object
properties:
api_key:
type: string
account_country_code:
type:
- string
- 'null'
required:
- api_key
CarrierConnection:
type: object
description: 'Response serializer for carrier connections.
Note: Credentials are write-only and never returned in API responses.
Use CarrierConnectionData for create and CarrierConnectionUpdateData for update.'
properties:
id:
type: string
description: A unique carrier connection identifier
object_type:
type: string
default: carrier-connection
description: Specifies the object type
carrier_name:
enum:
- 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
type: string
x-spec-enum-id: ae0f7f0940fb5243
description: A carrier connection type.
display_name:
type: string
description: The carrier connection type verbose name.
carrier_id:
type: string
description: A carrier connection friendly name.
readOnly: true
capabilities:
type:
- array
- 'null'
items:
type: string
description: The carrier enabled capabilities.
config:
type: object
additionalProperties: {}
default: {}
description: Carrier connection custom config.
metadata:
type: object
additionalProperties: {}
default: {}
description: User metadata for the carrier.
is_system:
type: boolean
description: The carrier connection is provided by the system admin.
readOnly: true
active:
type: boolean
description: The active flag indicates whether the carrier account is active or not.
test_mode:
type: boolean
description: The test flag indicates whether to use a carrier configured for test.
required:
- active
- carrier_id
- carrier_name
- id
- is_system
- test_mode
asendia_us:
type: object
properties:
username:
type: string
password:
type: string
api_key:
type: string
account_number:
type:
- string
- 'null'
account_country_code:
type:
- string
- 'null'
default: US
required:
- api_key
- password
- username
dicom:
type: object
properties:
username:
type: string
password:
type: string
billing_account:
type:
- string
- 'null'
account_country_code:
type:
- string
- 'null'
required:
- password
- username
aramex:
type: object
properties:
username:
type: string
password:
type: string
account_pin:
type: string
account_entity:
type: string
account_number:
type: string
account_country_code:
type: string
required:
- account_country_code
- account_entity
- account_number
- acco
# --- truncated at 32 KB (42 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/karrio/refs/heads/main/openapi/karrio-connections-api-openapi.yml