| Prefix | Environment | Behavior |
|---|---|---|
yt_live_… | Live | Real PSTN dialing, real charges, webhooks to your production URL. |
yt_test_… | Test | Sandbox: DB writes + webhooks fire, but no PSTN originate. |
What changes in test mode
| Surface | Live | Test |
|---|---|---|
POST /api/v1/campaigns | Creates row | Creates row (identical) |
POST /api/v1/leads | Inserts lead | Inserts lead (identical) |
POST /api/campaigns/{id}/start | Starts dialer + originates | Starts dialer, no originate |
| Call recordings | Real audio | No recording created |
| Webhooks | POSTed to subscription’s url | POSTed to test_url if set, else url |
| Rate limits | Enforced | Enforced (identical) |
| DND scrub | Enforced | Enforced (identical) |
Webhook subscription test_url
When creating a webhook subscription, you can optionally settest_url to a separate endpoint. Test-environment events POST there
instead of the production url. Common pattern:
How webhooks indicate environment
Every webhook delivery’sdata includes the originating call /
campaign, which carries the environment pinned at dial time (via
calls.dial_mode and related fields). To distinguish explicitly,
add a custom header or inspect the key that triggered the event —
we’ll add environment to the envelope in v1.1.