Skip to main content

The four headers

Every request to the PontisGlobe API must carry these headers:

The request envelope

The HTTP body is always:
The data field is your real payload, encrypted with AES-256-GCM using your Encryption Secret. The blob format is iv:tag:ciphertext, each component base64url-encoded:

Sign in 3 steps

1

Encrypt the body

AES-256-GCM with a random 12-byte IV. The key is your Encryption Secret (base64url, 32 bytes after decoding).
2

Sign timestamp + encrypted body

HMAC-SHA256 over the literal string "${timestamp}.${enc}", hex-encoded.
3

Send

The 15-minute JWT

POST /api/v1/user/login returns:
Pass the access_token as Authorization: Bearer <token> on every endpoint that requires authentication. Tokens are bound to:
  • Your consumer account (regenerating credentials invalidates active tokens immediately)
  • The mode (a live JWT cannot be used in sandbox and vice versa)
Re-login when you receive 401 unauthorized with code jwt_expired.

Replay protection

We reject requests where x-timestamp drifts more than 5 minutes from server time. Keep your client’s clock in sync (NTP).

Why all of this?