Skip to content
Niftyhelp 2026.10.2 Support

Search

Search everything at once.

On this page

GET/search

Search people, projects, notes, tasks, calendar events, documents, task lists and folders.

The best matches of each type, as the web omnibar finds them: people by name or alias (prefix words, misspellings), email, phone digits or link; projects by name (prefix words, misspellings) or reference, open ones first; notes by title, tag names, mentioned people's names and aliases, referenced projects' names, or text; tasks by title (prefix words, misspellings), open ones first, then the most recently closed; events (each occurrence on its own, as GET /calendar gives it, ignored ones left out) by every word starting a word of their title or location, from 7 days before today to 7 after in the owner's time zone, nearest to now first; documents by name (prefix words, misspellings); task lists and folders by name (prefix words). Case and accents don't matter. One group per requested type in this order (person, project, note, task, event, document, task_list, folder), empty ones included. Not paginated: limit is per type, and has_more says there are more (for notes, page through them with GET /notes?q=). Results are a snapshot to look up by id, not records to sync. A blank q gives empty groups (but see on and scope=link). Expired tasks are archived first.

on narrows every group to one day in the owner's time zone (the omnibar's when:): notes written that day; tasks due or starting that day; events on that day, in order (one that runs into it from an earlier day included); documents dated that day, or added that day without a date. People, projects, task lists and folders have no day, so their groups are empty. With a blank q, each group lists that day's: notes and documents newest first (without an email's attachments), tasks open ones first; with scope=content, a blank q gives an empty group, as without on.

scope=content searches inside documents instead (the web omnibar's +): only the document group, with documents whose text or summary has every word typed as a word's prefix, best match first. Each result's subtitle is the document's type, if it's been analysed, and an excerpt around the first match.

scope=link finds what can be linked (the web linker): the person, project, note, task, event and document groups only, and company when types asks for it (companies only here: by name, prefix words, subtitle "Company"). They match as above, but documents by name, then those matching only by their text or summary, newest first. A blank q (without on) gives the most recently added notes, documents (without an email's attachments) and tasks (open ones first), newest first, and the events as above; people and projects need words. A note's and a document's subtitle is its kind ("Note", "PDF", "Email" or "Image"), its date (a note's creation, a document's dated_on, else the day it was added) in the owner's time zone ("3 Oct", with the year unless it's this year's), then any detail: a titled note's start, a document's folder path, or an excerpt around a text match ("PDF · 3 Oct · Home › Insurance"). A note's title is its name, so an untitled one has its text's start.

curl "$NIFTY_URL/api/v1/search" \
  -H "Authorization: Bearer $NIFTY_TOKEN"

Query parameters

NameDescription
qstring · optionalLonger, or containing a NUL, is 400.
typesstring · optionalComma-separated, e.g. person,note; the default is every type, person,project,note,task,event,document,task_list,folder. Anything else is 400.
limitinteger · optionalResults per type.
scopenames | content | link · optionalnames (the default), content or link; with content, types may only be document, and with link, only person, project, note, task, event and document (its default), or company. Anything else is 400.
ondate · optionalOne day in the owner's time zone, YYYY-MM-DD (see above). Not a date is 400.

Response

200 OK Errors: 400 401 429

{
  "data": [
    {
      "type": "person",
      "results": [
        {
          "id": "string",
          "title": "Kitchen renovation",
          "subtitle": "Active · due 12 Nov",
          "event": {
            "type_key": "string",
            "received_via_api": {
              "at": "2026-10-10T09:30:00Z",
              "source": "Zapier"
            },
            "key": "string",
            "link_key": "string",
            "feed_id": "01j9zq3k8m5x2v7c4n6b0t1r9e",
            "entry_id": "01j9zq3k8m5x2v7c4n6b0t1r9e",
            "title": "Team stand-up",
            "all_day": true,
            "starts_at": "2026-10-10T09:30:00Z",
            "ends_at": "2026-10-10T09:30:00Z",
            "start_on": "2026-10-10",
            "end_on": "2026-10-10",
            "location": "Room 2",
            "description": "Weekly check-in.",
            "url": "string",
            "meeting": {
              "provider": "google_meet",
              "url": "https://example.com"
            },
            "attendee_count": 0,
            "attendee_names": [
              "string"
            ],
            "attendees": [
              {
                "name": "Maya Okafor",
                "email": "[email protected]",
                "organizer": true,
                "person_id": "01j9zq3k8m5x2v7c4n6b0t1r9e"
              }
            ],
            "rrule": "FREQ=WEEKLY;BYDAY=MO,WE",
            "repeats": true,
            "series_key": "string",
            "ignored": "event"
          },
          "leading": {
            "type": "avatar",
            "url": "https://example.com"
          }
        }
      ],
      "has_more": true
    }
  ]
}

Menu

2026.10.2Contact support