Bookmarks

Create, list, search, import, export, and update not24get bookmarks, including tags, folders, archives, and link health checks.

On this page

List bookmarks (API key)

Lists bookmarks in the workspace scope using API key authentication. Supports pagination and filters.

Technical details

Exact HTTP method and path your client calls

get/api/v1/bookmarks

Query parameters

NameTypeRequiredDescription
limitnumberoptional
offsetnumberoptional
tagstringoptional
folderIdstringoptional
qstringoptional

Headers

NameTypeRequiredDescription
X-Workspace-IDstringoptionalTarget workspace when the API key is tenant-wide or to disambiguate scope.

Responses

List bookmarks

FieldTypeDescription
Bookmark[]
object
Bookmark in a workspace (serialized API shape).
Example
[
  {
    "id": "string",
    "tenantId": "string",
    "workspaceId": "string",
    "url": "string",
    "title": "string",
    "description": "string",
    "tags": [
      "string"
    ],
    "folderId": "string",
    "sortOrder": 0,
    "createdAt": "2026-01-01T00:00:00.000Z",
    "updatedAt": "2026-01-01T00:00:00.000Z",
    "linkStatus": "ok",
    "lastLinkCheckedAt": "2026-01-01T00:00:00.000Z",
    "snapshotEnabled": false,
    "readerExcerpt": "string",
    "videoEmbedUrl": "string",
    "isHeadlessPreviewBlocked": false,
    "headlessPreviewBlockedAt": "2026-01-01T00:00:00.000Z",
    "archive": {
      "status": "none",
      "retentionExpiresAt": "2026-01-01T00:00:00.000Z",
      "metadataId": "string"
    }
  }
]

Errors return the standard envelope. See error reference.

Code samples

curl --request GET \
  --url 'https://api.not24get.me/api/v1/bookmarks' \
  --header 'Authorization: Bearer <your-api-key>' \
  --header 'Content-Type: application/json' \
  --header 'X-Workspace-ID: <workspace-id>'

Try it

Query parameters
Headers

Create bookmark (API key)

Creates a bookmark in the workspace identified by the API key or X-Workspace-ID header.

Technical details

Exact HTTP method and path your client calls

post/api/v1/bookmarks

Headers

NameTypeRequiredDescription
X-Workspace-IDstringoptionalTarget workspace when the API key is tenant-wide or to disambiguate scope.

Request body

FieldTypeDescription
urlstring
titlestring
descriptionstring
tagsstring[]
folderIdstring
archiveCaptureboolean
noticeVersionstring
snapshotEnabledboolean
readerExcerptstring
videoEmbedUrlstring

Responses

Create bookmark

FieldTypeDescription
idstring
tenantIdstring
workspaceIdstring
urlstring
titlestring
descriptionstring
tagsstring[]
folderIdstring
sortOrderinteger
createdAtstring<date-time> · date-time
updatedAtstring<date-time> · date-time
linkStatusstring
enum: okdeadunknown
lastLinkCheckedAtstring<date-time> · date-time
snapshotEnabledboolean
readerExcerptstring
videoEmbedUrlstring
isHeadlessPreviewBlockedboolean
headlessPreviewBlockedAtstring<date-time> · date-time
object
Example
{
  "id": "string",
  "tenantId": "string",
  "workspaceId": "string",
  "url": "string",
  "title": "string",
  "description": "string",
  "tags": [
    "string"
  ],
  "folderId": "string",
  "sortOrder": 0,
  "createdAt": "2026-01-01T00:00:00.000Z",
  "updatedAt": "2026-01-01T00:00:00.000Z",
  "linkStatus": "ok",
  "lastLinkCheckedAt": "2026-01-01T00:00:00.000Z",
  "snapshotEnabled": false,
  "readerExcerpt": "string",
  "videoEmbedUrl": "string",
  "isHeadlessPreviewBlocked": false,
  "headlessPreviewBlockedAt": "2026-01-01T00:00:00.000Z",
  "archive": {
    "status": "none",
    "retentionExpiresAt": "2026-01-01T00:00:00.000Z",
    "metadataId": "string"
  }
}

Errors return the standard envelope. See error reference.

Code samples

curl --request POST \
  --url 'https://api.not24get.me/api/v1/bookmarks' \
  --header 'Authorization: Bearer <your-api-key>' \
  --header 'Content-Type: application/json' \
  --header 'X-Workspace-ID: <workspace-id>' \
  --data '{
  "url": "string",
  "title": "string",
  "description": "string",
  "tags": [
    "string"
  ],
  "folderId": "string",
  "archiveCapture": false,
  "noticeVersion": "string",
  "snapshotEnabled": false,
  "readerExcerpt": "string",
  "videoEmbedUrl": "string"
}'

Try it

Headers
Request body (JSON)

Delete bookmark (API key)

Soft-deletes a bookmark. Returns no body on success.

Technical details

Exact HTTP method and path your client calls

delete/api/v1/bookmarks/{bookmark_id}

Path parameters

NameTypeRequiredDescription
bookmark_idstringrequired

Headers

NameTypeRequiredDescription
X-Workspace-IDstringoptionalTarget workspace when the API key is tenant-wide or to disambiguate scope.

Responses

No Content

FieldTypeDescription
(value)EmptyResponsePart
Example
null

Errors return the standard envelope. See error reference.

Code samples

curl --request DELETE \
  --url 'https://api.not24get.me/api/v1/bookmarks/%3Abookmark_id' \
  --header 'Authorization: Bearer <your-api-key>' \
  --header 'Content-Type: application/json' \
  --header 'X-Workspace-ID: <workspace-id>'

Try it

Path parameters
Headers

Get bookmark (API key)

Returns a single bookmark by id using API key authentication.

Technical details

Exact HTTP method and path your client calls

get/api/v1/bookmarks/{bookmark_id}

Path parameters

NameTypeRequiredDescription
bookmark_idstringrequired

Headers

NameTypeRequiredDescription
X-Workspace-IDstringoptionalTarget workspace when the API key is tenant-wide or to disambiguate scope.

Responses

Get bookmark

