API reference
The base address is https://api.talismanleads.io/v1. Requests and answers are JSON, apart from upload and download links. Also available as an OpenAPI file.
Your balance
GET/account
Your balance and the limits in force.
Key needs: Read only, or able to place orders
Example request
curl "https://api.talismanleads.io/v1/account" \
-H "Authorization: Bearer tl_live_your_key_here"Example answer (200)
{
"balance": "100.00",
"currency": "USD",
"key": {
"id": "11111111-1111-4111-8111-111111111111",
"scopes": [
"read",
"orders"
]
},
"limits": {
"reads_per_minute": 60,
"result_downloads_per_minute": 30,
"uploads_per_minute": 10,
"estimates_per_minute": 10,
"orders_per_minute": 10,
"open_task_parts": 20
}
}List the checkers
GET/checkers
What this account can order right now, at its prices. A paused or blocked checker is not listed.
Key needs: Read only, or able to place orders
Example request
curl "https://api.talismanleads.io/v1/checkers" \
-H "Authorization: Bearer tl_live_your_key_here"Example answer (200)
{
"checkers": [
{
"id": "whatsapp_status_detection",
"name": "WhatsApp Status Detection",
"input": "phone",
"price": {
"amount": "3.00",
"per_entries": 10000,
"currency": "USD"
},
"minimum_entries": 0,
"minimum_billed_entries": 2000,
"calling_code": null
}
]
}Upload a large list
POST/uploads
A link to send a file to, straight to storage. Send it with PUT and the headers given. The link lasts 2 hours.
Key needs: Able to place orders
Body
size_bytesinteger · required- The size of the file, in bytes.
file_namestring · optional- A name for the list, ending in
.txt.
Example request
curl -X POST "https://api.talismanleads.io/v1/uploads" \
-H "Authorization: Bearer tl_live_your_key_here" \
-H "Content-Type: application/json" \
-d '{"file_name":"list.txt","size_bytes":1048576}'Example answer (201)
{
"upload_id": "upl_2b7d9f10-6c3e-4a1f-8d2b-9e8f7a6b5c4d",
"upload_url": "https://storage.example.com/upload/sign/list.txt?token=...",
"method": "PUT",
"headers": {
"Content-Type": "text/plain"
},
"expires_at": "2026-11-05T11:00:00.000Z"
}See what an order would cost
POST/estimates
Counts the entries, works out the price and reports any problem with the list. Charges nothing. Allow up to 5 minutes for the answer.
Key needs: Able to place orders
Body
checkerstring · required- A checker's
idfromGET /checkers. entriesstring[] · optional- The list, one string per entry, up to 100,000 entries and 4 MB. Send this or
upload_id. upload_idstring · optional- An
upload_idfromPOST /uploads. Send this orentries. countrystring · optional- A two-letter country code, if you want to say which country the numbers are from.
file_namestring · optional- A name for the list, ending in
.txt.
Example request
curl -X POST "https://api.talismanleads.io/v1/estimates" \
-H "Authorization: Bearer tl_live_your_key_here" \
-H "Content-Type: application/json" \
-d '{"checker":"whatsapp_status_detection","entries":["+14155550142","+12125550187"]}'Example answer (200)
{
"checker": "whatsapp_status_detection",
"entries": 2,
"billed_entries": 2000,
"charge": "0.60",
"currency": "USD",
"parts": 1,
"country": {
"code": "US",
"share": 1
}
}Place an order
POST/orders
Charges your balance and queues the work. Answers 201 for a new order, and 200 with Idempotent-Replay: true for a repeat; a repeat at the same moment can also answer 201, so tell orders apart by id. Allow up to 5 minutes for the answer.
Key needs: Able to place orders
Headers
Idempotency-Keystring · required- Up to 200 ASCII characters with no spaces. For 7 days the same key means the same order.
Body
checkerstring · required- A checker's
idfromGET /checkers. entriesstring[] · optional- The list, one string per entry, up to 100,000 entries and 4 MB. Send this or
upload_id. upload_idstring · optional- An
upload_idfromPOST /uploads. Send this orentries. countrystring · optional- A two-letter country code, if you want to say which country the numbers are from.
file_namestring · optional- A name for the list, ending in
.txt. expected_chargestring · optional- A price in dollars, such as
"18.00". The order is refused withprice_changedif it costs anything else.
Example request
curl -X POST "https://api.talismanleads.io/v1/orders" \
-H "Authorization: Bearer tl_live_your_key_here" \
-H "Idempotency-Key: crm-export-2026-11-05" \
-H "Content-Type: application/json" \
-d '{"checker":"whatsapp_status_detection","entries":["+14155550142","+12125550187"]}'Example answer (201)
{
"id": "ord_8f2c1e7a-3b4d-4c5e-9f60-1a2b3c4d5e6f",
"checker": "whatsapp_status_detection",
"status": "queued",
"entries": 2,
"charge": "0.60",
"refunded": "0.00",
"currency": "USD",
"parts": {
"total": 1,
"completed": 0,
"failed": 0
},
"results": null,
"error": null,
"source": "api",
"created_at": "2026-11-05T09:00:00.000Z",
"completed_at": null
}List your orders
GET/orders
Newest first. Pass next_cursor back as cursor for the next page.
Key needs: Read only, or able to place orders
Query parameters
limitinteger · optional- How many to return, from 1 to 100. The default is 20.
cursorstring · optionalnext_cursorfrom the last page.
Example request
curl "https://api.talismanleads.io/v1/orders?limit=20" \
-H "Authorization: Bearer tl_live_your_key_here"Example answer (200)
{
"orders": [
{
"id": "ord_8f2c1e7a-3b4d-4c5e-9f60-1a2b3c4d5e6f",
"checker": "whatsapp_status_detection",
"status": "completed",
"entries": 2,
"charge": "0.60",
"refunded": "0.00",
"currency": "USD",
"parts": {
"total": 1,
"completed": 1,
"failed": 0
},
"results": {
"registered": 1,
"not_registered": 1
},
"error": null,
"source": "api",
"created_at": "2026-11-05T09:00:00.000Z",
"completed_at": "2026-11-05T09:02:10.000Z"
}
],
"next_cursor": null
}One order
GET/orders/{id}
Its status, entries, charge, refund, parts and counts. results is null until a part finishes, and a count is null where the checker does not report it.
Key needs: Read only, or able to place orders
Path parameters
idstring · required- The order's
id.
Example request
curl "https://api.talismanleads.io/v1/orders/ord_8f2c1e7a-3b4d-4c5e-9f60-1a2b3c4d5e6f" \
-H "Authorization: Bearer tl_live_your_key_here"Example answer (200)
{
"id": "ord_8f2c1e7a-3b4d-4c5e-9f60-1a2b3c4d5e6f",
"checker": "whatsapp_status_detection",
"status": "completed",
"entries": 2,
"charge": "0.60",
"refunded": "0.00",
"currency": "USD",
"parts": {
"total": 1,
"completed": 1,
"failed": 0
},
"results": {
"registered": 1,
"not_registered": 1
},
"error": null,
"source": "api",
"created_at": "2026-11-05T09:00:00.000Z",
"completed_at": "2026-11-05T09:02:10.000Z"
}Result files
GET/orders/{id}/results
A download link for each part, good for 15 minutes. A part still running has no link. Contact support if a completed part has none.
Key needs: Read only, or able to place orders
Path parameters
idstring · required- The order's
id.
Example request
curl "https://api.talismanleads.io/v1/orders/ord_8f2c1e7a-3b4d-4c5e-9f60-1a2b3c4d5e6f/results" \
-H "Authorization: Bearer tl_live_your_key_here"Example answer (200)
{
"order_id": "ord_8f2c1e7a-3b4d-4c5e-9f60-1a2b3c4d5e6f",
"status": "completed",
"parts": [
{
"part": 1,
"status": "completed",
"file_name": "result.csv",
"url": "https://storage.example.com/sign/result.csv?token=...",
"expires_at": "2026-11-05T09:17:10.000Z"
}
]
}