Docs/Contacts API/List Contacts
GET/contacts

List Contacts

Retrieve a paginated list of all contacts in your workspace, with optional filtering and sorting.

Last updated April 20, 20262 min read
GEThttps://api.usedalil.ai/v1/contacts
curl -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

ParameterTypeRequiredDescription
limitintegerNoNumber of results per page (default: 50, max: 200)
cursorstringNoPagination cursor from previous response
searchstringNoFull-text search across name, email, company
tagstringNoFilter by tag name
sequence_idstringNoFilter contacts enrolled in a specific sequence
score_minintegerNoMinimum deal score (0–100)
created_afterstringNoISO 8601 datetime
created_beforestringNoISO 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

CodeDescription
401 UnauthorizedInvalid or missing API key
403 ForbiddenKey lacks contacts:read scope
422 Unprocessable EntityInvalid query parameter
429 Too Many RequestsRate 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.