FieldTypeDescription
idstring
tenantIdstring
workspaceIdstring
urlstring
titlestring
descriptionstring
tagsstring[]
folderIdstring
sortOrderinteger
createdAtstring<date-time> · date-time
updatedAtstring<date-time> · date-time
linkStatusstring
enum: okdeadunknown
lastLinkCheckedAtstring<date-time> · date-time
snapshotEnabledboolean
readerExcerptstring
videoEmbedUrlstring
isHeadlessPreviewBlockedboolean
headlessPreviewBlockedAtstring<date-time> · date-time
object
Example
{
  "id": "string",
  "tenantId": "string",
  "workspaceId": "string",
  "url": "string",
  "title": "string",
  "description": "string",
  "tags": [
    "string"
  ],
  "folderId": "string",
  "sortOrder": 0,
  "createdAt": "2026-01-01T00:00:00.000Z",
  "updatedAt": "2026-01-01T00:00:00.000Z",
  "linkStatus": "ok",
  "lastLinkCheckedAt": "2026-01-01T00:00:00.000Z",
  "snapshotEnabled": false,
  "readerExcerpt": "string",
  "videoEmbedUrl": "string",
  "isHeadlessPreviewBlocked": false,
  "headlessPreviewBlockedAt": "2026-01-01T00:00:00.000Z",
  "archive": {
    "status": "none",
    "retentionExpiresAt": "2026-01-01T00:00:00.000Z",
    "metadataId": "string"
  }
}

Errors return the standard envelope. See error reference.

Code samples

curl --request GET \
  --url 'https://api.not24get.me/api/v1/bookmarks/%3Abookmark_id' \
  --header 'Authorization: Bearer <your-api-key>' \
  --header 'Content-Type: application/json' \
  --header 'X-Workspace-ID: <workspace-id>'

Try it

Path parameters
Headers

Update bookmark (API key)

Partially updates bookmark fields such as title, tags, folder, or archive settings.

Technical details

Exact HTTP method and path your client calls

patch/api/v1/bookmarks/{bookmark_id}

Path parameters

NameTypeRequiredDescription
bookmark_idstringrequired

Headers

NameTypeRequiredDescription
X-Workspace-IDstringoptionalTarget workspace when the API key is tenant-wide or to disambiguate scope.

Request body

FieldTypeDescription
urlstring
titlestring
descriptionstring
tagsstring[]
folderIdstring
archiveCaptureboolean
noticeVersionstring
sortOrderinteger
snapshotEnabledboolean
readerExcerptstring
videoEmbedUrlstring

Responses

Update bookmark

FieldTypeDescription
idstring
tenantIdstring
workspaceIdstring
urlstring
titlestring
descriptionstring
tagsstring[]
folderIdstring
sortOrderinteger
createdAtstring<date-time> · date-time
updatedAtstring<date-time> · date-time
linkStatusstring
enum: okdeadunknown
lastLinkCheckedAtstring<date-time> · date-time
snapshotEnabledboolean
readerExcerptstring
videoEmbedUrlstring
isHeadlessPreviewBlockedboolean
headlessPreviewBlockedAtstring<date-time> · date-time
object
Example
{
  "id": "string",
  "tenantId": "string",
  "workspaceId": "string",
  "url": "string",
  "title": "string",
  "description": "string",
  "tags": [
    "string"
  ],
  "folderId": "string",
  "sortOrder": 0,
  "createdAt": "2026-01-01T00:00:00.000Z",
  "updatedAt": "2026-01-01T00:00:00.000Z",
  "linkStatus": "ok",
  "lastLinkCheckedAt": "2026-01-01T00:00:00.000Z",
  "snapshotEnabled": false,
  "readerExcerpt": "string",
  "videoEmbedUrl": "string",
  "isHeadlessPreviewBlocked": false,
  "headlessPreviewBlockedAt": "2026-01-01T00:00:00.000Z",
  "archive": {
    "status": "none",
    "retentionExpiresAt": "2026-01-01T00:00:00.000Z",
    "metadataId": "string"
  }
}

Errors return the standard envelope. See error reference.

Code samples

curl --request PATCH \
  --url 'https://api.not24get.me/api/v1/bookmarks/%3Abookmark_id' \
  --header 'Authorization: Bearer <your-api-key>' \
  --header 'Content-Type: application/json' \
  --header 'X-Workspace-ID: <workspace-id>' \
  --data '{
  "url": "string",
  "title": "string",
  "description": "string",
  "tags": [
    "string"
  ],
  "folderId": "string",
  "archiveCapture": false,
  "noticeVersion": "string",
  "sortOrder": 0,
  "snapshotEnabled": false,
  "readerExcerpt": "string",
  "videoEmbedUrl": "string"
}'

Try it

Path parameters
Headers
Request body (JSON)

Import bookmarks (API key)

Imports bookmarks from an uploaded HTML file into the target workspace. Optional folderId places bookmarks under that destination folder.

Technical details

Exact HTTP method and path your client calls

post/api/v1/bookmarks/imports

Query parameters

NameTypeRequiredDescription
folderIdstringoptional

Headers

NameTypeRequiredDescription
X-Workspace-IDstringoptionalTarget workspace when the API key is tenant-wide or to disambiguate scope.

Responses

Import bookmarks

FieldTypeDescription
importedinteger
skippedinteger
duplicatesSkippedinteger
errorsImportSummaryIssue[]
issuesImportSummaryIssue[]
Example
{
  "imported": 0,
  "skipped": 0,
  "duplicatesSkipped": 0,
  "errors": [
    null
  ],
  "issues": [
    null
  ]
}

Errors return the standard envelope. See error reference.

Code samples

curl --request POST \
  --url 'https://api.not24get.me/api/v1/bookmarks/imports' \
  --header 'Authorization: Bearer <your-api-key>' \
  --header 'Content-Type: application/json' \
  --header 'X-Workspace-ID: <workspace-id>'

Try it

Query parameters
Headers

List bookmarks

Lists bookmarks in the workspace with optional folder and tag filters.

Technical details

Exact HTTP method and path your client calls

get/workspaces/{workspaceId}/bookmarks

