Karrio · AsyncAPI Specification
Karrio Webhooks
Version
View Spec
View on GitHub
ShippingLogisticsLabel GenerationPackage TrackingCarriersFulfillmentOpen-SourceMulti-CarrierRatingWebhookAsyncAPIEvents
AsyncAPI Specification
generated: '2026-08-27'
method: derived
source: >-
The `enabled_events` enum on the Webhook / WebhookData / PatchedWebhookData schemas in
openapi/karrio-api-openapi.yml (Karrio API 2026.1.32) — the authoritative catalog —
cross-read against https://karrio.io/docs/products/webhooks and
https://karrio.io/docs/products/events.
provider: Karrio
providerId: karrio
type: Webhooks
asyncapi_published: false
description: >-
Karrio has a real event surface and manages it through the REST API — webhooks are
first-class objects with full CRUD plus a test-fire operation. It publishes NO AsyncAPI
document, so the event catalog has to be read out of an enum inside the OpenAPI. Doing
that turns up a discrepancy worth knowing about before you build against the docs.
event_catalog:
authoritative_source: 'Webhook.enabled_events enum in the OpenAPI (x-spec-enum-id 7310794d8b16bdaf)'
naming: snake_case, no dots
count: 20
wildcard: all
events:
- shipment_purchased
- shipment_cancelled
- shipment_fulfilled
- shipment_out_for_delivery
- shipment_needs_attention
- shipment_delivery_failed
- tracker_created
- tracker_updated
- pickup_scheduled
- pickup_cancelled
- pickup_closed
- order_created
- order_updated
- order_fulfilled
- order_cancelled
- order_delivered
- batch_queued
- batch_failed
- batch_running
- batch_completed
documentation_discrepancy:
severity: high
detail: >-
https://karrio.io/docs/products/webhooks shows a create-webhook payload subscribing to
"shipment.created", "shipment.purchased", "tracking.status_updated",
"tracking.delivered" and "order.fulfilled". Only ONE of those five ("order.fulfilled"
-> order_fulfilled) has a counterpart in the contract's enum, and even that one is
spelled differently. The contract uses snake_case with no dots; there is no
shipment_created, no tracking_* namespace and no tracking_delivered event at all
(delivery is tracker_updated, or shipment_out_for_delivery /
shipment_delivery_failed). An integrator who copies the documented payload will be
rejected by the enum.
affected_page: https://karrio.io/docs/products/webhooks
contract_wins: true
management:
api: rest
operations:
- operationId: '$$$$$$$list'
method: GET
path: /v1/webhooks
- operationId: '$$$$$$$create'
method: POST
path: /v1/webhooks
- operationId: '$$$$$$$retrieve'
method: GET
path: '/v1/webhooks/{id}'
- operationId: '$$$$$$$update'
method: PATCH
path: '/v1/webhooks/{id}'
- operationId: '$$$$$$$remove'
method: DELETE
path: '/v1/webhooks/{id}'
- operationId: '$$$$$$$test'
method: POST
path: '/v1/webhooks/{id}/test'
- operationId: '$$$$$$$$resend_webhooks'
method: POST
path: /v1/batches/webhooks
subscription_object:
url: HTTPS endpoint to deliver to
enabled_events: array from the enum above
secret: header signature secret
disabled: boolean
last_event_at: datetime of last delivery
test_mode: boolean
delivery:
retries: true
strategy: exponential backoff
dead_letter: true
replay: POST /v1/batches/webhooks (resend_webhooks)
signature_verification: true
signature_mechanism: >-
Shared secret stored on the webhook object and used to sign a request header. Karrio
does not publish the header name or the signature algorithm on any page found, which
is a gap — a consumer cannot implement verification from the published docs alone.
monitoring: >-
Delivery counts and last response status are exposed on the webhook object; full
delivery history is in the GraphQL events/api_logs surface.
event_object:
source: GraphQL Event type (management API)
fields:
- id
- type
- data
- test_mode
- pending_webhooks
- created_at
streaming:
available: true
tier: Insiders
note: >-
Continuous event streams, event history and custom handlers are documented at
https://karrio.io/docs/products/events and marked Insiders. Queried through the
GraphQL `events` connection with page_info cursor pagination — note that this is
cursor-based, unlike the REST API's offset pagination.
asyncapi:
published: false
probed:
- url: https://karrio.io/asyncapi.yml
status: 404
- url: https://karrio.io/asyncapi.json
status: 404
note: >-
No asyncapi document exists anywhere in github.com/karrioapi/karrio (6,469 paths
searched) and none is served. The enum above is the closest thing to a machine-
readable event catalog Karrio publishes.
maintainers:
- FN: Kin Lane
email: kin@apievangelist.com
Work with this as data
Every AsyncAPI spec here is available over the APIs.io API and to AI agents over MCP.
MCP server
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
Tools for asyncapi
4 MCP tools reach this
find_asyncapisBrowse and filter every AsyncAPI spec in the catalog.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.
Call it yourself
curl for this page
This AsyncAPI spec
curl "https://apis.io/api/v1/asyncapis/karrio-webhooks"
All asyncapi
curl "https://apis.io/api/v1/asyncapis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
Get an API key
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.