Not available yet
Finn doesn't have an inbound call webhook yet. When someone calls one of your numbers, Finn doesn't contact your server to choose an agent, set variables, reject the call or transfer it. The Finn assigned to that number answers.
Earlier versions of this page described a request and response format, a latency budget, reject and transfer actions and a finn inbound simulate command. None of these exist. If you built against them, those requests never arrive.
The Inbound webhook URL field
A Finn's Deployment settings has an Inbound webhook URL field under Phone. Finn saves the URL, and Initialize sends one test request to it:
{
"event": "inbound_call.test",
"finn_id": "8f14e45f-ceea-467a-9f6a-1c0e5b2a77d1",
"org_id": "3c1a9f52-0d77-4a6e-9b21-8e4c5f7d2a10",
"test": true,
"sent_at": "2026-09-18T11:02:44.000Z"
}
If a signing secret is set, the test includes X-Finn-Signature: t=<unix>,v1=<hex>, signed the same way as webhook deliveries. The URL must be public https; private and internal addresses are refused. A 2xx response marks the URL verified.
Finn doesn't call this URL during real calls. Saving it doesn't change how calls are answered.
What to use instead
| You want to | Use |
|---|---|
| Choose which agent answers a number | Assign the number to a Finn with POST /api/v1/deployments/inbound (see api-deployments) or in the dashboard. |
| Route different callers to different agents | Give each agent its own number. |
| Personalize a call with your own data | For outbound calls, add the data to the audience contacts (see api-audiences). |
| Act on a call after it ends | The call.completed webhook. |