What you can do
The Follow-ups V3 API covers the full lifecycle of a follow-up:List and filter follow-ups
You can list follow-ups across your organization. Results are paginated, and you can filter by incident, assignee team, and thecreated_at and updated_at timestamps. The timestamp filters are what make incremental syncing possible, which we cover below.
Create and update follow-ups
You can create follow-ups against an incident, update them (title, description, status, assignee, priority, labels), and delete them. Use the show endpoint to fetch a single follow-up.Connect external issues
If you track follow-up work in your issue tracker, you can connect a follow-up to an existing issue by its URL. The follow-up then carries a reference to that issue, and we keep its status in sync.Keeping follow-ups in sync
The most common use of this API is keeping an external system up to date with your follow-ups. Rather than re-fetching everything on a schedule, do an initial full import and then poll for changes. For the initial import, page through the full list:pagination_meta object. If it contains an after cursor, pass that to the next request to get the next page. When after is missing, you have reached the end.
From then on, poll with updated_at[gte] set to when you last synced:
- Overlap your window. Timestamps are stamped just before a write commits, so a follow-up can occasionally become visible with an
updated_atslightly older than rows you have already seen. Set yourupdated_at[gte]bound a few minutes earlier than your last sync time and treat re-fetched rows as upserts. - Embedded objects don’t bump
updated_at. The timestamp moves when the follow-up itself changes. Changes to things embedded in the payload, like an assignee being renamed or an external issue’s status text, don’t move it. If you need those fresh too, run an occasional full re-sync.