Path parameters

NameTypeRequiredDescription
workspaceIdstringrequired

Query parameters

NameTypeRequiredDescription
limitnumberoptional
offsetnumberoptional
tagstringoptional
folderIdstringoptional
sortBystringoptional
filterStatusstringoptional

Headers

NameTypeRequiredDescription
X-Workspace-IDstringoptionalTarget workspace when the API key is tenant-wide or to disambiguate scope.

Responses

List bookmarks in workspace

FieldTypeDescription
Bookmark[]
object
Bookmark in a workspace (serialized API shape).
Example
[
  {
    "id": "string",
    "tenantId": "string",
    "workspaceId": "string",
    "url": "string",
    "title": "string",
    "description": "string",
    "tags": [
      "string"
    ],
    "folderId": "string",
    "sortOrder": 0,
    "createdAt": "2026-01-01T00:00:00.000Z",
    "updatedAt": "2026-01-01T00:00:00.000Z",
    "linkStatus": "ok",
    "lastLinkCheckedAt": "2026-01-01T00:00:00.000Z",
    "snapshotEnabled": false,
    "readerExcerpt": "string",
    "videoEmbedUrl": "string",
    "isHeadlessPreviewBlocked": false,
    "headlessPreviewBlockedAt": "2026-01-01T00:00:00.000Z",
    "archive": {
      "status": "none",
      "retentionExpiresAt": "2026-01-01T00:00:00.000Z",
      "metadataId": "string"
    }
  }
]

Errors return the standard envelope. See error reference.

Code samples

curl --request GET \
  --url 'https://api.not24get.me/workspaces/%3AworkspaceId/bookmarks' \
  --header 'Authorization: Bearer <your-api-key>' \
  --header 'Content-Type: application/json' \
  --header 'X-Workspace-ID: <workspace-id>'

Try it

Path parameters
Query parameters
Headers
This endpoint requires a workspace ID. Set one in the API key dialog.

Create bookmark

Creates a bookmark in the workspace, optionally capturing archive metadata.

Technical details

Exact HTTP method and path your client calls

post/workspaces/{workspaceId}/bookmarks

Path parameters

NameTypeRequiredDescription
workspaceIdstringrequired

Headers

NameTypeRequiredDescription
X-Workspace-IDstringoptionalTarget workspace when the API key is tenant-wide or to disambiguate scope.

Request body

FieldTypeDescription
urlstring
titlestring
descriptionstring
tagsstring[]
folderIdstring
archiveCaptureboolean
noticeVersionstring
snapshotEnabledboolean
readerExcerptstring
videoEmbedUrlstring

Responses

Create bookmark

FieldTypeDescription
idstring
tenantIdstring
workspaceIdstring
urlstring
titlestring
descriptionstring
tagsstring[]
folderIdstring
sortOrderinteger
createdAtstring<date-time> · date-time
updatedAtstring<date-time> · date-time
linkStatusstring
enum: okdeadunknown
lastLinkCheckedAtstring<date-time> · date-time
snapshotEnabledboolean
readerExcerptstring
videoEmbedUrlstring
isHeadlessPreviewBlockedboolean
headlessPreviewBlockedAtstring<date-time> · date-time
object
Example
{
  "id": "string",
  "tenantId": "string",
  "workspaceId": "string",
  "url": "string",
  "title": "string",
  "description": "string",
  "tags": [
    "string"
  ],
  "folderId": "string",
  "sortOrder": 0,
  "createdAt": "2026-01-01T00:00:00.000Z",
  "updatedAt": "2026-01-01T00:00:00.000Z",
  "linkStatus": "ok",
  "lastLinkCheckedAt": "2026-01-01T00:00:00.000Z",
  "snapshotEnabled": false,
  "readerExcerpt": "string",
  "videoEmbedUrl": "string",
  "isHeadlessPreviewBlocked": false,
  "headlessPreviewBlockedAt": "2026-01-01T00:00:00.000Z",
  "archive": {
    "status": "none",
    "retentionExpiresAt": "2026-01-01T00:00:00.000Z",
    "metadataId": "string"
  }
}

Errors return the standard envelope. See error reference.

Code samples

curl --request POST \
  --url 'https://api.not24get.me/workspaces/%3AworkspaceId/bookmarks' \
  --header 'Authorization: Bearer <your-api-key>' \
  --header 'Content-Type: application/json' \
  --header 'X-Workspace-ID: <workspace-id>' \
  --data '{
  "url": "string",
  "title": "string",
  "description": "string",
  "tags": [
    "string"
  ],
  "folderId": "string",
  "archiveCapture": false,
  "noticeVersion": "string",
  "snapshotEnabled": false,
  "readerExcerpt": "string",
  "videoEmbedUrl": "string"
}'

Try it

Path parameters
Headers
Request body (JSON)
This endpoint requires a workspace ID. Set one in the API key dialog.

Delete bookmark

Soft-deletes a bookmark. Returns no body on success.

Technical details

Exact HTTP method and path your client calls

delete/workspaces/{workspaceId}/bookmarks/{id}

Path parameters

NameTypeRequiredDescription
workspaceIdstringrequired
idstringrequired

Headers

NameTypeRequiredDescription
X-Workspace-IDstringoptionalTarget workspace when the API key is tenant-wide or to disambiguate scope.

Responses

No Content

FieldTypeDescription
(value)EmptyResponsePart
Example
null

Errors return the standard envelope. See error reference.

Code samples

curl --request DELETE \
  --url 'https://api.not24get.me/workspaces/%3AworkspaceId/bookmarks/%3Aid' \
  --header 'Authorization: Bearer <your-api-key>' \
  --header 'Content-Type: application/json' \
  --header 'X-Workspace-ID: <workspace-id>'

Try it

Path parameters
Headers
This endpoint requires a workspace ID. Set one in the API key dialog.

Get bookmark

Returns a bookmark by id within the workspace.

Technical details

Exact HTTP method and path your client calls

get/workspaces/{workspaceId}/bookmarks/{id}

Path parameters

NameTypeRequiredDescription
workspaceIdstringrequired
idstringrequired

