curl -X POST "https://api.telzino.com/v1/retry-policies" \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"name": "Standard",
"rules": {
"no_answer": { "delay_seconds": 10800, "max_attempts": 3, "backoff": "linear" },
"busy": { "delay_seconds": 1200, "max_attempts": 4, "backoff": "exponential" },
"voicemail": { "delay_seconds": 86400, "max_attempts": 2 }
},
"contact_policy": { "max_attempts_per_day": 3, "max_attempts_per_week": 7, "min_seconds_between_attempts": 1800 },
"on_exhausted": "webhook",
"on_exhausted_target": "https://your-system.com/telzino/retries-exhausted"
}'
curl "https://api.telzino.com/v1/retry-policies" \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN"
{
"id": "7f1c2a9e-5d3b-4c8e-9a1f-2b3c4d5e6f70",
"name": "Standard",
"rules": {
"no_answer": { "delay_seconds": 10800, "max_attempts": 3, "backoff": "linear" },
"busy": { "delay_seconds": 1200, "max_attempts": 4, "backoff": "exponential" },
"voicemail": { "delay_seconds": 86400, "max_attempts": 2 }
},
"contact_policy": { "max_attempts_per_day": 3, "max_attempts_per_week": 7, "min_seconds_between_attempts": 1800 },
"on_exhausted": "webhook",
"on_exhausted_target": "https://your-system.com/telzino/retries-exhausted",
"reschedule_out_of_window": false,
"created_at": "2026-09-01T12:00:00.000Z",
"updated_at": "2026-09-01T12:00:00.000Z"
}
{
"error": "conflict",
"error_description": "A retry policy named \"Standard\" already exists"
}
Retry Policies
List / Create Retry Policies
Account-level rulebooks for redialling unanswered outbound calls
POST
/
v1
/
retry-policies
curl -X POST "https://api.telzino.com/v1/retry-policies" \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"name": "Standard",
"rules": {
"no_answer": { "delay_seconds": 10800, "max_attempts": 3, "backoff": "linear" },
"busy": { "delay_seconds": 1200, "max_attempts": 4, "backoff": "exponential" },
"voicemail": { "delay_seconds": 86400, "max_attempts": 2 }
},
"contact_policy": { "max_attempts_per_day": 3, "max_attempts_per_week": 7, "min_seconds_between_attempts": 1800 },
"on_exhausted": "webhook",
"on_exhausted_target": "https://your-system.com/telzino/retries-exhausted"
}'
curl "https://api.telzino.com/v1/retry-policies" \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN"
{
"id": "7f1c2a9e-5d3b-4c8e-9a1f-2b3c4d5e6f70",
"name": "Standard",
"rules": {
"no_answer": { "delay_seconds": 10800, "max_attempts": 3, "backoff": "linear" },
"busy": { "delay_seconds": 1200, "max_attempts": 4, "backoff": "exponential" },
"voicemail": { "delay_seconds": 86400, "max_attempts": 2 }
},
"contact_policy": { "max_attempts_per_day": 3, "max_attempts_per_week": 7, "min_seconds_between_attempts": 1800 },
"on_exhausted": "webhook",
"on_exhausted_target": "https://your-system.com/telzino/retries-exhausted",
"reschedule_out_of_window": false,
"created_at": "2026-09-01T12:00:00.000Z",
"updated_at": "2026-09-01T12:00:00.000Z"
}
{
"error": "conflict",
"error_description": "A retry policy named \"Standard\" already exists"
}
A retry policy says, per outcome, how long to wait and how many times to redial, and can cap how often any one number is called. Assign one to an agent as
defaultRetryPolicyId, or pass its id as retry_policy_id when triggering a call. See Retry Policies for how a chain of attempts behaves.
GET /v1/retry-policies returns every policy on the account. POST creates one.
Request Body (POST)
string
required
Unique within the account. Up to 100 characters.
object
Per-outcome rules, keyed
no_answer, busy, voicemail and failed. An omitted outcome is never retried, and completed can never be retried. Unknown keys are rejected.Each rule:| Field | Type | Range | Description |
|---|---|---|---|
delay_seconds | integer | 60 – 604800 | Wait before the next attempt |
max_attempts | integer | 1 – 10 | Total attempts, counting the first call |
backoff | string | linear (default) or exponential | exponential doubles the wait on every attempt, capped at 7 days |
object | null
Hard caps per destination number, enforced across the account:
max_attempts_per_day (1–50), max_attempts_per_week (1–200), min_seconds_between_attempts (0–604800). A trigger that would break one is refused with 409 policy_violation; a retry that would is cancelled.string
default:"end"
What happens when a chain uses up its attempts without reaching a person:
end, webhook (POST a retries_exhausted event), or notify_email.string | null
Required unless
on_exhausted is end: an https:// URL for webhook, an email address for notify_email.boolean
default:"false"
When an agent with calling hours is asked to call outside them, queue the call for the next window (
202, status scheduled) instead of refusing it with 409 out_of_window.Response
Each policy carriesid, name, rules, contact_policy, on_exhausted, on_exhausted_target, reschedule_out_of_window, created_at and updated_at.
curl -X POST "https://api.telzino.com/v1/retry-policies" \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"name": "Standard",
"rules": {
"no_answer": { "delay_seconds": 10800, "max_attempts": 3, "backoff": "linear" },
"busy": { "delay_seconds": 1200, "max_attempts": 4, "backoff": "exponential" },
"voicemail": { "delay_seconds": 86400, "max_attempts": 2 }
},
"contact_policy": { "max_attempts_per_day": 3, "max_attempts_per_week": 7, "min_seconds_between_attempts": 1800 },
"on_exhausted": "webhook",
"on_exhausted_target": "https://your-system.com/telzino/retries-exhausted"
}'
curl "https://api.telzino.com/v1/retry-policies" \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN"
{
"id": "7f1c2a9e-5d3b-4c8e-9a1f-2b3c4d5e6f70",
"name": "Standard",
"rules": {
"no_answer": { "delay_seconds": 10800, "max_attempts": 3, "backoff": "linear" },
"busy": { "delay_seconds": 1200, "max_attempts": 4, "backoff": "exponential" },
"voicemail": { "delay_seconds": 86400, "max_attempts": 2 }
},
"contact_policy": { "max_attempts_per_day": 3, "max_attempts_per_week": 7, "min_seconds_between_attempts": 1800 },
"on_exhausted": "webhook",
"on_exhausted_target": "https://your-system.com/telzino/retries-exhausted",
"reschedule_out_of_window": false,
"created_at": "2026-09-01T12:00:00.000Z",
"updated_at": "2026-09-01T12:00:00.000Z"
}
{
"error": "conflict",
"error_description": "A retry policy named \"Standard\" already exists"
}
| Code | Meaning |
|---|---|
400 | Invalid request (a rule out of range, a missing on_exhausted_target, an unknown key) |
403 | insufficient_scope — policies belong to the account, so an API key limited to one reseller or organization can read them but not create them |
409 | A policy with that name already exists |
