Overview
Every request to/api/v1/partner/* is authenticated with your API key and an HMAC-SHA256 signature. This proves the request came from you, was not tampered with, and cannot be replayed.
Required Headers
Every request must include all four of these headers:Headless sessions: On calls made after you start a journey (poll, action, redirect-returned), also send the per-journey
journeySession in the X-Journey-Session header (or the journey_session cookie). Never put it in Authorization, which is reserved for the API key.The Canonical Signing String
Build this exact length-prefixed string, then HMAC-SHA256 it with yoursigningSecret and hex-encode the result:
Field Definitions
Example Signing String
For a POST to/api/v1/partner/journey/initiate:
Nonce & Timestamp Rules
Nonce Rules
- Printable ASCII, 1–200 characters
- Single-use — a replayed nonce is rejected with
401 - A UUID v4 is recommended
Timestamp Rules
- Whole seconds (Unix epoch)
- Tolerance: ±300 seconds from server time
- Requests outside the window are rejected with
401
Node.js Signing Helper
Drop-in helper that produces the signed headers. Thex-signature it returns is what the curl examples in this guide show as <computed-hex>.