List contacts

GET/api/v2/contacts

Returns your contacts, newest first. Combine filters to narrow the list.

Rate limit 150 requests per minute

Headers

  • x-api-keyheaderRequired

    Your API key.

  • Content-Typeheader

    application/json. Not needed for this request.

Query parameters

  • limitinteger

    1 to 50. Default 50.

  • pagestring

    The next_page value from the previous response.

  • sortstring

    created_at (default) or last_message_at.

  • sort_directionstring

    descending (default) or ascending.

  • fieldsstring

    full (default) or basic.

  • tagstring

    Tag name, as returned by List tags. Repeat to match contacts with any of several tags (up to 20).

  • lead_statusstring

    open, won, lost or abandoned.

  • pipeline_stagestring

    Stage name or id.

  • added_bystring

    dm_tracker, api, team_member or sync. Repeatable.

  • has_repliedboolean

    true or false.

  • sourcestring

    inbound or outbound.

  • assigned_userstring

    Email of a team member.

  • start_datestring

    Contacts created from this date.

  • end_datestring

    Contacts created up to this date.

  • created_sincestring

    Same as start_date.

  • updated_sincestring

    Contacts with any message, reply or creation since this date. Useful for syncing changes.

Errors

ErrorWhen
400invalid_<parameter>
A query parameter has a value that is not allowed, for example invalid_limit or invalid_start_date. message says what.
400invalid_date_range
start_date is after end_date.
400invalid_tag
More than 20 tags.
400unknown_tag
A tag in tag does not exist.
400unknown_pipeline_stage
No stage with that name or id.
400unknown_assigned_user
No team member with that email.
503query_timeout
Too slow. Use a smaller limit or narrower filters.
Request
curl "https://app.dmtracker.ai/api/v2/contacts?lead_status=open&source=outbound&limit=20" \
  -H "x-api-key: $DMTRACKER_API_KEY" \
  -H "Content-Type: application/json"
Response 200
{
  "status": "success",
  "data": [
    {
      "id": "7c1e9a52-3f4b-4d2a-9e61-0b8f2d5c4a17",
      "username": "jane.fitness",
      "full_name": "Jane Cooper",
      "profile_picture": null,
      "source": "inbound",
      "status": "open",
      "pipeline_stage": {
        "id": "9e4a7c21-6b0d-4e8f-b352-1a9c8d7e6f03",
        "name": "In Conversation",
        "color": "#FF8A2E",
        "position": 3
      },
      "tags": [
        {
          "id": 287,
          "name": "hot lead",
          "color": "#22C55E"
        }
      ],
      "follow_up": {
        "state": "pending",
        "stage": {
          "id": "4d8b2f6e-1a3c-4e9b-8f70-6c2a5e9d1b38",
          "name": "1st Follow-Up"
        },
        "count": 0,
        "due_at": "2026-10-22T03:14:50.000+00:00",
        "overdue_days": 1,
        "snoozed_until": null,
        "snooze_reason": null,
        "last_follow_up_sent_at": null,
        "disabled_at": null,
        "disabled_by": null
      },
      "outbound": {
        "sent_at": null,
        "reason": null,
        "message": null,
        "message_label": null,
        "tracked_manually": null,
        "tracked_by_team_member": null,
        "replied_at": null
      },
      "conversation": {
        "last_message_at": "2026-10-21T15:14:50.000+00:00",
        "last_message_from": "user",
        "last_message": "Happy to help! Want me to send you the program details?",
        "last_contact_message_at": "2026-10-21T15:12:47.000+00:00",
        "first_contact_message_at": "2026-10-21T15:12:47.000+00:00",
        "can_reply": false,
        "reply_window_expires_at": "2026-10-22T15:12:47.000+00:00"
      },
      "instagram": {
        "inactive": false,
        "url": "https://instagram.com/jane.fitness"
      },
      "assigned_user": "alex@yourcompany.com",
      "added_by": "dm_tracker",
      "created_by_user": null,
      "created_at": "2026-10-21T15:12:47.000+00:00"
    }
  ],
  "has_more": true,
  "next_page": "eyJmIjoiY3JlYXRlZF9hdCIs..."
}
Link copied