Saved views

Save searches and filters of the links list, for yourself or your team.

A saved view is a name and a set of List links filters. Views are private to the person who saved them unless shared with the workspace. Only the person who saved a view changes it; workspace administrators can also delete shared views.

Every path below starts with https://bgum.me/api/v1/workspaces/{workspaceId}. Send your API key in the Authorization header as described in the API overview.

OperationMethod and path
List saved viewsGET /saved-views
Save a viewPOST /saved-views
Change a saved viewPATCH /saved-views/{viewId}
Delete a saved viewDELETE /saved-views/{viewId}

List saved views

GET /saved-views

Lists your views and those shared with the workspace, by name.

Full path
/api/v1/workspaces/{workspaceId}/saved-views
API key scope
links:read
Role needed
Viewer or above

Path parameters

NameTypeRequiredDescription
workspaceId string Yes Your workspace ID, from Settings → Workspace.

Example request

curl

curl "https://bgum.me/api/v1/workspaces/$WORKSPACE_ID/saved-views" \
  -H "Authorization: Bearer $BGL_API_KEY"

JavaScript

const res = await fetch(`https://bgum.me/api/v1/workspaces/${process.env.WORKSPACE_ID}/saved-views`, {
  headers: {
    Authorization: `Bearer ${process.env.BGL_API_KEY}`,
  },
});
if (!res.ok) throw new Error(`${res.status} ${await res.text()}`);
const data = await res.json();
console.log(data);

Python

import os
import requests

res = requests.get(
    f"https://bgum.me/api/v1/workspaces/{os.environ['WORKSPACE_ID']}/saved-views",
    headers={
        "Authorization": f"Bearer {os.environ['BGL_API_KEY']}",
    },
    timeout=30,
)
res.raise_for_status()
print(res.json())

Response

200 OK · application/json

JSON

[
  {
    "id": "Vw7sPq2LkR0a",
    "name": "Paused spring links",
    "query": "search=spring&state=Paused",
    "shared": true,
    "mine": true,
    "createdBy": "Sam Taylor",
    "createdAt": "2026-10-15T03:20:01.5521+00:00"
  }
]

Good to know

  • Use query as the query string of List links to get the view's links, e.g. GET /links?search=spring&state=Paused.

Errors

Any request can also return the general errors: 401 for a missing or wrong key, 403 for a missing scope or plan feature, 404 for an unknown workspace and 429 when you're sending too fast.

Save a view

POST /saved-views

Saves a view. Up to 50 per person per workspace.

Full path
/api/v1/workspaces/{workspaceId}/saved-views
API key scope
links:read
Role needed
Viewer or above

Path parameters

NameTypeRequiredDescription
workspaceId string Yes Your workspace ID, from Settings → Workspace.

Request body

JSON (Content-Type: application/json). Leave out fields you don't need.

NameTypeRequiredDescription
name string Yes Up to 100 characters.
query string No List links filters as a query string: search, state, tag, folderId, domainId, campaignId, createdFrom, createdTo and sort. Other parameters (such as page) are dropped.
shared boolean No true shows the view to everyone in the workspace. Needs permission to edit links. Default false.

Example request

curl

curl -X POST "https://bgum.me/api/v1/workspaces/$WORKSPACE_ID/saved-views" \
  -H "Authorization: Bearer $BGL_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "name": "Paused spring links",
  "query": "search=spring&state=Paused",
  "shared": true
}'

JavaScript

const res = await fetch(`https://bgum.me/api/v1/workspaces/${process.env.WORKSPACE_ID}/saved-views`, {
  method: "POST",
  headers: {
    Authorization: `Bearer ${process.env.BGL_API_KEY}`,
    "Content-Type": "application/json",
  },
  body: JSON.stringify({
    "name": "Paused spring links",
    "query": "search=spring&state=Paused",
    "shared": true
  }),
});
if (!res.ok) throw new Error(`${res.status} ${await res.text()}`);
const data = await res.json();
console.log(data);

Python

import os
import requests

res = requests.post(
    f"https://bgum.me/api/v1/workspaces/{os.environ['WORKSPACE_ID']}/saved-views",
    headers={
        "Authorization": f"Bearer {os.environ['BGL_API_KEY']}",
    },
    json={
        "name": "Paused spring links",
        "query": "search=spring&state=Paused",
        "shared": True,
    },
    timeout=30,
)
res.raise_for_status()
print(res.json())

Response

201 Created · application/json

JSON

{
  "id": "Vw7sPq2LkR0a",
  "name": "Paused spring links",
  "query": "search=spring&state=Paused",
  "shared": true,
  "mine": true,
  "createdBy": "Sam Taylor",
  "createdAt": "2026-10-15T03:20:01.5521+00:00"
}

Errors