Headers

NameTypeRequiredDescription
X-Workspace-IDstringoptionalTarget workspace when the API key is tenant-wide or to disambiguate scope.

Responses

Get bookmark by id

FieldTypeDescription
idstring
tenantIdstring
workspaceIdstring
urlstring
titlestring
descriptionstring
tagsstring[]
folderIdstring
sortOrderinteger
createdAtstring<date-time> · date-time
updatedAtstring<date-time> · date-time
linkStatusstring
enum: okdeadunknown
lastLinkCheckedAtstring<date-time> · date-time
snapshotEnabledboolean
readerExcerptstring
videoEmbedUrlstring
isHeadlessPreviewBlockedboolean
headlessPreviewBlockedAtstring<date-time> · date-time
object
Example
{
  "id": "string",
  "tenantId": "string",
  "workspaceId": "string",
  "url": "string",
  "title": "string",
  "description": "string",
  "tags": [
    "string"
  ],
  "folderId": "string",
  "sortOrder": 0,
  "createdAt": "2026-01-01T00:00:00.000Z",
  "updatedAt": "2026-01-01T00:00:00.000Z",
  "linkStatus": "ok",
  "lastLinkCheckedAt": "2026-01-01T00:00:00.000Z",
  "snapshotEnabled": false,
  "readerExcerpt": "string",
  "videoEmbedUrl": "string",
  "isHeadlessPreviewBlocked": false,
  "headlessPreviewBlockedAt": "2026-01-01T00:00:00.000Z",
  "archive": {
    "status": "none",
    "retentionExpiresAt": "2026-01-01T00:00:00.000Z",
    "metadataId": "string"
  }
}

Errors return the standard envelope. See error reference.

Code samples

curl --request GET \
  --url 'https://api.not24get.me/workspaces/%3AworkspaceId/bookmarks/%3Aid' \
  --header 'Authorization: Bearer <your-api-key>' \
  --header 'Content-Type: application/json' \
  --header 'X-Workspace-ID: <workspace-id>'

Try it

Path parameters
Headers
This endpoint requires a workspace ID. Set one in the API key dialog.

Update bookmark

Partially updates bookmark fields such as title, tags, folder, or reader excerpt.

Technical details

Exact HTTP method and path your client calls

patch/workspaces/{workspaceId}/bookmarks/{id}

Path parameters

NameTypeRequiredDescription
workspaceIdstringrequired
idstringrequired

Headers

NameTypeRequiredDescription
X-Workspace-IDstringoptionalTarget workspace when the API key is tenant-wide or to disambiguate scope.

Request body

FieldTypeDescription
urlstring
titlestring
descriptionstring
tagsstring[]
folderIdstring
archiveCaptureboolean
noticeVersionstring
sortOrderinteger
snapshotEnabledboolean
readerExcerptstring
videoEmbedUrlstring

Responses

Update bookmark

FieldTypeDescription
idstring
tenantIdstring
workspaceIdstring
urlstring
titlestring
descriptionstring
tagsstring[]
folderIdstring
sortOrderinteger
createdAtstring<date-time> · date-time
updatedAtstring<date-time> · date-time
linkStatusstring
enum: okdeadunknown
lastLinkCheckedAtstring<date-time> · date-time
snapshotEnabledboolean
readerExcerptstring
videoEmbedUrlstring
isHeadlessPreviewBlockedboolean
headlessPreviewBlockedAtstring<date-time> · date-time
object
Example
{
  "id": "string",
  "tenantId": "string",
  "workspaceId": "string",
  "url": "string",
  "title": "string",
  "description": "string",
  "tags": [
    "string"
  ],
  "folderId": "string",
  "sortOrder": 0,
  "createdAt": "2026-01-01T00:00:00.000Z",
  "updatedAt": "2026-01-01T00:00:00.000Z",
  "linkStatus": "ok",
  "lastLinkCheckedAt": "2026-01-01T00:00:00.000Z",
  "snapshotEnabled": false,
  "readerExcerpt": "string",
  "videoEmbedUrl": "string",
  "isHeadlessPreviewBlocked": false,
  "headlessPreviewBlockedAt": "2026-01-01T00:00:00.000Z",
  "archive": {
    "status": "none",
    "retentionExpiresAt": "2026-01-01T00:00:00.000Z",
    "metadataId": "string"
  }
}

Errors return the standard envelope. See error reference.

Code samples

curl --request PATCH \
  --url 'https://api.not24get.me/workspaces/%3AworkspaceId/bookmarks/%3Aid' \
  --header 'Authorization: Bearer <your-api-key>' \
  --header 'Content-Type: application/json' \
  --header 'X-Workspace-ID: <workspace-id>' \
  --data '{
  "url": "string",
  "title": "string",
  "description": "string",
  "tags": [
    "string"
  ],
  "folderId": "string",
  "archiveCapture": false,
  "noticeVersion": "string",
  "sortOrder": 0,
  "snapshotEnabled": false,
  "readerExcerpt": "string",
  "videoEmbedUrl": "string"
}'

Try it

Path parameters
Headers
Request body (JSON)
This endpoint requires a workspace ID. Set one in the API key dialog.

Mint in-app browser stream session

Returns a short-lived page-stream JWT and WebSocket URL for Live (mode live or legacy web) or snapshot playback. Snapshot mode requires permanentArchive.

Technical details

Exact HTTP method and path your client calls

post/workspaces/{workspaceId}/bookmarks/{id}/browser-session

Path parameters

NameTypeRequiredDescription
workspaceIdstringrequired
idstringrequired

Headers

NameTypeRequiredDescription
X-Workspace-IDstringoptionalTarget workspace when the API key is tenant-wide or to disambiguate scope.

Request body

FieldTypeDescription
moderequiredstring
enum: livewebsnapshot
snapshotIdstring

Responses

Mint page-stream JWT for Live or snapshot playback (SL-492/SL-590)

FieldTypeDescription
streamUrlstring
tokenstring
expiresAtstring<date-time> · date-time
modestring
enum: livewebsnapshot
jtistring
Example
{
  "streamUrl": "string",
  "token": "string",
  "expiresAt": "2026-01-01T00:00:00.000Z",
  "mode": "live",
  "jti": "string"
}

