curl --request GET \
--url https://api.voice.mergenlab.ai/v1/reachability-checks \
--header 'Authorization: Bearer <token>'const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.voice.mergenlab.ai/v1/reachability-checks', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://api.voice.mergenlab.ai/v1/reachability-checks"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text){
"data": [
{
"id": "rch_4e7b1c9d2a3f4e5b8c6d7a8b9c0d1e2f",
"status": "running",
"mode": "answer",
"from": "+9180XXXXXX79",
"hold_sec": 12,
"ring_sec": null,
"ring_timeout_sec": 45,
"machine_detection": true,
"answer_message": "नमस्ते, यह Credfin से कॉल है। हमारी टीम आपको जल्द ही कॉल करेगी।",
"max_attempts": 2,
"retry_delays_min": [
5
],
"created_at": "2026-10-12T05:20:00.012Z",
"updated_at": "2026-10-12T05:20:00.012Z",
"completed_at": null,
"canceled_at": null,
"counts": {
"total": 3,
"pending": 1,
"dialling": 0,
"reachable": 1,
"voicemail": 0,
"no_answer": 0,
"ringing": 0,
"switched_off": 0,
"busy": 0,
"failed": 0,
"invalid": 0,
"skipped": 1,
"canceled": 0
},
"cost": {
"amount_micros": 650000,
"currency": "INR",
"status": "pending"
},
"metadata": {
"campaign": "dpd-8-30-morning"
}
}
],
"next_cursor": null
}List reachability checks
Checks newest first (the ones campaigns created only with include_campaign=true). Unknown query parameters are rejected (422).
curl --request GET \
--url https://api.voice.mergenlab.ai/v1/reachability-checks \
--header 'Authorization: Bearer <token>'const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.voice.mergenlab.ai/v1/reachability-checks', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://api.voice.mergenlab.ai/v1/reachability-checks"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text){
"data": [
{
"id": "rch_4e7b1c9d2a3f4e5b8c6d7a8b9c0d1e2f",
"status": "running",
"mode": "answer",
"from": "+9180XXXXXX79",
"hold_sec": 12,
"ring_sec": null,
"ring_timeout_sec": 45,
"machine_detection": true,
"answer_message": "नमस्ते, यह Credfin से कॉल है। हमारी टीम आपको जल्द ही कॉल करेगी।",
"max_attempts": 2,
"retry_delays_min": [
5
],
"created_at": "2026-10-12T05:20:00.012Z",
"updated_at": "2026-10-12T05:20:00.012Z",
"completed_at": null,
"canceled_at": null,
"counts": {
"total": 3,
"pending": 1,
"dialling": 0,
"reachable": 1,
"voicemail": 0,
"no_answer": 0,
"ringing": 0,
"switched_off": 0,
"busy": 0,
"failed": 0,
"invalid": 0,
"skipped": 1,
"canceled": 0
},
"cost": {
"amount_micros": 650000,
"currency": "INR",
"status": "pending"
},
"metadata": {
"campaign": "dpd-8-30-morning"
}
}
],
"next_cursor": null
}Authorizations
Authorization: Bearer vg_live_<32 hex characters>. Keys are issued by Mergen admins and shown once.
Missing or invalid key: 401 unauthorized. Suspended account: 403 tenant_suspended.
Query Parameters
Only checks with this status.
running (dialling), waiting_window (outside your calling hours, numbers wait), queued (paused on our side,
for example reachability was disabled after creation), then completed or canceled.
queued, running, waiting_window, completed, canceled Only answer checks or only ring checks.
answer (default): wait for a pick-up, hold the line hold_sec seconds and hang up. ring: hang up as soon as
the phone has rung ring_sec seconds; nobody needs to pick up (the customer sees a missed call).
answer, ring true also lists the ones your campaigns created (one per contact step; by default they are left out: see each campaign's contacts).
true, false Only items created at or after this instant (ISO 8601 with Z or an offset).
Only items created at or before this instant (ISO 8601 with Z or an offset).
Page size.
1 <= x <= 100next_cursor of the previous page.
1