Skip to main content
All requests to the external API gateway require authentication headers. These headers validate the request and ensure secure access to your organization’s data.

Authentication Architecture & Signature Flow

The diagram below details how incoming requests are authenticated, timestamp/nonce-verified, signature-checked, and checked against IP whitelists.

Request Headers

Include the following credentials and metadata in your request headers:

Example GET Request


Request Signing (POST / PUT / PATCH)

For all state-changing requests (POST, PUT, PATCH), you must include a cryptographic signature of the JSON payload. This signature ensures payload integrity and authenticity.

How to Generate the Signature

  1. Inject Nonce and Timestamp: Before signing, add nonce (a unique random string) and timestamp (current Unix timestamp as an integer in milliseconds) directly into your JSON payload body.
  2. Base64 Encode Payload: Convert the complete JSON payload into stringified JSON and encode it into a Base64 string.
  3. Compute HMAC-SHA256: Hash the Base64-encoded string using the HMAC-SHA256 algorithm with your Client Secret (e.g., veda_sec_cceac1bd...) as the secret key.
  4. Attach Signature: Include the resulting hexadecimal signature string under the signature field inside your JSON payload body.

Example in Node.js


Authentication Error Responses

Below are the exact JSON error responses returned by the gateway when authentication checks fail:

1. Missing or Invalid Client ID (401 Unauthorized)

2. Missing Header (401 Unauthorized)

3. Expired Timestamp (401 Unauthorized)

4. Nonce Replay Attack Detected (401 Unauthorized)

5. IP Address Not Whitelisted (403 Forbidden)

Last modified on July 27, 2026