Skip to content
API console (try a request with your own key)Get early access

List the workspace's view links

GET
/v1/view-links
#!/usr/bin/env bash
set -euo pipefail
API=https://api.speccapture.com
AUTH="Authorization: Bearer $SPECCAPTURE_API_KEY"
page=$(curl -sS --fail-with-body "$API/v1/view-links?status=active" \
-H "$AUTH") || { echo "$page" >&2; exit 1; }
jq -r '.data[] as $link | "\($link.viewLinkId) \($link.fileName) sheet \($link.sheetNumber): opened \($link.openCount) times, works until \($link.expiresAt)"' <<<"$page"

Every read-only link the workspace has made - through the API or the dashboard - newest first: its sheet (jobId, sheetNumber, fileName), status (active, expired or withdrawn), createdAt, expiresAt, withdrawnAt, how often and when it was last opened, and who made it. Never its viewUrl: that is shown once, by the answer that made the link. A deleted job’s links are not listed. Page with limit and cursor (the previous page’s nextCursor), narrow with createdAfter, createdBefore and status. A live key acting as the workspace’s owner or an admin.

limit
integer format: int32

How many items the page holds: 1 to 200, 50 when left out.

cursor
string

The previous page’s nextCursor, exactly as it came: the list continues just after that page’s last item, so items made or removed meanwhile never shift a page. Leave it out for the first page.

createdAfter
string format: date-time

Only items made strictly after this date and time (ISO 8601, such as 2026-10-14T09:30:00Z; without an offset it is UTC).

createdBefore
string format: date-time

Only items made strictly before this date and time (ISO 8601, such as 2026-10-14T09:30:00Z; without an offset it is UTC).

status
Allowed values: active expired withdrawn

Only items with this status.

OK

Media typeapplication/json
object
data
required
Array<object>
object
viewLinkId
required
string format: uuid
jobId
required
string format: uuid
sheetNumber
required
integer format: int32
fileName
required
string
status
required
Allowed values: active expired withdrawn
createdAt
required
string format: date-time
expiresAt
required
string format: date-time
withdrawnAt
required
null | string format: date-time
openCount
required
integer format: int32
lastOpenedAt
required
null | string format: date-time
createdBy
required
object
kind
required
Allowed values: person apiKey
name
required
null | string
hasMore
required
boolean
nextCursor
required
null | string

Bad Request: a problem with a stable code. See Errors for every code and what to do about it.

Media typeapplication/problem+json

Every error: a problem with a stable code. https://speccapture.com/docs/api/errors lists every code.

object
type

A link to the code’s entry in the docs.

null | string
title
null | string
status
null | integer format: int32
detail
null | string
instance
null | string
code

What went wrong, as a stable code to branch on: a published code never changes meaning.

string
traceId

This request’s trace: quote it when asking for help.

string

Forbidden: a problem with a stable code. See Errors for every code and what to do about it.

Media typeapplication/problem+json

Every error: a problem with a stable code. https://speccapture.com/docs/api/errors lists every code.

object
type

A link to the code’s entry in the docs.

null | string
title
null | string
status
null | integer format: int32
detail
null | string
instance
null | string
code

What went wrong, as a stable code to branch on: a published code never changes meaning.

string
traceId

This request’s trace: quote it when asking for help.

string