Record a follow-up

POST/api/v2/contacts/{username_or_id}/follow-up

Marks the contact's due follow-up as sent, the same as ticking it off on the Follow-ups board. Works only while a follow-up is due.

Rate limit 150 requests per minute

Headers

  • x-api-keyheaderRequired

    Your API key.

  • Content-TypeheaderRequired

    application/json

Path parameters

  • username_or_idstringRequired

    Instagram username or contact id.

Body

  • sent_atstring

    When it was sent. Cannot be in the future. Default now.

  • sent_bystring

    Email of the team member who sent it.

  • stagestring

    Name or id of the due stage, from List follow-up stages. A safety check: the request is rejected if that stage is not the one due.

Errors

ErrorWhen
400invalid_sent_at
sent_at is not a date or is in the future.
400invalid_sent_by
sent_by is not a valid email address.
403user_not_in_organization
The sent_by email belongs to someone outside your organization.
404unknown_sent_by
No user with the sent_by email.
404contact_not_found
No contact with that username or id in your organization.
409follow_up_not_pending
No follow-up is due for this contact right now.
409stage_not_pending
stage is not the stage that is due.
409follow_up_already_recorded
This follow-up was already recorded.
Request
curl -X POST "https://app.dmtracker.ai/api/v2/contacts/jane.fitness/follow-up" \
  -H "x-api-key: $DMTRACKER_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "sent_by": "alex@yourcompany.com"
  }'
Response 201
{
  "status": "success",
  "message": "Follow-up recorded",
  "data": {
    "id": "d59c2a7e-4b1f-4e83-9a60-3f8c1b7d2e94",
    "contact": {
      "id": "7c1e9a52-3f4b-4d2a-9e61-0b8f2d5c4a17",
      "username": "jane.fitness",
      "full_name": "Jane Cooper",
      "follow_up": {
        "state": "sent",
        "count": 1,
        "last_follow_up_sent_at": "2026-10-29T10:09:02.000+00:00"
      }
    }
  }
}

Shortened. data.contact is the full contact object.

Link copied