Links
Save, find, change and delete links. A link is yours alone: saving a page someone else saved makes your own link to it.
List your links, newest first
GET/api/v1/bookmarks
Query
-
cursorstringThenext_cursorfrom the previous page. -
limitintegerHow many links per page. -
collectionarray of string (uuid) or stringCollection ids;unsortedmatches links in no collection. A link matches if it’s in any of them. Up to 20: comma-separated, repeated, or with brackets (name[]=). -
tagarray of string (uuid)Tag ids. A link matches if it has any of them. Up to 20: comma-separated, repeated, or with brackets (name[]=). -
sourcearray of string (uuid)Source ids. A link matches if any of them saved it. Up to 20: comma-separated, repeated, or with brackets (name[]=). -
visibilitystringOnly public or only private links.One ofpublic,private -
statusstringdead: only links that no longer work.Alwaysdead -
copystringsaved: only links with a saved copy of the page.full: only those whose copy keeps the whole page.none: only links without a copy.One ofsaved,full,none -
domainarray of stringSites, likeexample.com. A link matches if it’s on any of them or their subdomains (example.comcoversblog.example.com);www.is ignored. Up to 20: comma-separated, repeated, or with brackets (name[]=). -
saved_afterstring (date) or string (date-time)Only links saved at or after this: a day (2024-01-31, from midnight UTC) or a time. -
saved_beforestring (date) or string (date-time)Only links saved before this: a day (2024-01-31, before midnight UTC) or a time. -
qstringSearch titles, descriptions, notes and saved pages. Title matches come first, then other details, then saved pages; newest first within each.
Returns
curl https://trovemarks.com/api/v1/bookmarks \
-H "Authorization: Bearer tm_…"
Save a link
POST/api/v1/bookmarks
Returns straight away; the title, description and icon are fetched in the background. Saving a link that is already saved returns 200 instead of 201 and only adds any new collections and tags: title, note and private are ignored, so change those with PATCH /bookmarks/{id}.
Body
-
urlstringrequiredThe link. A bare domain likeexample.comis fine; it’s normalised before saving. -
titlestringYour own title. Leave it out to use the page’s title, which is fetched after the save returns; until then the link shows its URL. -
notestring -
privatebooleanLeave it out to use the source’s default, then your account’s. -
collection_idsarray of string (uuid)Collections to add the link to. With neither this norcollection_names, a new link goes in the source’s default collection, if it has one. -
collection_namesarray of stringCollections by title, matched ignoring case; missing ones are created, private. Added tocollection_ids. On the free plan, names past the collection limit become tags instead and are listed incollection_names_as_tags. -
tagsarray of stringTag names, matched ignoring case; missing ones are created. A leading#is dropped and commas aren’t allowed. When a tag already exists its spelling is kept. The source’s automatic tags are added too.
Returns
- 200Already saved · object
- 201Saved · object
- 400 401 404 429Errors
curl -X POST https://trovemarks.com/api/v1/bookmarks \
-H "Authorization: Bearer tm_…" \
-H "Content-Type: application/json" \
-d '{"url":"https://example.com/article"}'
Change, file or delete many links at once
POST/api/v1/bookmarks/bulk
Send either ids (up to 500) or a filter (the list filters and search, up to 10,000 matching links) and one action. Visibility, tags and collections change straight away; copies are queued. Filing into a collection keeps each link’s visibility but takes a fuller copy if the collection keeps one.
Body
-
idsarray of string (uuid)Links picked one by one. -
filterobjectEvery link matching these list filters and search, up to 10,000.-
collectionstring or array of stringCollection ids;unsortedmatches links in no collection. A link matches if it’s in any of them. Up to 20: comma-separated, repeated, or with brackets (name[]=). -
tagstring or array of stringTag ids. A link matches if it has any of them. Up to 20: comma-separated, repeated, or with brackets (name[]=). -
sourcestring or array of stringSource ids. A link matches if any of them saved it. Up to 20: comma-separated, repeated, or with brackets (name[]=). -
visibilitystringOnly public or only private links.One ofpublic,private -
statusstringdead: only links that no longer work.Alwaysdead -
copystringsaved: only links with a saved copy of the page.full: only those whose copy keeps the whole page.none: only links without a copy.One ofsaved,full,none -
domainstring or array of stringSites, likeexample.com. A link matches if it’s on any of them or their subdomains (example.comcoversblog.example.com);www.is ignored. Up to 20: comma-separated, repeated, or with brackets (name[]=). -
saved_afterstring (date) or string (date-time)Only links saved at or after this: a day (2024-01-31, from midnight UTC) or a time. -
saved_beforestring (date) or string (date-time)Only links saved before this: a day (2024-01-31, before midnight UTC) or a time. -
qstringSearch titles, descriptions, notes and saved pages. Title matches come first, then other details, then saved pages; newest first within each.
-
-
actionobjectrequiredWhentypeisvisibility-
typestringrequiredAlwaysvisibility -
privatebooleanrequired
Whentypeiscopy-
typestringrequiredAlwayscopy -
modestringrequiredreadableorfullkeeps a copy where a link has a less complete one;offremoves copies.One ofoff,readable,full
Whentypeistags-
typestringrequiredAlwaystags -
addarray of stringTag names; new ones are created. -
removearray of string (uuid)Tag ids.
Whentypeiscollections-
typestringrequiredAlwayscollections -
addarray of string (uuid) -
removearray of string (uuid)
Whentypeisdelete-
typestringrequiredAlwaysdelete
-
Returns
- 200What changed · BulkResult
- 400 401 404 429Errors
curl -X POST https://trovemarks.com/api/v1/bookmarks/bulk \
-H "Authorization: Bearer tm_…" \
-H "Content-Type: application/json" \
-d '{"action":{"type":"visibility","private":false}}'
Describe a selection of links
POST/api/v1/bookmarks/bulk/summary
How many links ids or filter covers, and their visibility, copies, collections and tags.
Body
-
idsarray of string (uuid)Links picked one by one. -
filterobjectEvery link matching these list filters and search, up to 10,000.-
collectionstring or array of stringCollection ids;unsortedmatches links in no collection. A link matches if it’s in any of them. Up to 20: comma-separated, repeated, or with brackets (name[]=). -
tagstring or array of stringTag ids. A link matches if it has any of them. Up to 20: comma-separated, repeated, or with brackets (name[]=). -
sourcestring or array of stringSource ids. A link matches if any of them saved it. Up to 20: comma-separated, repeated, or with brackets (name[]=). -
visibilitystringOnly public or only private links.One ofpublic,private -
statusstringdead: only links that no longer work.Alwaysdead -
copystringsaved: only links with a saved copy of the page.full: only those whose copy keeps the whole page.none: only links without a copy.One ofsaved,full,none -
domainstring or array of stringSites, likeexample.com. A link matches if it’s on any of them or their subdomains (example.comcoversblog.example.com);www.is ignored. Up to 20: comma-separated, repeated, or with brackets (name[]=). -
saved_afterstring (date) or string (date-time)Only links saved at or after this: a day (2024-01-31, from midnight UTC) or a time. -
saved_beforestring (date) or string (date-time)Only links saved before this: a day (2024-01-31, before midnight UTC) or a time. -
qstringSearch titles, descriptions, notes and saved pages. Title matches come first, then other details, then saved pages; newest first within each.
-
Returns
- 200The selection · BulkSummary
- 400 401 404 429Errors
curl -X POST https://trovemarks.com/api/v1/bookmarks/bulk/summary \
-H "Authorization: Bearer tm_…" \
-H "Content-Type: application/json" \
-d '{"ids":["0b7e4c1a-5d2f-4e8a-9c3b-6a1f2e8d7c40"],"filter":{"collection":"text","tag":"text"}}'
Find your saved link for a URL
GET/api/v1/bookmarks/lookup
Query
-
urlstringrequired
Returns
curl https://trovemarks.com/api/v1/bookmarks/lookup?url=https%3A%2F%2Fexample.com%2Farticle \
-H "Authorization: Bearer tm_…"
Get a link
GET/api/v1/bookmarks/{id}
Path
-
idstring (uuid)required
Returns
curl https://trovemarks.com/api/v1/bookmarks/0b7e4c1a-5d2f-4e8a-9c3b-6a1f2e8d7c40 \
-H "Authorization: Bearer tm_…"
Change a link
PATCH/api/v1/bookmarks/{id}
collection_ids and tags replace what is there.
Path
-
idstring (uuid)required
Body
-
urlstringMoves the bookmark to another link, e.g. to drop extra query parameters. Fails with 409 if that link is already in your library. -
titlestring or null -
notestring or null -
privateboolean -
collection_idsarray of string (uuid) -
tagsarray of string -
comments_disabledboolean
Returns
curl -X PATCH https://trovemarks.com/api/v1/bookmarks/0b7e4c1a-5d2f-4e8a-9c3b-6a1f2e8d7c40 \
-H "Authorization: Bearer tm_…" \
-H "Content-Type: application/json" \
-d '{"url":"https://example.com/article","title":"A good read"}'
Move a link to the trash
DELETE/api/v1/bookmarks/{id}
It leaves every list and collection at once. Restore it from the trash in the web app within 30 days; after that it’s gone for good.
Path
-
idstring (uuid)required
Returns
- 204Deleted
- 400 401 404 429Errors
curl -X DELETE https://trovemarks.com/api/v1/bookmarks/0b7e4c1a-5d2f-4e8a-9c3b-6a1f2e8d7c40 \
-H "Authorization: Bearer tm_…"