Last updated: March 7, 2026
Programmatic access to your OmniCanvas notes, folders, tags, and web clipping. Available on the Power plan.
All API requests require an API key passed as a Bearer token. Create and manage keys in Settings → API Access inside the app.
Authorization: Bearer pk_live_your_key_hereKeys use the pk_live_ prefix. Keep your keys secret — they grant full access to your account.
https://app.omnicanvasnotes.com/api/v1All endpoints are rate limited to 100 requests per minute per user. Rate limit info is returned in response headers:
X-RateLimit-Remaining — requests left in the current windowX-RateLimit-Reset — Unix timestamp when the window resetsAll responses use a consistent JSON envelope:
{
"data": { ... },
"error": null,
"meta": {
"timestamp": "2026-03-07T12:00:00.000Z"
}
}On error, data is null and error contains { code, message }.
/notesList your notes. Supports filtering and pagination.
Query params:
limit (1–100, default 50)offset (default 0)tag — filter by tagfolderId — filter by foldersearch — search titles/notes/:idGet a single note with full content.
Pass ?includeCanvas=true to include canvas data. Encrypted notes return canvasData: null.
/notesCreate a new note.
{
"title": "My Note",
"tags": ["research", "ai"],
"folderIds": ["folder-id"],
"isPinned": false,
"canvasData": { ... }
}All fields are optional.
/notes/:idUpdate a note. Only provided fields are changed.
Tags and folderIds replace existing values entirely. Encrypted notes cannot have their canvas data updated via API.
/notes/:idDelete a note. Soft delete by default (moves to trash).
Pass ?permanent=true to permanently delete including version history.
/foldersList all folders with note counts.
/folders/:idGet a folder and its note list.
/foldersCreate a folder.
{
"name": "Research",
"parentId": "optional-parent-folder-id"
}/folders/:idUpdate a folder name or parent.
/folders/:idDelete a folder (soft delete).
/search?q=queryFull-text search across note titles and OCR text. Returns matching excerpts.
Minimum 2 characters. Encrypted notes are excluded. Supports limit and offset pagination.
/tagsList all tags with usage counts, sorted by frequency.
/tags/:tag/notesList notes with a specific tag. Supports pagination.
/notes/:id/export?format=jsonExport a note as a downloadable .excalidraw JSON file.
Encrypted notes return HTTP 403.
All plans include automatic version history. Continuous snapshots are kept for 72 hours, then consolidated into daily snapshots. Free keeps 3 dailies per note, Pro keeps 30, Power keeps 365. Paid plans can also create up to 10 manual checkpoints per note.
/notes/:id/versionsList version snapshots for a note.
/notes/:id/versions/:versionIdGet a specific version with full canvas data.
/notes/:id/versionsCreate a manual checkpoint (paid plans, max 10 per note).
/notes/:id/versions/:versionId/restoreRestore a note to a previous version. Current state is auto-snapshotted first.
/notes/:id/versions/:versionIdDelete a manual checkpoint. Only manual checkpoints can be deleted.
/clipClip a web page or YouTube video. YouTube URLs are auto-detected.
{
"url": "https://example.com/article",
"mode": "text",
"includeTranscript": false
}Fields:
url (required) — URL to clipmode — "visual" (screenshot + text) or "text" (default)includeTranscript — for YouTube, fetch transcript (quota-limited)Returns type: "youtube", "visual", or "webpage" depending on the URL and mode.
/youtube/quotaCheck your monthly YouTube transcript quota.
/youtube/transcriptFetch a YouTube transcript by video ID.
{ "videoId": "dQw4w9WgXcQ" }Returns HTTP 429 if monthly quota is exceeded.
These endpoints use JWT auth (your login session), not API key auth. They're used by the app to manage your keys.
/keysCreate a new API key. Returns the full key once — store it securely.
/keysList your API keys (prefix only, not the full key).
/keys/:idRevoke an API key. Cannot be undone.
| Code | HTTP | Meaning |
|---|---|---|
| UNAUTHORIZED | 401 | Missing or invalid API key |
| FORBIDDEN | 403 | Not on Power plan, or encrypted note |
| NOT_FOUND | 404 | Resource not found or not owned by you |
| VALIDATION_ERROR | 400 | Invalid request body or parameters |
| RATE_LIMITED | 429 | Rate limit or quota exceeded |
curl https://app.omnicanvasnotes.com/api/v1/notes?limit=5 \
-H "Authorization: Bearer pk_live_your_key_here"{
"data": [
{
"id": "abc123",
"title": "Meeting Notes",
"isPinned": false,
"isEncrypted": false,
"tags": ["work"],
"folderIds": ["folder-1"],
"lastModified": "2026-03-07T12:00:00.000Z"
}
],
"error": null,
"meta": {
"timestamp": "2026-03-07T12:00:00.000Z",
"limit": 5,
"offset": 0,
"total": 42
}
}