- Submit lists of phone numbers (CSV or JSON, 100 to 250,000 per request) for processing.
- Subscribe to webhooks that fire as soon as a list is created, finishes processing, or fails — no polling required.
- Fetch signed download URLs for the original list, the processed file, and a filtered “likely answer only” file.
Where to start
| If you want to… | Go here |
|---|---|
| Make your first API call in five minutes | Getting started |
| Look up the request and response shape of an endpoint | Uploads reference · Webhooks reference |
| Build a webhook receiver that verifies signatures correctly | Receiving webhooks |
| Understand error envelopes, rate limits, and retry behaviour | Errors and rate limits |
| Import the spec into Postman / Insomnia / Bruno | OpenAPI specification |
Base URL
All API requests go to:2026-04-23, sent in the api_version field of every webhook payload. Endpoints are versioned in the path (/api/v1/…); the api_version string changes only when webhook payload shapes change.
Conventions used in these docs
- Every endpoint shows three runnable examples — cURL, Node.js / TypeScript (
fetch), and Python (requests). od_live_xxxxxxxx…in examples is a placeholder — replace it with a real key from the in-app developer panel.- Times are ISO 8601 in UTC unless noted (
2026-04-24T12:34:56+00:00). - IDs are UUIDs unless they carry a typed prefix (e.g. event IDs are
evt_…).
Getting help
- Status and incidents — watch your registered webhooks; we deliver events as soon as state changes.
- Bug or question? — email [email protected] with your API key prefix (the first 12 characters that start
od_live_) and a request ID if you have one.