Documentation Index
Fetch the complete documentation index at: https://docs.vmeg.ai/llms.txt
Use this file to discover all available pages before exploring further.
Why verify
Your webhook URL is public. Without checks, a forged completion POST could be mistaken for a real task result. Verify every callback before you parse the JSON.Signing scheme
VMEG signs each webhook POST with HMAC-SHA256:- You configure a Webhook URL on API Configuration. VMEG generates a Webhook Secret on that page — copy it to your server; you never send it in the callback.
- When a task completes, VMEG POSTs the JSON body to your URL and attaches:
X-Timestamp— send time in Unix milliseconds (string)X-Signature— hex (base16) string ofHMAC-SHA256(secret, X-Timestamp + rawBody)
- Your endpoint recomputes the same HMAC with your copy of the secret. If it matches
X-Signature, the sender is VMEG and the body was not tampered with. Reject callbacks whose timestamp is more than 300 seconds from your server clock (replay protection).
How to verify
- Read
X-TimestampandX-Signaturefrom the request headers. - Reject if
X-Timestampis outside the 300-second window. - Hash the raw request body bytes — do not re-serialize JSON, pretty-print, sort keys, or change whitespace.
- Compare your computed hex to
X-Signature(exact match; do not transform case).
401 or 403 on failure. Still respond promptly.
Examples
After verification
- Parse JSON and route on
event(openapi-tts,openapi-translate,openapi-clone-voice, oropenapi-media-translation) — see Webhook request body. - Process
datausing the Callbacks schema on the matchingcreate-asyncendpoint in API reference. - Return 2xx immediately; queue long-running work.

