---
title: "List follow ups"
method: GET
path: "/crm/follow-ups"
---

# List follow ups

`GET /crm/follow-ups`

## Request

- Base URL: `https://platform-api.visitoai.com/m2m/v1`
- URL: `https://platform-api.visitoai.com/m2m/v1/crm/follow-ups`
- Auth: HTTP bearer

Requires `crm:followups:read`. Business-wide list. Continue with nextCursor while hasMore is true, preserving filters.

## Query parameters

- `limit` integer
- `cursor` string
- `status` 'suggested' | 'scheduled' | 'sending' | 'dismissed' | 'sent' | 'failed' | 'skipped' | 'expired' | 'canceled'
- `mode` 'manual' | 'draft' | 'auto_candidate' | 'auto'
- `leadId` string
- `conversationId` string
- `dueAfter` string, date-time

## Response `200`

Success

- PublicFollowUpPage
  - `followUps` PublicFollowUp[], required
    - `followUpId` string, required
    - `opportunityId` string
    - `leadId` string, required
    - `conversationId` string
    - `channel` string
    - `status` string, required
    - `mode` string, required
    - `reasonCode` string
    - `reasonText` string
    - `reason` string
    - `messageDraft` string
    - `draftStatus` string
    - `dueAt` string
    - `expiresAt` string
    - `sentAt` string
    - `replyId` string
    - `createdAt` string
    - `updatedAt` string
  - `hasMore` boolean, required
  - `nextCursor` string

## Other responses

- `default`: Structured error

---

[API](https://skmtc.dev/visitoai/apis/visito-m2m-api.md) - [All operations](https://skmtc.dev/visitoai/apis/visito-m2m-api/llms.txt) - [OpenAPI document](https://skmtc.dev/visitoai/apis/visito-m2m-api/revisions/98377d35c234?raw)
