Skip to main content
All list endpoints in the Userplane API use page-based pagination.

Query parameters

ParameterTypeDefaultDescription
pageinteger1Page number (1-indexed)
per_pageintegerVariesItems per page

Default limits by resource

ResourceDefault per_pageMax per_page
Workspaces1020
Links1020
Recordings1020
Projects510

Pagination metadata

Every list endpoint returns a pagination object alongside the results:
{
  "message": "Links retrieved successfully",
  "data": {
    "workspaceId": "ws_abc123",
    "links": [...],
    "pagination": {
      "page": 1,
      "perPage": 10,
      "total": 47,
      "totalPages": 5,
      "hasMore": true
    }
  }
}
FieldTypeDescription
pageintegerCurrent page number
perPageintegerItems per page
totalintegerTotal items across all pages
totalPagesintegerTotal number of pages
hasMorebooleanWhether more pages exist

Iterating through pages

Use the hasMore field to iterate through all pages:
const API_BASE = "https://api.userplane.com/api/v1";

async function fetchAllRecordings(workspaceId, apiKey) {
const recordings = [];
let page = 1;
let hasMore = true;

while (hasMore) {
const response = await fetch(
`${API_BASE}/public/workspace/${workspaceId}/recordings?page=${page}&per_page=20`,
{ headers: { Authorization: `Bearer ${apiKey}` } }
);
const { data } = await response.json();

    recordings.push(...data.recordings);
    hasMore = data.pagination.hasMore;
    page++;

}

return recordings;
}

List Links

Paginated list of recording links with filters

List Recordings

Paginated list of recordings with filters

List Workspaces

Paginated list of your workspaces

List Projects

Paginated list of projects in a workspace