Keeping a copy in sync
Fetch only what has changed since last time, and what was deleted.
On this page
To keep a copy of your data up to date, ask each list for what has changed since your last sync. Then ask
/deletions for what was deleted.
1. Fetch what changed
Every list takes updated_since, an ISO 8601 time with Z or an offset.
curl "$NIFTY_URL/api/v1/people?updated_since=2026-10-09T08:00:00Z&limit=100" \
-H "Authorization: Bearer $NIFTY_TOKEN"
You get the records changed at or after that time, with the oldest change first, a page at a time
(Pagination). Save or replace each record by its id.
2. Fetch what was deleted
curl "$NIFTY_URL/api/v1/deletions?since=2026-10-09T08:00:00Z" \
-H "Authorization: Bearer $NIFTY_TOKEN"
{
"data": [{ "type": "category", "id": "01m4jf9e0tjjb1a8rg6h4nygn7", "deleted_at": "2026-10-10T08:36:23.756Z" }],
"meta": { "limit": 25, "next_cursor": null }
}
Remove each one from your copy. type is one of person, key_date, email_address, position, company,
person_link, fact, fact_label, project, project_member, project_event, category, tag, note, task_list, task, folder,
document, ai_provider, ai_model or calendar_feed. To get every deletion, leave out since. See Sync.
3. Remember where you got to
Next time, start from the latest updated_at and deleted_at you saw, minus a minute. A slow change can be saved
with a slightly earlier time than one you've already seen, and the overlap catches it. Records in the overlap come
back again, which does no harm if you replace them by id.
Things to know
- Undoing a delete in Nifty removes its entry from
/deletions, and the record comes back in its list with a newerupdated_at. So save records byid, even a record you deleted. - Sync unfiltered lists, because a filtered list can't tell you that a record has left the filter.
GET /peopleincludes you, markedis_me. Leave yourself out where you show people as a list.- Renaming a person or tag gives the notes that mention it a new
updated_at, so they come back with the new name. - Your password, username, authenticators and API tokens aren't part of sync.