Skip to content

Recently published pages

GET
/users/{uuid}/dashboard
curl --request GET \
--url 'https://flow.work.optidata.cloud/api/users/2d9e8f70-1a3b-4c5d-8e9f-a0b1c2d3e4f5/dashboard?limit=10' \
--header 'Authorization: Bearer <token>'

The pages most recently published in the categories the user can see, newest first, each with a direct link — the data behind the Papers card of the Optiwork home screen. Pass the caller’s own uuid.

The order follows the last time each page’s content was published, which is also the value returned in updated_at.

uuid
required
string format: uuid

UUID of the authenticated user.

limit
integer
default: 10 >= 1 <= 100

Maximum number of pages to return.

Recently published pages.

Media typeapplication/json
Array

A recently published page.

object
id
integer
category_id
integer
parent_id

Id of the page this one is nested under, or null for a top-level page.

integer | null
user_id

Id of the page’s author.

integer
title
string
identifier

Short public identifier of the page.

string
page_content_id

The page’s current version — its published version once it has one.

integer | null
status

published once a version has been published.

string
Allowed values: draft published
last_content_published_at

When a version was last published.

string | null format: date-time
is_cover

true for the category’s Overview page.

boolean
position

Sort position among its siblings.

integer
visibility

The page’s own visibility as stored — null when it inherits the category’s.

string | null
Allowed values: public
display_visibility

A page’s own visibility. inherit follows the category; public shares the page with anyone who has its link, whatever the category’s visibility.

string
Allowed values: inherit public
effective_visibility

Who can see a category. restricted: only the people and groups it is shared with. internal: everyone in the company. public: anyone with the link, including people who are not signed in.

string
Allowed values: restricted internal public
is_public

Whether the page is reachable by anyone with its link.

boolean
type
string
meta

Reserved. Always null for pages created through the API.

object | null
published_at

Not used — read last_content_published_at.

string | null format: date-time
created_at
string format: date-time
updated_at
string format: date-time
deleted_at

Set when the page is in the trash.

string | null format: date-time
link
required

Opens the page in Papers.

string format: uri
category
required
object
id
required
integer
name
required
string
slug
required

URL-friendly form of the name.

string
description
string | null
visibility
required

Who can see a category. restricted: only the people and groups it is shared with. internal: everyone in the company. public: anyone with the link, including people who are not signed in.

string
Allowed values: restricted internal public
is_public
required

Shortcut for visibility == public.

boolean
identifier

Short public identifier of the category.

string | null
user_id

Id of the user who owns the category, when it has one.

integer | null
group_id

Set when the category mirrors a group: it is shared with the group’s members, and its name and description follow the group’s.

integer | null
cuid

Identifier of the company the category belongs to.

string
created_at
string format: date-time
updated_at
string format: date-time
deleted_at

Set when the category is in the trash.

string | null format: date-time
Examples
Examplepages
[
{
"id": 2927,
"category_id": 993,
"user_id": 20,
"title": "Onboarding checklist",
"type": "text",
"meta": null,
"created_at": "2026-10-19T13:50:45.000000Z",
"updated_at": "2026-10-19T13:51:39.000000Z",
"deleted_at": null,
"parent_id": null,
"position": 1451,
"page_content_id": 4508,
"status": "published",
"published_at": null,
"identifier": "dDbBQQtcKr",
"is_cover": false,
"visibility": null,
"last_content_published_at": "2026-10-19T13:51:39.000000Z",
"link": "https://flow.work.optidata.cloud/urn/owt1/v1-9-eyJjYXRlZ29yeV9pZCI6OTkzLCJwYWdlX2lkIjoyOTI3fQ==",
"effective_visibility": "restricted",
"display_visibility": "inherit",
"is_public": false,
"category": {
"id": 993,
"cuid": "7f3c2a10-5b8e-4d21-9c6a-0e4f1b2d3c4a",
"name": "Onboarding",
"slug": "onboarding",
"description": "Everything a new hire needs in the first month.",
"created_at": "2026-10-19T13:50:38.000000Z",
"updated_at": "2026-10-19T13:50:38.000000Z",
"deleted_at": null,
"visibility": "restricted",
"user_id": 20,
"identifier": "jYpV3A",
"group_id": null,
"is_public": false
}
}
]

No authentication key was sent.

Media typeapplication/json

Authentication failures use an error key rather than message.

object
error
required
string
Examples
Examplemissing

No bearer token sent

{
"error": "JWT passport exception: Missing bearer token in request"
}

The caller lacks the access this operation needs.

Media typeapplication/json

Generic error envelope used by permission, lookup and framework failures.

object
message
required
string
Examples
Exampledenied
{
"message": "This action is unauthorized."
}

No such resource — or it does not belong to the category or page in the path.

Media typeapplication/json

Generic error envelope used by permission, lookup and framework failures.

object
message
required
string
Examples
Examplemissing
{
"message": "No query results for model [App\\Models\\Page] 999999"
}

The authentication key is expired or not recognised. Get a fresh one and retry.

Media typeapplication/json

Authentication failures use an error key rather than message.

object
error
required
string
Examples
Exampleexpired
{
"error": "JWT passport expired: Passport expired"
}

The request failed validation.

Media typeapplication/json
object
message
required

The first validation message.

string
errors
required

Validation messages keyed by field name.

object
key
additional properties
Array<string>
Examples
ExampletitleMissing
{
"message": "The title field is required.",
"errors": {
"title": [
"The title field is required."
]
}
}