Skip to main content

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 your signingSecret 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. The x-signature it returns is what the curl examples in this guide show as <computed-hex>.

Usage Example


Common Authentication Errors