Errors return the standard envelope. See error reference.

Code samples

curl --request POST \
  --url 'https://api.not24get.me/workspaces/%3AworkspaceId/bookmarks/%3Aid/browser-session' \
  --header 'Authorization: Bearer <your-api-key>' \
  --header 'Content-Type: application/json' \
  --header 'X-Workspace-ID: <workspace-id>' \
  --data '{
  "mode": "live",
  "snapshotId": "string"
}'

Try it

Path parameters
Headers
Request body (JSON)
This endpoint requires a workspace ID. Set one in the API key dialog.

Enrich bookmark metadata

Fills blank title, description, and tags from link preview when available.

Technical details

Exact HTTP method and path your client calls

post/workspaces/{workspaceId}/bookmarks/{id}/enrich-metadata

Path parameters

NameTypeRequiredDescription
workspaceIdstringrequired
idstringrequired

Headers

NameTypeRequiredDescription
X-Workspace-IDstringoptionalTarget workspace when the API key is tenant-wide or to disambiguate scope.

Responses

Fill blank bookmark title, description, and tags from LinkPreview when configured

FieldTypeDescription
idstring
tenantIdstring
workspaceIdstring
urlstring
titlestring
descriptionstring
tagsstring[]
folderIdstring
sortOrderinteger
createdAtstring<date-time> · date-time
updatedAtstring<date-time> · date-time
linkStatusstring
enum: okdeadunknown
lastLinkCheckedAtstring<date-time> · date-time
snapshotEnabledboolean
readerExcerptstring
videoEmbedUrlstring
isHeadlessPreviewBlockedboolean
headlessPreviewBlockedAtstring<date-time> · date-time
object
Example
{
  "id": "string",
  "tenantId": "string",
  "workspaceId": "string",
  "url": "string",
  "title": "string",
  "description": "string",
  "tags": [
    "string"
  ],
  "folderId": "string",
  "sortOrder": 0,
  "createdAt": "2026-01-01T00:00:00.000Z",
  "updatedAt": "2026-01-01T00:00:00.000Z",
  "linkStatus": "ok",
  "lastLinkCheckedAt": "2026-01-01T00:00:00.000Z",
  "snapshotEnabled": false,
  "readerExcerpt": "string",
  "videoEmbedUrl": "string",
  "isHeadlessPreviewBlocked": false,
  "headlessPreviewBlockedAt": "2026-01-01T00:00:00.000Z",
  "archive": {
    "status": "none",
    "retentionExpiresAt": "2026-01-01T00:00:00.000Z",
    "metadataId": "string"
  }
}

Errors return the standard envelope. See error reference.

Code samples

curl --request POST \
  --url 'https://api.not24get.me/workspaces/%3AworkspaceId/bookmarks/%3Aid/enrich-metadata' \
  --header 'Authorization: Bearer <your-api-key>' \
  --header 'Content-Type: application/json' \
  --header 'X-Workspace-ID: <workspace-id>'

Try it

Path parameters
Headers
This endpoint requires a workspace ID. Set one in the API key dialog.

Get reader payload

Returns reader-mode HTML or excerpt content for a bookmark.

Technical details

Exact HTTP method and path your client calls

get/workspaces/{workspaceId}/bookmarks/{id}/reader

Path parameters

NameTypeRequiredDescription
workspaceIdstringrequired
idstringrequired

Headers

NameTypeRequiredDescription
X-Workspace-IDstringoptionalTarget workspace when the API key is tenant-wide or to disambiguate scope.

Responses

Reader preview payload (SL-378)

FieldTypeDescription
modestring
titlestring
domainstring
savedAtstring<date-time> · date-time
linkStatusstring
enum: okdeadunknown
snapshotEnabledboolean
ReaderParagraph[]
object
Example
{
  "mode": "string",
  "title": "string",
  "domain": "string",
  "savedAt": "2026-01-01T00:00:00.000Z",
  "linkStatus": "ok",
  "snapshotEnabled": false,
  "paragraphs": [
    {
      "text": "string",
      "kind": "string"
    }
  ],
  "media": {
    "videoEmbedUrl": "string"
  }
}

Errors return the standard envelope. See error reference.

Code samples

curl --request GET \
  --url 'https://api.not24get.me/workspaces/%3AworkspaceId/bookmarks/%3Aid/reader' \
  --header 'Authorization: Bearer <your-api-key>' \
  --header 'Content-Type: application/json' \
  --header 'X-Workspace-ID: <workspace-id>'

Try it

Path parameters
Headers
This endpoint requires a workspace ID. Set one in the API key dialog.

List bookmark snapshots

Lists active FIFO snapshots for a bookmark (Pro+ permanentArchive). Free plans receive 403.

Technical details

Exact HTTP method and path your client calls

get/workspaces/{workspaceId}/bookmarks/{id}/snapshots

Path parameters

NameTypeRequiredDescription
workspaceIdstringrequired
idstringrequired

Headers

NameTypeRequiredDescription
X-Workspace-IDstringoptionalTarget workspace when the API key is tenant-wide or to disambiguate scope.

Responses

List bookmark snapshots (Pro+ permanentArchive)

FieldTypeDescription
BookmarkSnapshotSummary[]
object
Example
[
  {
    "id": "string",
    "trigger": "auto",
    "schemaVersion": 0,
    "capturedAt": "2026-01-01T00:00:00.000Z",
    "sizeBytes": 0,
    "paragraphCount": 0,
    "latest": false
  }
]

Errors return the standard envelope. See error reference.

Code samples

curl --request GET \
  --url 'https://api.not24get.me/workspaces/%3AworkspaceId/bookmarks/%3Aid/snapshots' \
  --header 'Authorization: Bearer <your-api-key>' \
  --header 'Content-Type: application/json' \
  --header 'X-Workspace-ID: <workspace-id>'

Try it

Path parameters
Headers
This endpoint requires a workspace ID. Set one in the API key dialog.

Capture bookmark snapshot

