Developers
Get Started
OpenAPI ↗
REST API v1 · Developer previewLive API credentials are not yet generally available. Hosted test access is not enabled.

API reference

Webhooks

Register and list subscriptions in the sandbox; no delivery is sent. Event payloads and signing helpers are available for verification tests. Live dispatch and subscription lifecycle remain launch gaps.

Local sandbox only

Set PX_BASE_URL to http://127.0.0.1:4010/v1. Intended live host: https://api.parcelxpert.com/v1. Live requests are not released. Set PX_IDEMPOTENCY_KEY to one stored unique value per write; replace all example quote and shipment IDs with returned IDs.

Register webhook endpoint

POST/v1/webhook-endpoints

Sandbox registration validates public HTTPS URL shape and returns a signing secret once. It queues fixture events but never sends network traffic. Live subscriptions require encrypted secrets, SSRF checks, durable outbox and worker. Replaying the same registration returns the original response, including its secret: protect idempotency storage. Production access remains disabled. Unreleased server adapters and database controls are under certification; hosted test credentials are unavailable.

Required scope: webhooks:write

Parameters

NameLocationMeaning
Idempotency-Key
required
header8–128 ASCII letters, digits, underscore, dot, colon or hyphen. Account/environment/operation scoped; never reuse for a different request. Sandbox retains keys until reset.

Request body

FieldTypeDescription
url
required
stringPublic HTTPS endpoint. Sandbox registration never sends network traffic.
event_types
required
array
Response schema
FieldTypeDescription
id
required
stringEndpoint ID.
url
required
stringHTTPS URL.
event_types
required
array
status
required
stringactive
created_at
required
stringISO 8601 timestamp with timezone. Responses use UTC Z.
signing_secret
required
stringShow once. Save in your secret manager.
HTTP responses and errors
201Resource created in local sandbox. No live purchase.
400Malformed JSON, cursor or idempotency header.
401Missing, invalid, expired or revoked key.
403Required scope not granted.
404Resource unavailable in this account and environment, or label format unavailable.
405Method not supported.
409Idempotency conflict, request in progress, expired/mismatched quote or cancellation unavailable.
413Body exceeds 256 KiB.
422Schema or capability validation failure.
429Enforced sandbox rate limit reached.
500Unexpected PX failure.
502Provider operation not confirmed. No blind booking retry.
503Provider unavailable or live API not released.

Request example

curl --request POST \
  --url "$PX_BASE_URL/webhook-endpoints" \
  --header "Authorization: Bearer $PX_API_KEY" \
  --header "Content-Type: application/json" \
  --header "Idempotency-Key: $PX_IDEMPOTENCY_KEY" \
  --data '{
  "url": "https://merchant.example.com/webhooks/px",
  "event_types": [
    "shipment.booked",
    "tracking.updated"
  ]
}'

Response example

{
  "id": "wh_test_1",
  "url": "https://merchant.example.com/webhooks/px",
  "event_types": [
    "shipment.booked"
  ],
  "status": "active",
  "created_at": "2026-10-04T10:25:00Z",
  "signing_secret": "whsec_TEST_PLACEHOLDER"
}

List webhook endpoints

GET/v1/webhook-endpoints

Lists this account/environment subscriptions without signing secrets. Revocation/deletion and live dispatcher are launch gaps. Production access remains disabled. Unreleased server adapters and database controls are under certification; hosted test credentials are unavailable.

Required scope: webhooks:write

Response schema
FieldTypeDescription
data
required
array
data[].id
required
stringEndpoint identifier.
data[].url
required
stringHTTPS delivery URL.
data[].event_types
required
array
data[].status
required
stringValues: active, disabled
data[].created_at
required
stringISO 8601 timestamp with timezone. Responses use UTC Z.
HTTP responses and errors
200Success.
400Malformed JSON, cursor or idempotency header.
401Missing, invalid, expired or revoked key.
403Required scope not granted.
404Resource unavailable in this account and environment, or label format unavailable.
405Method not supported.
409Idempotency conflict, request in progress, expired/mismatched quote or cancellation unavailable.
413Body exceeds 256 KiB.
422Schema or capability validation failure.
429Enforced sandbox rate limit reached.
500Unexpected PX failure.
502Provider operation not confirmed. No blind booking retry.
503Provider unavailable or live API not released.

Request example

curl --request GET \
  --url "$PX_BASE_URL/webhook-endpoints" \
  --header "Authorization: Bearer $PX_API_KEY"

Response example

{
  "data": [
    {
      "id": "wh_test_1",
      "url": "https://merchant.example.com/webhooks/px",
      "event_types": [
        "shipment.booked"
      ],
      "status": "active",
      "created_at": "2026-10-04T10:25:00Z"
    }
  ]
}