Authentication
Token Format
The Agent Token uses a three-part structure, separated by .:
{agent_api_key}.{timestamp}.{signature}| Part | Type | Description | Example |
|---|---|---|---|
agent_api_key | string | Your API Key | a9f3c28d7b1e4f90c2a1b3d4 |
timestamp | string | Current Unix timestamp (seconds) | 1743055200 |
signature | string | HMAC-SHA256 signature (lowercase hex) | a1b2c3d4e5... |
Signature Algorithm
signature = HMAC-SHA256(agent_api_key + "." + timestamp, agent_api_secret) → lowercase hexGeneration Steps
Get current timestamp
Unix timestamp in seconds, e.g.1743055200Concatenate the raw string
raw_string = agent_api_key + "." + timestampCompute HMAC-SHA256 signature
signature = HMAC-SHA256(raw_string, agent_api_secret)Convert to lowercase hex string
Assemble the Token
token = agent_api_key + "." + timestamp + "." + signatureSet HTTP Header
Authorization: Bearer {token}
Token Expiration
The timestamp in the Token must be within ±2 minutes of the server's current time, otherwise the request will be rejected. Ensure your server clock is accurate (NTP sync recommended).
Server-Side Verification Flow
Steps the server performs upon receiving a request:
- Extract Token — Get Token from
Authorization: Bearer {token}header - Split Token — Split by
.intoagent_api_key,timestamp,signature - Verify timestamp — Confirm timestamp is within 2 minutes of server time
- Lookup secret — Use
agent_api_keyto retrieveagent_api_secretfrom database - Verify signature — Recompute HMAC-SHA256 with the secret and compare against signature
Mutual Signature Verification
To ensure API security, the authentication mechanism for mutual calls is defined as follows:
- Agent calls VCT Platform (API Endpoints): The Agent must generate a Token according to the steps above and include it in the
Authorization: Bearer {token}request header, which the VCT platform verifies. - VCT Platform calls Agent (Callback/Webhook Endpoints): When the VCT platform sends balance, offline reclaim, or other callback requests to the Agent, the request must include an Authorization header. The Agent must verify the Header before verifying the request body's
sign. The Header and Body must use exactly the same Unix timestamp:- Header format:
Authorization: Bearer {agent_api_key}.{timestamp}.{header_signature} - Header signature:
header_signature = HMAC-SHA256(agent_api_key + "." + timestamp, agent_api_secret), encoded as lowercase hex agent_api_keymust use the Secret belonging to the same Agent; do not try multiple Secrets- For single-player callbacks (
/balance,/offline, includinglaunch_failed):signature = HMAC-SHA256(username + "." + timestamp, agent_api_secret) - For wager data push (
/bet-push):signature = HMAC-SHA256(agent_api_key + "." + timestamp, agent_api_secret)The Agent system should process the request only after thesignfield matches the calculated signature.
- Header format: