Voice Webhook Overview

Fast2SMS sends the final result of every called number to your webhook URL as a POST request (JSON or URL-encoded) or GET request. Results are sent once the campaign has finished (after its last retry), so each number's status, talk time and charge are final.

Webhook Panel Form Options

When configuring a webhook in the Fast2SMS Dashboard under CREATE WEBHOOK, the fields correspond to the API parameters as follows:

Field Label in UIAPI ParameterDescription
Webhook NamenameFriendly name for internal tracking.
Select ServiceserviceChoose Voice to configure Voice webhooks.
Select FormattemplateStandard Webhook (custom).
Select EventeventDefault All Events (all), Answered, Not Answered (no_answer), Busy, Failed.
MethodmethodHTTP method (POST, GET, PUT).
URLurlDestination URL to receive payloads.
Content-Typecontent_typeJSON, Form URL Encoded or XML.
X-Payload-Transformpayload_transformStandard or Raw JSON. Shown only when Content-Type is Form URL Encoded.
Webhook Status (Active)statusEnable / disable (active / inactive).
BodypayloadCustom payload with the variables below.

Standard Webhook Payload

Payload Variables

VariableTypeDescription
request_idStringCampaign request id (15 characters, starts with V), as returned by the Send API
campaign_nameStringCampaign name
routeStringAlways voice
mobileStringCalled 10-digit mobile number
statusStringanswered, no_answer, busy or failed
descriptionStringStatus in words, e.g. Call answered
durationIntegerTalk seconds
agent_durationIntegerCall Patch: seconds with your agent
pulsesIntegerPulses charged for this number
amount_debitedStringAmount charged for this number (₹, 4 decimals)
dtmfStringKey pressed (Key Press / Call Patch)
agent_numberStringCall Patch: agent the caller was connected to
start_timeStringCall start, YYYY-MM-DD HH:MM:SS IST
end_timeStringCall end, YYYY-MM-DD HH:MM:SS IST
reasonStringPlain reason when not answered, e.g. Not answered, Number busy, Switched off or not reachable
timestampIntegerUnix time the webhook was sent

Example

{
  "request_id": "VdQkbYrvgtOo2nG",
  "mobile": "9999999999",
  "status": "answered",
  "description": "Call answered",
  "duration": 22,
  "pulses": 2,
  "amount_debited": "0.5000",
  "dtmf": "1",
  "start_time": "2026-11-05 10:30:12",
  "end_time": "2026-11-05 10:30:34",
  "reason": ""
}

Blacklisted and DND numbers are never called, so no webhook is sent for them. Each delivery is listed under Webhooks > Logs in the dashboard.