GET
/contactsList Contacts
Retrieve a paginated list of all contacts in your workspace, with optional filtering and sorting.
Last updated April 20, 20262 min readContactsREST API
GET
https://api.usedalil.ai/v1/contactscurl -X GET "https://api.usedalil.ai/v1/contacts" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json"Returns a paginated list of contacts in your workspace. Results are ordered by created_at descending by default.
Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
limit | integer | No | Number of results per page (default: 50, max: 200) |
cursor | string | No | Pagination cursor from previous response |
search | string | No | Full-text search across name, email, company |
tag | string | No | Filter by tag name |
sequence_id | string | No | Filter contacts enrolled in a specific sequence |
score_min | integer | No | Minimum deal score (0–100) |
created_after | string | No | ISO 8601 datetime |
created_before | string | No | ISO 8601 datetime |
Request
curl https://api.usedalil.ai/v1/contacts \
-H "Authorization: Bearer dalil_sk_live_xxxx" \
-G \
--data-urlencode "limit=50" \
--data-urlencode "search=acme"
Response
{
"data": [
{
"id": "cnt_01HXY8Z9A0B1C2D3E4F5G6H7J",
"email": "sarah@acmecorp.com",
"first_name": "Sarah",
"last_name": "Chen",
"title": "VP of Sales",
"company": "Acme Corp",
"linkedin_url": "https://linkedin.com/in/sarahchen",
"phone": "+1 555 000 1234",
"score": 87,
"tags": ["hot-lead", "series-b"],
"owner_id": "usr_01HABCDEF",
"sequences": [
{
"id": "seq_01HSEQ123",
"name": "VP Outbound Q2",
"status": "active",
"current_step": 2
}
],
"last_activity_at": "2026-04-19T14:22:00Z",
"created_at": "2026-04-01T09:00:00Z",
"updated_at": "2026-04-19T14:22:00Z"
}
],
"meta": {
"total": 1247,
"page": 1,
"per_page": 50,
"next_cursor": "eyJpZCI6ImNudF8wMUhYWThaOUEwQjF..."
}
}
Error Responses
| Code | Description |
|---|---|
401 Unauthorized | Invalid or missing API key |
403 Forbidden | Key lacks contacts:read scope |
422 Unprocessable Entity | Invalid query parameter |
429 Too Many Requests | Rate limit exceeded |
Code Examples
JavaScript
import Dalil from '@dalilai/sdk';
const client = new Dalil({ apiKey: process.env.DALIL_API_KEY });
const contacts = await client.contacts.list({
limit: 50,
search: 'acme',
});
for (const contact of contacts.data) {
console.log(`${contact.first_name} ${contact.last_name} — Score: ${contact.score}`);
}
Python
import dalilai
client = dalilai.Client(api_key=os.environ["DALIL_API_KEY"])
contacts = client.contacts.list(limit=50, search="acme")
for contact in contacts.data:
print(f"{contact.first_name} {contact.last_name} — Score: {contact.score}")
💡
Use the score_min=70 filter to retrieve only high-priority contacts for your daily outreach queue.