Skip to content

Get the Photos timeline

GET
/api/v1/photos/timeline
curl --request GET \
--url 'https://example.com/api/v1/photos/timeline?filter=all' \
--header 'Authorization: Bearer <token>'

Requires a signed-in User. It returns days from newest to oldest, with item counts and a page of tiles. It accepts a date cursor, page limits, a filter for Videos or Stacks, and repeated tag values that require every selected Tag. Route: /api/v1/photos/timeline. Inputs: before, days, tiles_per_day, filter, tag. Safe reads can use bounded retries.

before
string
days
integer
tiles_per_day
integer
filter

Which timeline groups a read returns. videos keeps groups whose display item is a video; stacks keeps RAW+JPEG pairs, Live Photos and bursts.

string
Allowed values: all videos stacks
tag
Array<string>

Repeat tag to require every selected Tag (#1109, DESIGN §33).

Media typeapplication/json
object
days
required
Array<object>
object
count
required
integer format: int64
day
required
string
tiles
required
Array<object>
object
capture_seconds
required
integer format: int64
group_id
required
string
hash
required
string
height
integer | null format: int64
item_id
required
string
kind
string | null
member_count
required
integer format: int64
mime
required
string
name
required
string
path
required

The display item’s Files path as the viewer addresses it: Home relative, or Shared/<owner>/… for a shared library root.

string
thumbhash
string | null
thumbnail_url
required
string
width

Display size after EXIF orientation. Absent when the file does not say; the client then keeps a neutral aspect ratio.

integer | null format: int64
next_before
string | null
Examplegenerated
{
"days": [
{
"count": 1,
"day": "example",
"tiles": [
{
"capture_seconds": 1,
"group_id": "example",
"hash": "example",
"height": 1,
"item_id": "example",
"kind": "example",
"member_count": 1,
"mime": "example",
"name": "example",
"path": "example",
"thumbhash": "example",
"thumbnail_url": "example",
"width": 1
}
]
}
],
"next_before": "example"
}
Media typeapplication/json

The standard API error response: { "error": { ... } }.

object
error
required

Error details.

object
code
required

Stable machine-readable code.

string
Allowed values: bad_request unauthorized forbidden not_found conflict name_conflict_case name_too_long push_endpoint_rejected too_many_requests internal service_unavailable
details
One of:

Optional field or operation details.

object
key
additional properties
string
message
required

Safe text for logs or a user-facing error message.

string
Example
{
"error": {
"code": "bad_request"
}
}