Timeline API
Base URL: https://YOUR-SERVER/api. Send your API key in x-api-key where authentication is required. A key also needs the listed permission; your account's access rules still apply.
API guide · All endpoints · OpenAPI JSON
GET /timeline/bucket— Get time bucketGET /timeline/buckets— Get time bucketsGET /timeline/highlights— Get timeline highlightsGET /timeline/ordered— Get the timeline in a flat order
Get time bucket
GET /api/timeline/bucket
Retrieve a string of all asset ids in a given time bucket.
Authentication: API key. Permission: asset.read.
Parameters
| Name | Where | Required | Description |
|---|---|---|---|
albumId | query | No | Filter assets belonging to a specific album |
assetType | query | No | Filter assets by media type |
bbox | query | No | Bounding box coordinates as west,south,east,north (WGS84) |
dateType | query | No | Date source for timeline bucket grouping. Defaults to taken date. |
isFavorite | query | No | Filter by favorite status (true for favorites only, false for non-favorites only) |
isTrashed | query | No | Filter by trash status (true for trashed assets only, false for non-trashed only) |
key | query | No | string |
lockReason | query | No | With visibility LOCKED only: return only assets locked for this reason. Requires an elevated session. |
order | query | No | Sort order for assets within time buckets (ASC for oldest first, DESC for newest first) |
orderBy | query | No | Date to group and order assets by (takenAt for date taken, createdAt for date added to Frameleaf) |
personId | query | No | Filter assets containing a specific person (face recognition) |
petId | query | No | Filter assets in which the caller confirmed one of their own pets |
slug | query | No | string |
suppressedOnly | query | No | Return only suppressed content. Requires an elevated session. |
tagId | query | No | Filter assets with a specific tag |
timeBucket | query | Yes | Time bucket identifier in YYYY-MM-DDT00:00:00.000Z format |
userId | query | No | Filter assets by specific user ID |
visibility | query | No | Filter by asset visibility status (ARCHIVE, TIMELINE, HIDDEN, LOCKED) |
withCoordinates | query | No | Include location data in the response |
withStacked | query | No | Include stacked assets in the response. When true, only primary assets from stacks are returned. |
Parameter types, defaults and constraints
Field definitions: AssetTypeEnum, TimeBucketDateType, AssetLockReason, AssetOrder, AssetOrderBy, AssetVisibility
[
{
"name": "albumId",
"required": false,
"in": "query",
"description": "Filter assets belonging to a specific album",
"schema": {
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$",
"type": "string"
}
},
{
"name": "assetType",
"required": false,
"in": "query",
"description": "Filter assets by media type",
"schema": {
"$ref": "#/components/schemas/AssetTypeEnum"
}
},
{
"name": "bbox",
"required": false,
"in": "query",
"description": "Bounding box coordinates as west,south,east,north (WGS84)",
"schema": {
"example": "11.075683,49.416711,11.117589,49.454875",
"type": "string"
}
},
{
"name": "dateType",
"required": false,
"in": "query",
"description": "Date source for timeline bucket grouping. Defaults to taken date.",
"schema": {
"$ref": "#/components/schemas/TimeBucketDateType"
}
},
{
"name": "isFavorite",
"required": false,
"in": "query",
"description": "Filter by favorite status (true for favorites only, false for non-favorites only)",
"schema": {
"type": "boolean"
}
},
{
"name": "isTrashed",
"required": false,
"in": "query",
"description": "Filter by trash status (true for trashed assets only, false for non-trashed only)",
"schema": {
"type": "boolean"
}
},
{
"name": "key",
"required": false,
"in": "query",
"schema": {
"type": "string"
}
},
{
"name": "lockReason",
"required": false,
"in": "query",
"description": "With visibility LOCKED only: return only assets locked for this reason. Requires an elevated session.",
"schema": {
"$ref": "#/components/schemas/AssetLockReason"
}
},
{
"name": "order",
"required": false,
"in": "query",
"description": "Sort order for assets within time buckets (ASC for oldest first, DESC for newest first)",
"schema": {
"$ref": "#/components/schemas/AssetOrder"
}
},
{
"name": "orderBy",
"required": false,
"in": "query",
"description": "Date to group and order assets by (takenAt for date taken, createdAt for date added to Frameleaf)",
"schema": {
"$ref": "#/components/schemas/AssetOrderBy"
}
},
{
"name": "personId",
"required": false,
"in": "query",
"description": "Filter assets containing a specific person (face recognition)",
"schema": {
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$",
"type": "string"
}
},
{
"name": "petId",
"required": false,
"in": "query",
"description": "Filter assets in which the caller confirmed one of their own pets",
"schema": {
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$",
"type": "string"
}
},
{
"name": "slug",
"required": false,
"in": "query",
"schema": {
"type": "string"
}
},
{
"name": "suppressedOnly",
"required": false,
"in": "query",
"description": "Return only suppressed content. Requires an elevated session.",
"schema": {
"type": "boolean"
}
},
{
"name": "tagId",
"required": false,
"in": "query",
"description": "Filter assets with a specific tag",
"schema": {
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$",
"type": "string"
}
},
{
"name": "timeBucket",
"required": true,
"in": "query",
"description": "Time bucket identifier in YYYY-MM-DDT00:00:00.000Z format",
"schema": {
"example": "2024-01-01T00:00:00.000Z",
"type": "string"
}
},
{
"name": "userId",
"required": false,
"in": "query",
"description": "Filter assets by specific user ID",
"schema": {
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$",
"type": "string"
}
},
{
"name": "visibility",
"required": false,
"in": "query",
"description": "Filter by asset visibility status (ARCHIVE, TIMELINE, HIDDEN, LOCKED)",
"schema": {
"$ref": "#/components/schemas/AssetVisibility"
}
},
{
"name": "withCoordinates",
"required": false,
"in": "query",
"description": "Include location data in the response",
"schema": {
"type": "boolean"
}
},
{
"name": "withStacked",
"required": false,
"in": "query",
"description": "Include stacked assets in the response. When true, only primary assets from stacks are returned.",
"schema": {
"type": "boolean"
}
}
]Responses
Field definitions: TimeBucketAssetResponseDto
{
"200": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/TimeBucketAssetResponseDto"
}
}
},
"description": ""
}
}Get time buckets
GET /api/timeline/buckets
Retrieve a list of all minimal time buckets.
Authentication: API key. Permission: asset.read.
Parameters
| Name | Where | Required | Description |
|---|---|---|---|
albumId | query | No | Filter assets belonging to a specific album |
assetType | query | No | Filter assets by media type |
bbox | query | No | Bounding box coordinates as west,south,east,north (WGS84) |
dateType | query | No | Date source for timeline bucket grouping. Defaults to taken date. |
isFavorite | query | No | Filter by favorite status (true for favorites only, false for non-favorites only) |
isTrashed | query | No | Filter by trash status (true for trashed assets only, false for non-trashed only) |
key | query | No | string |
lockReason | query | No | With visibility LOCKED only: return only assets locked for this reason. Requires an elevated session. |
order | query | No | Sort order for assets within time buckets (ASC for oldest first, DESC for newest first) |
orderBy | query | No | Date to group and order assets by (takenAt for date taken, createdAt for date added to Frameleaf) |
personId | query | No | Filter assets containing a specific person (face recognition) |
petId | query | No | Filter assets in which the caller confirmed one of their own pets |
slug | query | No | string |
suppressedOnly | query | No | Return only suppressed content. Requires an elevated session. |
tagId | query | No | Filter assets with a specific tag |
userId | query | No | Filter assets by specific user ID |
visibility | query | No | Filter by asset visibility status (ARCHIVE, TIMELINE, HIDDEN, LOCKED) |
withCoordinates | query | No | Include location data in the response |
withStacked | query | No | Include stacked assets in the response. When true, only primary assets from stacks are returned. |
Parameter types, defaults and constraints
Field definitions: AssetTypeEnum, TimeBucketDateType, AssetLockReason, AssetOrder, AssetOrderBy, AssetVisibility
[
{
"name": "albumId",
"required": false,
"in": "query",
"description": "Filter assets belonging to a specific album",
"schema": {
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$",
"type": "string"
}
},
{
"name": "assetType",
"required": false,
"in": "query",
"description": "Filter assets by media type",
"schema": {
"$ref": "#/components/schemas/AssetTypeEnum"
}
},
{
"name": "bbox",
"required": false,
"in": "query",
"description": "Bounding box coordinates as west,south,east,north (WGS84)",
"schema": {
"example": "11.075683,49.416711,11.117589,49.454875",
"type": "string"
}
},
{
"name": "dateType",
"required": false,
"in": "query",
"description": "Date source for timeline bucket grouping. Defaults to taken date.",
"schema": {
"$ref": "#/components/schemas/TimeBucketDateType"
}
},
{
"name": "isFavorite",
"required": false,
"in": "query",
"description": "Filter by favorite status (true for favorites only, false for non-favorites only)",
"schema": {
"type": "boolean"
}
},
{
"name": "isTrashed",
"required": false,
"in": "query",
"description": "Filter by trash status (true for trashed assets only, false for non-trashed only)",
"schema": {
"type": "boolean"
}
},
{
"name": "key",
"required": false,
"in": "query",
"schema": {
"type": "string"
}
},
{
"name": "lockReason",
"required": false,
"in": "query",
"description": "With visibility LOCKED only: return only assets locked for this reason. Requires an elevated session.",
"schema": {
"$ref": "#/components/schemas/AssetLockReason"
}
},
{
"name": "order",
"required": false,
"in": "query",
"description": "Sort order for assets within time buckets (ASC for oldest first, DESC for newest first)",
"schema": {
"$ref": "#/components/schemas/AssetOrder"
}
},
{
"name": "orderBy",
"required": false,
"in": "query",
"description": "Date to group and order assets by (takenAt for date taken, createdAt for date added to Frameleaf)",
"schema": {
"$ref": "#/components/schemas/AssetOrderBy"
}
},
{
"name": "personId",
"required": false,
"in": "query",
"description": "Filter assets containing a specific person (face recognition)",
"schema": {
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$",
"type": "string"
}
},
{
"name": "petId",
"required": false,
"in": "query",
"description": "Filter assets in which the caller confirmed one of their own pets",
"schema": {
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$",
"type": "string"
}
},
{
"name": "slug",
"required": false,
"in": "query",
"schema": {
"type": "string"
}
},
{
"name": "suppressedOnly",
"required": false,
"in": "query",
"description": "Return only suppressed content. Requires an elevated session.",
"schema": {
"type": "boolean"
}
},
{
"name": "tagId",
"required": false,
"in": "query",
"description": "Filter assets with a specific tag",
"schema": {
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$",
"type": "string"
}
},
{
"name": "userId",
"required": false,
"in": "query",
"description": "Filter assets by specific user ID",
"schema": {
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$",
"type": "string"
}
},
{
"name": "visibility",
"required": false,
"in": "query",
"description": "Filter by asset visibility status (ARCHIVE, TIMELINE, HIDDEN, LOCKED)",
"schema": {
"$ref": "#/components/schemas/AssetVisibility"
}
},
{
"name": "withCoordinates",
"required": false,
"in": "query",
"description": "Include location data in the response",
"schema": {
"type": "boolean"
}
},
{
"name": "withStacked",
"required": false,
"in": "query",
"description": "Include stacked assets in the response. When true, only primary assets from stacks are returned.",
"schema": {
"type": "boolean"
}
}
]Responses
Field definitions: TimeBucketsResponseDto
{
"200": {
"content": {
"application/json": {
"schema": {
"items": {
"$ref": "#/components/schemas/TimeBucketsResponseDto"
},
"type": "array"
}
}
},
"description": ""
}
}Get timeline highlights
GET /api/timeline/highlights
Curated Years and Months cards for the same filters as the time buckets: per year or month the count, a key photo (highest Best Photos score, then rating, then most recent), highlights for months and the top three places.
Authentication: API key. Permission: asset.read.
Parameters
| Name | Where | Required | Description |
|---|---|---|---|
albumId | query | No | Filter assets belonging to a specific album |
assetType | query | No | Filter assets by media type |
bbox | query | No | Bounding box coordinates as west,south,east,north (WGS84) |
dateType | query | No | Date source for timeline bucket grouping. Defaults to taken date. |
grouping | query | No | |
highlightCount | query | No | Highlights besides the key photo for each month card (default 4). Year cards carry none |
isFavorite | query | No | Filter by favorite status (true for favorites only, false for non-favorites only) |
isTrashed | query | No | Filter by trash status (true for trashed assets only, false for non-trashed only) |
key | query | No | string |
lockReason | query | No | With visibility LOCKED only: return only assets locked for this reason. Requires an elevated session. |
order | query | No | Sort order for assets within time buckets (ASC for oldest first, DESC for newest first) |
orderBy | query | No | Date to group and order assets by (takenAt for date taken, createdAt for date added to Frameleaf) |
personId | query | No | Filter assets containing a specific person (face recognition) |
petId | query | No | Filter assets in which the caller confirmed one of their own pets |
slug | query | No | string |
suppressedOnly | query | No | Return only suppressed content. Requires an elevated session. |
tagId | query | No | Filter assets with a specific tag |
userId | query | No | Filter assets by specific user ID |
visibility | query | No | Filter by asset visibility status (ARCHIVE, TIMELINE, HIDDEN, LOCKED) |
withCoordinates | query | No | Include location data in the response |
withStacked | query | No | Include stacked assets in the response. When true, only primary assets from stacks are returned. |
Parameter types, defaults and constraints
Field definitions: AssetTypeEnum, TimeBucketDateType, TimelineHighlightGrouping, AssetLockReason, AssetOrder, AssetOrderBy, AssetVisibility
[
{
"name": "albumId",
"required": false,
"in": "query",
"description": "Filter assets belonging to a specific album",
"schema": {
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$",
"type": "string"
}
},
{
"name": "assetType",
"required": false,
"in": "query",
"description": "Filter assets by media type",
"schema": {
"$ref": "#/components/schemas/AssetTypeEnum"
}
},
{
"name": "bbox",
"required": false,
"in": "query",
"description": "Bounding box coordinates as west,south,east,north (WGS84)",
"schema": {
"example": "11.075683,49.416711,11.117589,49.454875",
"type": "string"
}
},
{
"name": "dateType",
"required": false,
"in": "query",
"description": "Date source for timeline bucket grouping. Defaults to taken date.",
"schema": {
"$ref": "#/components/schemas/TimeBucketDateType"
}
},
{
"name": "grouping",
"required": false,
"in": "query",
"schema": {
"$ref": "#/components/schemas/TimelineHighlightGrouping"
}
},
{
"name": "highlightCount",
"required": false,
"in": "query",
"description": "Highlights besides the key photo for each month card (default 4). Year cards carry none",
"schema": {
"minimum": 0,
"maximum": 12,
"type": "integer"
}
},
{
"name": "isFavorite",
"required": false,
"in": "query",
"description": "Filter by favorite status (true for favorites only, false for non-favorites only)",
"schema": {
"type": "boolean"
}
},
{
"name": "isTrashed",
"required": false,
"in": "query",
"description": "Filter by trash status (true for trashed assets only, false for non-trashed only)",
"schema": {
"type": "boolean"
}
},
{
"name": "key",
"required": false,
"in": "query",
"schema": {
"type": "string"
}
},
{
"name": "lockReason",
"required": false,
"in": "query",
"description": "With visibility LOCKED only: return only assets locked for this reason. Requires an elevated session.",
"schema": {
"$ref": "#/components/schemas/AssetLockReason"
}
},
{
"name": "order",
"required": false,
"in": "query",
"description": "Sort order for assets within time buckets (ASC for oldest first, DESC for newest first)",
"schema": {
"$ref": "#/components/schemas/AssetOrder"
}
},
{
"name": "orderBy",
"required": false,
"in": "query",
"description": "Date to group and order assets by (takenAt for date taken, createdAt for date added to Frameleaf)",
"schema": {
"$ref": "#/components/schemas/AssetOrderBy"
}
},
{
"name": "personId",
"required": false,
"in": "query",
"description": "Filter assets containing a specific person (face recognition)",
"schema": {
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$",
"type": "string"
}
},
{
"name": "petId",
"required": false,
"in": "query",
"description": "Filter assets in which the caller confirmed one of their own pets",
"schema": {
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$",
"type": "string"
}
},
{
"name": "slug",
"required": false,
"in": "query",
"schema": {
"type": "string"
}
},
{
"name": "suppressedOnly",
"required": false,
"in": "query",
"description": "Return only suppressed content. Requires an elevated session.",
"schema": {
"type": "boolean"
}
},
{
"name": "tagId",
"required": false,
"in": "query",
"description": "Filter assets with a specific tag",
"schema": {
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$",
"type": "string"
}
},
{
"name": "userId",
"required": false,
"in": "query",
"description": "Filter assets by specific user ID",
"schema": {
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$",
"type": "string"
}
},
{
"name": "visibility",
"required": false,
"in": "query",
"description": "Filter by asset visibility status (ARCHIVE, TIMELINE, HIDDEN, LOCKED)",
"schema": {
"$ref": "#/components/schemas/AssetVisibility"
}
},
{
"name": "withCoordinates",
"required": false,
"in": "query",
"description": "Include location data in the response",
"schema": {
"type": "boolean"
}
},
{
"name": "withStacked",
"required": false,
"in": "query",
"description": "Include stacked assets in the response. When true, only primary assets from stacks are returned.",
"schema": {
"type": "boolean"
}
}
]Responses
Field definitions: TimelineHighlightResponseDto
{
"200": {
"content": {
"application/json": {
"schema": {
"items": {
"$ref": "#/components/schemas/TimelineHighlightResponseDto"
},
"type": "array"
}
}
},
"description": ""
}
}Get the timeline in a flat order
GET /api/timeline/ordered
One page of the assets the time buckets would show for the same filters, ordered by file name or by rating instead of by date, in the time bucket response shape.
Authentication: API key. Permission: asset.read.
Parameters
| Name | Where | Required | Description |
|---|---|---|---|
albumId | query | No | Filter assets belonging to a specific album |
assetType | query | No | Filter assets by media type |
bbox | query | No | Bounding box coordinates as west,south,east,north (WGS84) |
dateType | query | No | Date source for timeline bucket grouping. Defaults to taken date. |
isFavorite | query | No | Filter by favorite status (true for favorites only, false for non-favorites only) |
isTrashed | query | No | Filter by trash status (true for trashed assets only, false for non-trashed only) |
key | query | No | string |
lockReason | query | No | With visibility LOCKED only: return only assets locked for this reason. Requires an elevated session. |
order | query | No | Sort order for assets within time buckets (ASC for oldest first, DESC for newest first) |
orderBy | query | No | Date to group and order assets by (takenAt for date taken, createdAt for date added to Frameleaf) |
personId | query | No | Filter assets containing a specific person (face recognition) |
petId | query | No | Filter assets in which the caller confirmed one of their own pets |
skip | query | No | Items to skip |
slug | query | No | string |
sort | query | Yes | |
suppressedOnly | query | No | Return only suppressed content. Requires an elevated session. |
tagId | query | No | Filter assets with a specific tag |
take | query | No | Items to return (at most 1000) |
userId | query | No | Filter assets by specific user ID |
visibility | query | No | Filter by asset visibility status (ARCHIVE, TIMELINE, HIDDEN, LOCKED) |
withCoordinates | query | No | Include location data in the response |
withStacked | query | No | Include stacked assets in the response. When true, only primary assets from stacks are returned. |
Parameter types, defaults and constraints
Field definitions: AssetTypeEnum, TimeBucketDateType, AssetLockReason, AssetOrder, AssetOrderBy, TimelineOrderedSort, AssetVisibility
[
{
"name": "albumId",
"required": false,
"in": "query",
"description": "Filter assets belonging to a specific album",
"schema": {
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$",
"type": "string"
}
},
{
"name": "assetType",
"required": false,
"in": "query",
"description": "Filter assets by media type",
"schema": {
"$ref": "#/components/schemas/AssetTypeEnum"
}
},
{
"name": "bbox",
"required": false,
"in": "query",
"description": "Bounding box coordinates as west,south,east,north (WGS84)",
"schema": {
"example": "11.075683,49.416711,11.117589,49.454875",
"type": "string"
}
},
{
"name": "dateType",
"required": false,
"in": "query",
"description": "Date source for timeline bucket grouping. Defaults to taken date.",
"schema": {
"$ref": "#/components/schemas/TimeBucketDateType"
}
},
{
"name": "isFavorite",
"required": false,
"in": "query",
"description": "Filter by favorite status (true for favorites only, false for non-favorites only)",
"schema": {
"type": "boolean"
}
},
{
"name": "isTrashed",
"required": false,
"in": "query",
"description": "Filter by trash status (true for trashed assets only, false for non-trashed only)",
"schema": {
"type": "boolean"
}
},
{
"name": "key",
"required": false,
"in": "query",
"schema": {
"type": "string"
}
},
{
"name": "lockReason",
"required": false,
"in": "query",
"description": "With visibility LOCKED only: return only assets locked for this reason. Requires an elevated session.",
"schema": {
"$ref": "#/components/schemas/AssetLockReason"
}
},
{
"name": "order",
"required": false,
"in": "query",
"description": "Sort order for assets within time buckets (ASC for oldest first, DESC for newest first)",
"schema": {
"$ref": "#/components/schemas/AssetOrder"
}
},
{
"name": "orderBy",
"required": false,
"in": "query",
"description": "Date to group and order assets by (takenAt for date taken, createdAt for date added to Frameleaf)",
"schema": {
"$ref": "#/components/schemas/AssetOrderBy"
}
},
{
"name": "personId",
"required": false,
"in": "query",
"description": "Filter assets containing a specific person (face recognition)",
"schema": {
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$",
"type": "string"
}
},
{
"name": "petId",
"required": false,
"in": "query",
"description": "Filter assets in which the caller confirmed one of their own pets",
"schema": {
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$",
"type": "string"
}
},
{
"name": "skip",
"required": false,
"in": "query",
"description": "Items to skip",
"schema": {
"minimum": 0,
"maximum": 9007199254740991,
"default": 0,
"type": "integer"
}
},
{
"name": "slug",
"required": false,
"in": "query",
"schema": {
"type": "string"
}
},
{
"name": "sort",
"required": true,
"in": "query",
"schema": {
"$ref": "#/components/schemas/TimelineOrderedSort"
}
},
{
"name": "suppressedOnly",
"required": false,
"in": "query",
"description": "Return only suppressed content. Requires an elevated session.",
"schema": {
"type": "boolean"
}
},
{
"name": "tagId",
"required": false,
"in": "query",
"description": "Filter assets with a specific tag",
"schema": {
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$",
"type": "string"
}
},
{
"name": "take",
"required": false,
"in": "query",
"description": "Items to return (at most 1000)",
"schema": {
"minimum": 1,
"maximum": 1000,
"default": 500,
"type": "integer"
}
},
{
"name": "userId",
"required": false,
"in": "query",
"description": "Filter assets by specific user ID",
"schema": {
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$",
"type": "string"
}
},
{
"name": "visibility",
"required": false,
"in": "query",
"description": "Filter by asset visibility status (ARCHIVE, TIMELINE, HIDDEN, LOCKED)",
"schema": {
"$ref": "#/components/schemas/AssetVisibility"
}
},
{
"name": "withCoordinates",
"required": false,
"in": "query",
"description": "Include location data in the response",
"schema": {
"type": "boolean"
}
},
{
"name": "withStacked",
"required": false,
"in": "query",
"description": "Include stacked assets in the response. When true, only primary assets from stacks are returned.",
"schema": {
"type": "boolean"
}
}
]Responses
Field definitions: TimeBucketAssetResponseDto
{
"200": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/TimeBucketAssetResponseDto"
}
}
},
"description": ""
}
}© 2026 Frameleaf Inc. All rights reserved.
Frameleaf and the Frameleaf logo are Trademarks of Frameleaf Inc.