Base URL
Endpoint
Authentication
Pass the per-number outbound webhook token via one of these headers:- Scoped to a single phone number — the
from_numberin the request must match the number the token belongs to. - Shown once at generation time; only a secure hash is stored.
- Revocable at any time from the portal.
Request body
Standard format
GHL native format (auto-detected)
GoHighLevel workflows send a flatcustomData envelope. The integration gateway detects this automatically — no configuration needed.
A body is treated as GHL format when it has no top-level
from_number but has a customData.from_number.
Dynamic variables
Any key indynamic_variables (or GHL dynamicdata_<name>) becomes a {{key}} substitution in the agent’s system prompt and greeting message.
Example:
Agent system prompt:
dynamic_variables are left as {{key}} — no error is thrown, but the agent will speak the literal placeholder.
Rate limiting
Rate limit headers are included on every response:
Response
Success (200 OK)
trunk_mode is either "byo" (partner’s own Twilio/Telnyx trunk) or "shared" (Knotie’s shared trunk).
Error
Error codes
The call-related failures (
NO_OUTBOUND_TRUNK, DISPATCH_FAILED, CALL_REJECTED, CALL_NO_ANSWER, SIP_TRUNK_FAILURE) all return HTTP 422 with a JSON body — rather than a 5xx status — so your integration always receives a machine-readable error you can act on.Full example — curl
Compatibility note
The Knova response envelope is intentionally identical to the Retell outbound response shape. If you already handle Retell outbound call responses in your integration, you do not need to update your response-handling code when switching a number to a Knova agent.Related
- Knova Outbound Calling guide — step-by-step setup for portal test, GHL, n8n, and Facebook Lead Ads
- Knova Agents overview — manage Knova agents
- Phone numbers — import and assign numbers