Manually captures an archive v3 snapshot and enforces ≤5 FIFO retention (Pro+ permanentArchive).

Technical details

Exact HTTP method and path your client calls

post/workspaces/{workspaceId}/bookmarks/{id}/snapshots

Path parameters

NameTypeRequiredDescription
workspaceIdstringrequired
idstringrequired

Headers

NameTypeRequiredDescription
X-Workspace-IDstringoptionalTarget workspace when the API key is tenant-wide or to disambiguate scope.

Responses

Manual snapshot capture (Pro+)

FieldTypeDescription
idstring
triggerstring
enum: automanual
schemaVersioninteger
capturedAtstring<date-time> · date-time
sizeBytesinteger
paragraphCountinteger
latestboolean
Example
{
  "id": "string",
  "trigger": "auto",
  "schemaVersion": 0,
  "capturedAt": "2026-01-01T00:00:00.000Z",
  "sizeBytes": 0,
  "paragraphCount": 0,
  "latest": false
}

Errors return the standard envelope. See error reference.

Code samples

curl --request POST \
  --url 'https://api.not24get.me/workspaces/%3AworkspaceId/bookmarks/%3Aid/snapshots' \
  --header 'Authorization: Bearer <your-api-key>' \
  --header 'Content-Type: application/json' \
  --header 'X-Workspace-ID: <workspace-id>'

Try it

Path parameters
Headers
This endpoint requires a workspace ID. Set one in the API key dialog.

Compare bookmark snapshots

Returns text or visual diff between a snapshot and live page or another snapshot (Pro+ permanentArchive).

Technical details

Exact HTTP method and path your client calls

get/workspaces/{workspaceId}/bookmarks/{id}/snapshots/{snapshotId}/diff

Path parameters

NameTypeRequiredDescription
workspaceIdstringrequired
idstringrequired
snapshotIdstringrequired

Query parameters

NameTypeRequiredDescription
vsstringoptional
kindstringoptional

Headers

NameTypeRequiredDescription
X-Workspace-IDstringoptionalTarget workspace when the API key is tenant-wide or to disambiguate scope.

Responses

Text or visual diff vs live or another snapshot (Pro+)

FieldTypeDescription
(value)SnapshotDiffResultPart
Example
null

Errors return the standard envelope. See error reference.

Code samples

curl --request GET \
  --url 'https://api.not24get.me/workspaces/%3AworkspaceId/bookmarks/%3Aid/snapshots/%3AsnapshotId/diff' \
  --header 'Authorization: Bearer <your-api-key>' \
  --header 'Content-Type: application/json' \
  --header 'X-Workspace-ID: <workspace-id>'

Try it

Path parameters
Query parameters
Headers
This endpoint requires a workspace ID. Set one in the API key dialog.

List failed bookmark snapshot captures

Lists captures that could not produce a copy, with the reason and the next scheduled retry. Sites that block automated access report `bot-challenge`.

Technical details

Exact HTTP method and path your client calls

get/workspaces/{workspaceId}/bookmarks/{id}/snapshots/failed

Path parameters

NameTypeRequiredDescription
workspaceIdstringrequired
idstringrequired

Headers

NameTypeRequiredDescription
X-Workspace-IDstringoptionalTarget workspace when the API key is tenant-wide or to disambiguate scope.

Responses

List failed snapshot captures (Pro+ permanentArchive)

FieldTypeDescription
(value)array
Example
[]

Errors return the standard envelope. See error reference.

Code samples

curl --request GET \
  --url 'https://api.not24get.me/workspaces/%3AworkspaceId/bookmarks/%3Aid/snapshots/failed' \
  --header 'Authorization: Bearer <your-api-key>' \
  --header 'Content-Type: application/json' \
  --header 'X-Workspace-ID: <workspace-id>'

Try it

Path parameters
Headers
This endpoint requires a workspace ID. Set one in the API key dialog.

Get bookmark Web-capture status

Returns per-device Web-capture status and image paths (Pro+ permanentArchive). Free plans receive 403.

Technical details

Exact HTTP method and path your client calls

get/workspaces/{workspaceId}/bookmarks/{id}/web-capture

Path parameters

NameTypeRequiredDescription
workspaceIdstringrequired
idstringrequired

Headers

NameTypeRequiredDescription
X-Workspace-IDstringoptionalTarget workspace when the API key is tenant-wide or to disambiguate scope.

Responses

Web-capture view (SL-590)

FieldTypeDescription
(value)WebCaptureViewPart
Example
null

Errors return the standard envelope. See error reference.

Code samples

curl --request GET \
  --url 'https://api.not24get.me/workspaces/%3AworkspaceId/bookmarks/%3Aid/web-capture' \
  --header 'Authorization: Bearer <your-api-key>' \
  --header 'Content-Type: application/json' \
  --header 'X-Workspace-ID: <workspace-id>'

Try it

Path parameters
Headers
This endpoint requires a workspace ID. Set one in the API key dialog.

Download Web-capture PNG

Streams a stored Web-capture viewport PNG (Pro+ permanentArchive).

Technical details

Exact HTTP method and path your client calls

get/workspaces/{workspaceId}/bookmarks/{id}/web-capture/{viewport}/image

Path parameters

NameTypeRequiredDescription
workspaceIdstringrequired
idstringrequired
viewportstringrequired

Headers

NameTypeRequiredDescription
X-Workspace-IDstringoptionalTarget workspace when the API key is tenant-wide or to disambiguate scope.

Responses

PNG image bytes

Errors return the standard envelope. See error reference.

Code samples

curl --request GET \
  --url 'https://api.not24get.me/workspaces/%3AworkspaceId/bookmarks/%3Aid/web-capture/%3Aviewport/image' \
  --header 'Authorization: Bearer <your-api-key>' \
  --header 'Content-Type: application/json' \
  --header 'X-Workspace-ID: <workspace-id>'

Try it

Path parameters
Headers
This endpoint requires a workspace ID. Set one in the API key dialog.

Refresh bookmark Web captures

Re-renders desktop/tablet/mobile above-the-fold PNGs and overwrites Web-capture keys (Pro+).

