Wakeo Webhooks API
Subscribe customer endpoints to shipment tracking and ETA update events so Wakeo can push enriched data into a TMS, ERP, or MRP. Server-to-endpoint HTTPS webhooks, not WebSocket. Subscription paths are modeled.
Subscribe customer endpoints to shipment tracking and ETA update events so Wakeo can push enriched data into a TMS, ERP, or MRP. Server-to-endpoint HTTPS webhooks, not WebSocket. Subscription paths are modeled.
openapi: 3.0.3
info:
title: Wakeo Visibility API
description: >-
REST API for Wakeo, a multimodal supply-chain visibility platform (sea, air,
road, rail, and parcel). The API lets customers register transport orders /
shipments, retrieve predictive ETAs, positions, and milestone events, and
subscribe to webhooks that push tracking updates back into a TMS, ERP, or
MRP. Wakeo describes its APIs as able to "pull the latest transport orders
and push the latest ETA" into shipper systems.
ACCESS MODEL: Wakeo is an enterprise, customer-provisioned SaaS. The API
reference is published at https://docs.wakeo.co/docs/getting-started behind
a password wall; access is granted by a Customer Success representative or
via support@wakeo.co. As a result this document is a HONEST MODEL, not a
byte-for-byte copy of Wakeo's private reference.
WHAT IS CONFIRMED (2026-07-12):
* Base host https://api.wakeo.co is LIVE and fronted by AWS API Gateway
(unauthenticated requests return HTTP 403 ForbiddenException).
* Authentication is OAuth 2.0 - every request carries
`Authorization: Bearer <ACCESS_TOKEN>` (per Wakeo's published docs).
* The public surface is request/response REST over HTTPS plus webhooks;
no WebSocket (wss://) endpoint is documented.
WHAT IS MODELED (unconfirmed, marked x-wakeo-modeled: true on each path):
* The exact resource paths, path prefix/version, query parameters, and
request/response schemas below are reconstructed from Wakeo's public
capability descriptions (shipment tracking, ETA, positions, events,
webhooks). They must be reconciled against the password-protected
reference before use.
version: '1.0-modeled'
contact:
name: Wakeo Support
url: https://wakeo.co
email: support@wakeo.co
x-api-evangelist-status:
baseHost: confirmed
authentication: confirmed
endpointPaths: modeled
schemas: modeled
reviewer: API Evangelist
reviewed: '2026-07-12'
servers:
- url: https://api.wakeo.co
description: >-
Wakeo production API (confirmed live, AWS API Gateway). The path
structure below, including any version prefix, is modeled and unconfirmed.
security:
- oauth2: []
tags:
- name: Shipments
description: >-
Register and manage tracked shipments / transport orders across sea, air,
road, rail, and parcel. (Modeled.)
- name: Tracking
description: >-
Predictive ETAs, positions, and milestone events for a tracked shipment.
(Modeled.)
- name: Webhooks
description: >-
Subscriptions that push tracking and ETA updates to a customer endpoint.
(Modeled.)
paths:
/v1/shipments:
x-wakeo-modeled: true
get:
operationId: listShipments
tags:
- Shipments
summary: List shipments
description: >-
Lists tracked shipments for the authenticated account. MODELED - query
parameters and response shape are reconstructed, not confirmed.
parameters:
- name: status
in: query
required: false
description: Filter by shipment status (e.g. in_transit, delivered).
schema:
type: string
- name: mode
in: query
required: false
description: Filter by transport mode (sea, air, road, rail, parcel).
schema:
type: string
- name: limit
in: query
required: false
schema:
type: integer
default: 50
responses:
'200':
description: A page of shipments.
content:
application/json:
schema:
type: object
properties:
data:
type: array
items:
$ref: '#/components/schemas/Shipment'
'401':
$ref: '#/components/responses/Unauthorized'
'403':
$ref: '#/components/responses/Forbidden'
post:
operationId: createShipment
tags:
- Shipments
summary: Create a shipment (transport order)
description: >-
Registers a new transport order for Wakeo to track and predict. MODELED
- request body reconstructed from documented capabilities.
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/ShipmentInput'
responses:
'201':
description: The created shipment.
content:
application/json:
schema:
$ref: '#/components/schemas/Shipment'
'401':
$ref: '#/components/responses/Unauthorized'
'403':
$ref: '#/components/responses/Forbidden'
'422':
$ref: '#/components/responses/ValidationError'
/v1/shipments/{shipmentId}:
x-wakeo-modeled: true
parameters:
- $ref: '#/components/parameters/ShipmentId'
get:
operationId: getShipment
tags:
- Shipments
summary: Get a shipment
description: Retrieves a single shipment by its identifier. MODELED.
responses:
'200':
description: The requested shipment.
content:
application/json:
schema:
$ref: '#/components/schemas/Shipment'
'401':
$ref: '#/components/responses/Unauthorized'
'404':
$ref: '#/components/responses/NotFound'
delete:
operationId: deleteShipment
tags:
- Shipments
summary: Stop tracking a shipment
description: Removes a shipment from active tracking. MODELED.
responses:
'204':
description: The shipment tracking was stopped.
'401':
$ref: '#/components/responses/Unauthorized'
'404':
$ref: '#/components/responses/NotFound'
/v1/shipments/{shipmentId}/eta:
x-wakeo-modeled: true
parameters:
- $ref: '#/components/parameters/ShipmentId'
get:
operationId: getShipmentEta
tags:
- Tracking
summary: Get predictive ETA
description: >-
Returns Wakeo's predictive door-to-door ETA for the shipment, blending
tracking data with data-science predictions. MODELED.
responses:
'200':
description: The current predictive ETA.
content:
application/json:
schema:
$ref: '#/components/schemas/Eta'
'401':
$ref: '#/components/responses/Unauthorized'
'404':
$ref: '#/components/responses/NotFound'
/v1/shipments/{shipmentId}/positions:
x-wakeo-modeled: true
parameters:
- $ref: '#/components/parameters/ShipmentId'
get:
operationId: listShipmentPositions
tags:
- Tracking
summary: List positions
description: >-
Returns the geolocation positions recorded for the shipment along its
journey. MODELED.
responses:
'200':
description: A list of positions.
content:
application/json:
schema:
type: object
properties:
data:
type: array
items:
$ref: '#/components/schemas/Position'
'401':
$ref: '#/components/responses/Unauthorized'
'404':
$ref: '#/components/responses/NotFound'
/v1/shipments/{shipmentId}/events:
x-wakeo-modeled: true
parameters:
- $ref: '#/components/parameters/ShipmentId'
get:
operationId: listShipmentEvents
tags:
- Tracking
summary: List milestone events
description: >-
Returns the milestone events (departures, arrivals, port calls,
transshipments, PODs, congestion and disruption alerts) for a shipment.
MODELED.
responses:
'200':
description: A list of milestone events.
content:
application/json:
schema:
type: object
properties:
data:
type: array
items:
$ref: '#/components/schemas/Event'
'401':
$ref: '#/components/responses/Unauthorized'
'404':
$ref: '#/components/responses/NotFound'
/v1/webhooks:
x-wakeo-modeled: true
get:
operationId: listWebhooks
tags:
- Webhooks
summary: List webhook subscriptions
description: Lists the webhook subscriptions for the account. MODELED.
responses:
'200':
description: A list of webhook subscriptions.
content:
application/json:
schema:
type: object
properties:
data:
type: array
items:
$ref: '#/components/schemas/Webhook'
'401':
$ref: '#/components/responses/Unauthorized'
post:
operationId: createWebhook
tags:
- Webhooks
summary: Create a webhook subscription
description: >-
Subscribes a customer endpoint to shipment tracking and ETA update
events, pushing enriched data into a TMS/ERP/MRP. MODELED.
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/WebhookInput'
responses:
'201':
description: The created webhook subscription.
content:
application/json:
schema:
$ref: '#/components/schemas/Webhook'
'401':
$ref: '#/components/responses/Unauthorized'
'422':
$ref: '#/components/responses/ValidationError'
/v1/webhooks/{webhookId}:
x-wakeo-modeled: true
parameters:
- name: webhookId
in: path
required: true
description: The identifier of the webhook subscription.
schema:
type: string
delete:
operationId: deleteWebhook
tags:
- Webhooks
summary: Delete a webhook subscription
description: Removes a webhook subscription. MODELED.
responses:
'204':
description: The webhook subscription was deleted.
'401':
$ref: '#/components/responses/Unauthorized'
'404':
$ref: '#/components/responses/NotFound'
components:
securitySchemes:
oauth2:
type: oauth2
description: >-
OAuth 2.0. Every request must include `Authorization: Bearer
<ACCESS_TOKEN>` (confirmed from Wakeo's published documentation). The
token URL and grant type below are MODELED and must be confirmed against
the password-protected reference.
flows:
clientCredentials:
tokenUrl: https://api.wakeo.co/oauth/token
scopes: {}
parameters:
ShipmentId:
name: shipmentId
in: path
required: true
description: The identifier of the shipment.
schema:
type: string
responses:
Unauthorized:
description: Missing or invalid OAuth 2.0 access token.
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
Forbidden:
description: >-
The request was rejected (AWS API Gateway returns 403 ForbiddenException
for unauthenticated or unauthorized calls).
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
NotFound:
description: The requested resource was not found.
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
ValidationError:
description: The request payload failed validation.
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
schemas:
Error:
type: object
properties:
message:
type: string
code:
type: string
ShipmentInput:
type: object
description: Modeled transport-order input. Fields reconstructed, not confirmed.
required:
- mode
properties:
reference:
type: string
description: Customer transport-order or shipment reference.
mode:
type: string
description: Transport mode.
enum:
- sea
- air
- road
- rail
- parcel
carrier:
type: string
description: Carrier, shipping line, or NVOCC identifier.
trackingNumber:
type: string
description: Container number, AWB, booking, or parcel tracking number.
origin:
type: string
description: Origin location (UN/LOCODE, port, or address).
destination:
type: string
description: Destination location (UN/LOCODE, port, or address).
containerNumber:
type: string
Shipment:
allOf:
- $ref: '#/components/schemas/ShipmentInput'
- type: object
properties:
id:
type: string
status:
type: string
description: Lifecycle status (e.g. in_transit, delivered).
createdAt:
type: string
format: date-time
Eta:
type: object
description: Modeled predictive ETA payload.
properties:
shipmentId:
type: string
estimatedArrival:
type: string
format: date-time
confidence:
type: string
description: Qualitative or numeric confidence in the prediction.
updatedAt:
type: string
format: date-time
Position:
type: object
description: Modeled geolocation position.
properties:
latitude:
type: number
format: double
longitude:
type: number
format: double
timestamp:
type: string
format: date-time
source:
type: string
description: Data source (AIS, telematics, carrier, etc.).
Event:
type: object
description: Modeled milestone / disruption event.
properties:
type:
type: string
description: Event type (departure, arrival, port_call, transshipment, pod, congestion, disruption).
location:
type: string
timestamp:
type: string
format: date-time
description:
type: string
WebhookInput:
type: object
description: Modeled webhook subscription input.
required:
- url
properties:
url:
type: string
format: uri
description: HTTPS endpoint that Wakeo POSTs event payloads to.
events:
type: array
description: Event types to subscribe to (e.g. eta.updated, event.created).
items:
type: string
secret:
type: string
description: Shared secret used to sign webhook payloads.
Webhook:
allOf:
- $ref: '#/components/schemas/WebhookInput'
- type: object
properties:
id:
type: string
createdAt:
type: string
format: date-time