StatusCodeMeaning
422view.name_requiredThe view has no name.
422view.name_too_longThe name is longer than 100 characters.
403view.share_forbiddenOnly people who can edit links can share views with the workspace.
409view.too_manyYou already have 50 saved views in this workspace.

Any request can also return the general errors: 401 for a missing or wrong key, 403 for a missing scope or plan feature, 404 for an unknown workspace and 429 when you're sending too fast.

Change a saved view

PATCH /saved-views/{viewId}

Renames a view, changes its filters, or shares or unshares it. Only the person who saved it can.

Full path
/api/v1/workspaces/{workspaceId}/saved-views/{viewId}
API key scope
links:read
Role needed
Viewer or above

Path parameters

NameTypeRequiredDescription
workspaceId string Yes Your workspace ID, from Settings → Workspace.
viewId string Yes The saved view's ID, as returned when it was created or listed.

Request body

JSON (Content-Type: application/json). Leave out fields you don't need.

NameTypeRequiredDescription
name string No New name.
query string No New filters, as when saving.
shared boolean No true shares the view with the workspace, false makes it private again.

Example request

curl

curl -X PATCH "https://bgum.me/api/v1/workspaces/$WORKSPACE_ID/saved-views/Vw7sPq2LkR0a" \
  -H "Authorization: Bearer $BGL_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "shared": false
}'

JavaScript

const res = await fetch(`https://bgum.me/api/v1/workspaces/${process.env.WORKSPACE_ID}/saved-views/Vw7sPq2LkR0a`, {
  method: "PATCH",
  headers: {
    Authorization: `Bearer ${process.env.BGL_API_KEY}`,
    "Content-Type": "application/json",
  },
  body: JSON.stringify({
    "shared": false
  }),
});
if (!res.ok) throw new Error(`${res.status} ${await res.text()}`);
const data = await res.json();
console.log(data);

Python

import os
import requests

res = requests.patch(
    f"https://bgum.me/api/v1/workspaces/{os.environ['WORKSPACE_ID']}/saved-views/Vw7sPq2LkR0a",
    headers={
        "Authorization": f"Bearer {os.environ['BGL_API_KEY']}",
    },
    json={
        "shared": False,
    },
    timeout=30,
)
res.raise_for_status()
print(res.json())

Response

200 OK · application/json

JSON

{
  "id": "Vw7sPq2LkR0a",
  "name": "Paused spring links",
  "query": "search=spring&state=Paused",
  "shared": false,
  "mine": true,
  "createdBy": "Sam Taylor",
  "createdAt": "2026-10-15T03:20:01.5521+00:00"
}

Errors

StatusCodeMeaning
404view.not_foundNo saved view with that ID that you can see.
403view.not_yoursSomeone else saved this view, so only they can change it.
422view.name_requiredThe view has no name.
422view.name_too_longThe name is longer than 100 characters.
403view.share_forbiddenOnly people who can edit links can share views with the workspace.

Any request can also return the general errors: 401 for a missing or wrong key, 403 for a missing scope or plan feature, 404 for an unknown workspace and 429 when you're sending too fast.

Delete a saved view

DELETE /saved-views/{viewId}

Deletes a view. Only the person who saved it can, or a workspace administrator for a shared view.

Full path
/api/v1/workspaces/{workspaceId}/saved-views/{viewId}
API key scope
links:read
Role needed
Viewer or above

Path parameters

NameTypeRequiredDescription
workspaceId string Yes Your workspace ID, from Settings → Workspace.
viewId string Yes The saved view's ID, as returned when it was created or listed.

Example request

curl

curl -X DELETE "https://bgum.me/api/v1/workspaces/$WORKSPACE_ID/saved-views/Vw7sPq2LkR0a" \
  -H "Authorization: Bearer $BGL_API_KEY"

JavaScript

const res = await fetch(`https://bgum.me/api/v1/workspaces/${process.env.WORKSPACE_ID}/saved-views/Vw7sPq2LkR0a`, {
  method: "DELETE",
  headers: {
    Authorization: `Bearer ${process.env.BGL_API_KEY}`,
  },
});
if (!res.ok) throw new Error(`${res.status} ${await res.text()}`);
// 204 No Content: nothing to read.

Python

import os
import requests

res = requests.delete(
    f"https://bgum.me/api/v1/workspaces/{os.environ['WORKSPACE_ID']}/saved-views/Vw7sPq2LkR0a",
    headers={
        "Authorization": f"Bearer {os.environ['BGL_API_KEY']}",
    },
    timeout=30,
)
res.raise_for_status()
# 204 No Content: nothing to read.

Response

204 No Content

Errors

StatusCodeMeaning
404view.not_foundNo saved view with that ID that you can see.
403view.not_yoursSomeone else saved this view, so only they can change it.

Any request can also return the general errors: 401 for a missing or wrong key, 403 for a missing scope or plan feature, 404 for an unknown workspace and 429 when you're sending too fast.

Something missing or unclear? Tell us and we'll improve this page.