Technical details

Exact HTTP method and path your client calls

post/workspaces/{workspaceId}/bookmarks/{id}/web-capture/refresh

Path parameters

NameTypeRequiredDescription
workspaceIdstringrequired
idstringrequired

Headers

NameTypeRequiredDescription
X-Workspace-IDstringoptionalTarget workspace when the API key is tenant-wide or to disambiguate scope.

Responses

Web-capture refresh result (SL-590)

FieldTypeDescription
(value)WebCaptureViewPart
Example
null

Errors return the standard envelope. See error reference.

Code samples

curl --request POST \
  --url 'https://api.not24get.me/workspaces/%3AworkspaceId/bookmarks/%3Aid/web-capture/refresh' \
  --header 'Authorization: Bearer <your-api-key>' \
  --header 'Content-Type: application/json' \
  --header 'X-Workspace-ID: <workspace-id>'

Try it

Path parameters
Headers
This endpoint requires a workspace ID. Set one in the API key dialog.

Upload extension Web captures

Accepts base64 PNG payloads for desktop/tablet/mobile from the browser extension (Pro+).

Technical details

Exact HTTP method and path your client calls

put/workspaces/{workspaceId}/bookmarks/{id}/web-capture/upload

Path parameters

NameTypeRequiredDescription
workspaceIdstringrequired
idstringrequired

Headers

NameTypeRequiredDescription
X-Workspace-IDstringoptionalTarget workspace when the API key is tenant-wide or to disambiguate scope.

Request body

FieldTypeDescription
desktopstring
Base64 PNG
tabletstring
Base64 PNG
mobilestring
Base64 PNG

Responses

Web-capture upload result (SL-590)

FieldTypeDescription
(value)WebCaptureViewPart
Example
null

Errors return the standard envelope. See error reference.

Code samples

curl --request PUT \
  --url 'https://api.not24get.me/workspaces/%3AworkspaceId/bookmarks/%3Aid/web-capture/upload' \
  --header 'Authorization: Bearer <your-api-key>' \
  --header 'Content-Type: application/json' \
  --header 'X-Workspace-ID: <workspace-id>' \
  --data '{
  "desktop": "string",
  "tablet": "string",
  "mobile": "string"
}'

Try it

Path parameters
Headers
Request body (JSON)
This endpoint requires a workspace ID. Set one in the API key dialog.

Bulk delete bookmarks

Deletes multiple bookmarks by id in one request.

Technical details

Exact HTTP method and path your client calls

post/workspaces/{workspaceId}/bookmarks/bulk-delete

Path parameters

NameTypeRequiredDescription
workspaceIdstringrequired

Headers

NameTypeRequiredDescription
X-Workspace-IDstringoptionalTarget workspace when the API key is tenant-wide or to disambiguate scope.

Request body

FieldTypeDescription
idsrequiredstring[]

Responses

Bulk delete bookmarks by id (SL-15)

FieldTypeDescription
deletednumber
notFoundInScopenumber
Example
{
  "deleted": 0,
  "notFoundInScope": 0
}

Errors return the standard envelope. See error reference.

Code samples

curl --request POST \
  --url 'https://api.not24get.me/workspaces/%3AworkspaceId/bookmarks/bulk-delete' \
  --header 'Authorization: Bearer <your-api-key>' \
  --header 'Content-Type: application/json' \
  --header 'X-Workspace-ID: <workspace-id>' \
  --data '{
  "ids": [
    "string"
  ]
}'

Try it

Path parameters
Headers
Request body (JSON)
This endpoint requires a workspace ID. Set one in the API key dialog.

Count bookmarks

Returns bookmark counts optionally filtered by folder or tag.

Technical details

Exact HTTP method and path your client calls

get/workspaces/{workspaceId}/bookmarks/count

Path parameters

NameTypeRequiredDescription
workspaceIdstringrequired

Query parameters

NameTypeRequiredDescription
tagstringoptional
folderIdstringoptional

Headers

NameTypeRequiredDescription
X-Workspace-IDstringoptionalTarget workspace when the API key is tenant-wide or to disambiguate scope.

Responses

Count bookmarks in workspace (optionally by folder or tag)

FieldTypeDescription
totalnumber
Example
{
  "total": 0
}

Errors return the standard envelope. See error reference.

Code samples

curl --request GET \
  --url 'https://api.not24get.me/workspaces/%3AworkspaceId/bookmarks/count' \
  --header 'Authorization: Bearer <your-api-key>' \
  --header 'Content-Type: application/json' \
  --header 'X-Workspace-ID: <workspace-id>'

Try it

Path parameters
Query parameters
Headers
This endpoint requires a workspace ID. Set one in the API key dialog.

Delete bookmarks by scope

Deletes bookmarks matching folder, tag, or search scope rules.

Technical details

Exact HTTP method and path your client calls

post/workspaces/{workspaceId}/bookmarks/delete-by-scope

Path parameters

NameTypeRequiredDescription
workspaceIdstringrequired

Headers

NameTypeRequiredDescription
X-Workspace-IDstringoptionalTarget workspace when the API key is tenant-wide or to disambiguate scope.

Request body

FieldTypeDescription
(union)DeleteBookmarksByScopeAllRequest | DeleteBookmarksByScopeFolderRequest

Responses

Delete all bookmarks in workspace or folder scope (SL-15)

FieldTypeDescription
deletednumber
Example
{
  "deleted": 0
}

Errors return the standard envelope. See error reference.

Code samples

curl --request POST \
  --url 'https://api.not24get.me/workspaces/%3AworkspaceId/bookmarks/delete-by-scope' \
  --header 'Authorization: Bearer <your-api-key>' \
  --header 'Content-Type: application/json' \
  --header 'X-Workspace-ID: <workspace-id>' \
  --data 'null'

Try it

Path parameters
Headers
Request body (JSON)
This endpoint requires a workspace ID. Set one in the API key dialog.

Export bookmarks JSON

Downloads a JSON export of bookmarks in the workspace.

Technical details

Exact HTTP method and path your client calls

get/workspaces/{workspaceId}/bookmarks/export

