Search everything
Finds notes (and their headings), lecture recordings, note files, study sets and their terms, tasks, timetables, copilot conversations and practice tests by their words, the same search as the app's command menu. Use it to turn something the user names ("my mitosis notes", "the Spanish verbs set") into an id, then read or change the record with its own tool. Hits come best match first, 20 a page, and only for the types this key may read: note and recording need notes:view, file files:view, set and term sets:view, task tasks:view, schedule schedule:view, conversation copilot:use, test tests:view. Without settings:view, a copilot conversation that read or proposed the user's settings is skipped. Shares the app's search limit of 60 a minute per user.
Required scopes: notes:view or files:view or sets:view or tasks:view or schedule:view or copilot:use or tests:view
AuthorizationBearer <token>q*stringWords to find, 1-200 characters. Matches whole words and prefixes, ignores accents and case, and tolerates a typo in titles. "exact phrase" and -word work as in the app.
1 <= length <= 200types?stringComma-separated record types to search: note, recording, file, set, term, task, schedule, conversation, test. Omit for every type the key may read.
length <= 200subjectId?stringOnly records filed under this subject.
^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$uuidsemantic?stringtrue also matches by meaning (hybrid search), for questions like how do cells make energy. Defaults to false, keyword search only.
"true""false"cursor?|Opaque. Pass nextCursor from the previous page unchanged.
OK
application/json- response
data*array<>nextCursor*|Opaque. Pass as cursor with the same query for the next 20 hits. Null on the last page.
total*integerHits across every page.
-9007199254740991 <= value <= 9007199254740991mode*stringhybrid when meaning matches were added. A semantic search falls back to keyword when embeddings are unavailable.
"keyword""hybrid"curl -X GET 'https://workroad.app/api/v1/search?q=string' \ -H 'Authorization: Bearer $WORKROAD_API_KEY'{ "data": [ { "type": "term", "id": "2a1b0c9d-8e7f-4a6b-9c5d-4e3f2a1b0c9d", "parentId": "7e6d5c4b-3a2f-4e1d-8c0b-9a8f7e6d5c4b", "title": "Spanish verbs", "snippet": "tener (yo): tuve", "task": null, "url": "https://workroad.app/set/get/7e6d5c4b-3a2f-4e1d-8c0b-9a8f7e6d5c4b?element=2a1b0c9d-8e7f-4a6b-9c5d-4e3f2a1b0c9d", "updatedAt": "2026-02-01T12:00:00.000Z" } ], "nextCursor": null, "total": 1, "mode": "keyword"}