Path parameters

NameTypeRequiredDescription
workspaceIdstringrequired

Query parameters

NameTypeRequiredDescription
formatstringoptional
tagstringoptional
folderIdstringoptional
sortBystringoptional
filterStatusstringoptional

Headers

NameTypeRequiredDescription
X-Workspace-IDstringoptionalTarget workspace when the API key is tenant-wide or to disambiguate scope.

Responses

Export filtered bookmarks as JSON or CSV (SL-378)

FieldTypeDescription
(value)string
JSON bookmark export payload.
Example
"string"

Errors return the standard envelope. See error reference.

Code samples

curl --request GET \
  --url 'https://api.not24get.me/workspaces/%3AworkspaceId/bookmarks/export' \
  --header 'Authorization: Bearer <your-api-key>' \
  --header 'Content-Type: application/json' \
  --header 'X-Workspace-ID: <workspace-id>'

Try it

Path parameters
Query parameters
Headers
This endpoint requires a workspace ID. Set one in the API key dialog.

Import bookmarks

Imports bookmarks from an uploaded HTML file. Optional folderId places every imported bookmark directly in that destination folder (HTML folder paths are ignored). Omit folderId to import at workspace root and preserve HTML folder structure.

Technical details

Exact HTTP method and path your client calls

post/workspaces/{workspaceId}/bookmarks/import

Path parameters

NameTypeRequiredDescription
workspaceIdstringrequired

Query parameters

NameTypeRequiredDescription
folderIdstringoptional

Headers

NameTypeRequiredDescription
X-Workspace-IDstringoptionalTarget workspace when the API key is tenant-wide or to disambiguate scope.

Responses

Import bookmarks from Netscape HTML export

FieldTypeDescription
importedinteger
skippedinteger
duplicatesSkippedinteger
errorsImportSummaryIssue[]
issuesImportSummaryIssue[]
Example
{
  "imported": 0,
  "skipped": 0,
  "duplicatesSkipped": 0,
  "errors": [
    null
  ],
  "issues": [
    null
  ]
}

Errors return the standard envelope. See error reference.

Code samples

curl --request POST \
  --url 'https://api.not24get.me/workspaces/%3AworkspaceId/bookmarks/import' \
  --header 'Authorization: Bearer <your-api-key>' \
  --header 'Content-Type: application/json' \
  --header 'X-Workspace-ID: <workspace-id>'

Try it

Path parameters
Query parameters
Headers
This endpoint requires a workspace ID. Set one in the API key dialog.

Preview URL metadata (cached)

Returns link preview title, description, and image for a URL (Save form and gallery). Serves the platform Mongo cache when fresh (14-day TTL, cross-tenant); calls URLPreview.com only on miss or expiry (NFR-378-009).

Technical details

Exact HTTP method and path your client calls

post/workspaces/{workspaceId}/bookmarks/preview-url

Path parameters

NameTypeRequiredDescription
workspaceIdstringrequired

Headers

NameTypeRequiredDescription
X-Workspace-IDstringoptionalTarget workspace when the API key is tenant-wide or to disambiguate scope.

Request body

FieldTypeDescription
urlstring

Responses

Fetch title, description, and image for a URL via cached URLPreview (Save form / gallery)

FieldTypeDescription
titlestring
descriptionstring
imagestring
urlstring
suggestedTagstring
Example
{
  "title": "string",
  "description": "string",
  "image": "string",
  "url": "string",
  "suggestedTag": "string"
}

Errors return the standard envelope. See error reference.

Code samples

curl --request POST \
  --url 'https://api.not24get.me/workspaces/%3AworkspaceId/bookmarks/preview-url' \
  --header 'Authorization: Bearer <your-api-key>' \
  --header 'Content-Type: application/json' \
  --header 'X-Workspace-ID: <workspace-id>' \
  --data '{
  "url": "string"
}'

Try it

Path parameters
Headers
Request body (JSON)
This endpoint requires a workspace ID. Set one in the API key dialog.

Search archived snapshots

Searches text extracted from archived page snapshots.

Technical details

Exact HTTP method and path your client calls

get/workspaces/{workspaceId}/bookmarks/snapshot-search

Path parameters

NameTypeRequiredDescription
workspaceIdstringrequired

Query parameters

NameTypeRequiredDescription
qstringoptional
limitnumberoptional
offsetnumberoptional

Headers

NameTypeRequiredDescription
X-Workspace-IDstringoptionalTarget workspace when the API key is tenant-wide or to disambiguate scope.

Responses

Search within snapshot text index (SL-378)

FieldTypeDescription
SnapshotSearchHit[]
object
Example
[
  {
    "bookmarkId": "string",
    "excerpt": "string"
  }
]

Errors return the standard envelope. See error reference.

Code samples

curl --request GET \
  --url 'https://api.not24get.me/workspaces/%3AworkspaceId/bookmarks/snapshot-search' \
  --header 'Authorization: Bearer <your-api-key>' \
  --header 'Content-Type: application/json' \
  --header 'X-Workspace-ID: <workspace-id>'

Try it

Path parameters
Query parameters
Headers
This endpoint requires a workspace ID. Set one in the API key dialog.

Export bookmarks HTML

Downloads a Netscape bookmark HTML export for the workspace.

Technical details

Exact HTTP method and path your client calls

get/workspaces/{workspaceId}/export/bookmarks.html

Path parameters

NameTypeRequiredDescription
workspaceIdstringrequired

Headers

NameTypeRequiredDescription
X-Workspace-IDstringoptionalTarget workspace when the API key is tenant-wide or to disambiguate scope.

Responses

Netscape bookmark file for the workspace (SL-24)

Errors return the standard envelope. See error reference.

Code samples

curl --request GET \
  --url 'https://api.not24get.me/workspaces/%3AworkspaceId/export/bookmarks.html' \
  --header 'Authorization: Bearer <your-api-key>' \
  --header 'Content-Type: application/json' \
  --header 'X-Workspace-ID: <workspace-id>'

Try it

Path parameters
Headers
This endpoint requires a workspace ID. Set one in the API key dialog.