Data status
How far each client's figures are ready: the day the data is released through, per client, per lens and per custody and cash account. Use it to know which day a report or a read can be made as of. Reads need platform:read and the operations module on read in one of your groups (an admin, Aleta, or a user in no group always has it); without it the route answers 403.
After your tenant has moved, a custody or cash account's day is its newest release. A client's or a lens's day is the oldest released_through over the custody and cash accounts under it whose release_mode is auto or planned and that have been released at least once; custody and cash accounts with release_mode manual or null do not count, and with none the day is null.
Before your tenant has moved, the days follow the legacy platform: each active portfolio's newest holdings day within the last 7 days, the newest per release group, which every portfolio of the group takes; a lens takes the oldest over its portfolios (a lens with no day at all takes today's date, UTC), and a client the oldest over its lenses. A custody or cash account shows its portfolio's day and counts, except one created on this platform rather than the legacy one: its days are null and it does not count.
Data model
client_id, client_namestringThe client.
data_ready_throughdate or nullThe oldest day the client's data is released through.
nullwhen nothing counts yet.last_released_attimestamp, date or nullThe newest release: after your tenant has moved, an RFC 3339 timestamp (UTC, with microseconds) over the custody and cash accounts that count; before, the newest published day over the client's lenses (
YYYY-MM-DD, day precision).lensesarrayThe client's lenses you can see, by name, each with
lens_id,name,data_ready_throughandlast_released_at.custody_accountsarrayOne row per custody account you can see, by name:
id,name,released_through(date or null),last_released_at(timestamp, date or null) andcounts_toward_date(whether the custody account moves the client's and lenses' day).cash_accountsarrayOne row per cash account you can see, with the same fields.
List data status
Returns one row per client you can see, ordered by client_id, as a cursor list. A client or lens you cannot see gives an empty data, not a 404. An unknown parameter, a malformed id or an invalid cursor is a 400; a token without platform:read is a 403.
Query parameters
client_idstringOne client.
lens_idstringOne lens: its client, with only that lens in
lensesand only the lens's custody and cash accounts.cursor, limitstring, integerThe page:
limitdefaults to 100, at most 1000.
curl -G https://api.aleta.ai/v1/data-status \
-H "Authorization: Bearer {access_token}" \
-d client_id=2f6c1d0e-8a3b-4c5d-9e7f-1a2b3c4d5e6f
{
"data": [
{
"client_id": "2f6c1d0e-8a3b-4c5d-9e7f-1a2b3c4d5e6f",
"client_name": "Hansen Holding",
"data_ready_through": "2026-10-16",
"last_released_at": "2026-10-17T07:02:11.000000Z",
"lenses": [
{
"lens_id": "8d7c6b5a-4e3f-4a2b-9c1d-0e9f8a7b6c5d",
"name": "Total",
"data_ready_through": "2026-10-16",
"last_released_at": "2026-10-17T07:02:11.000000Z"
}
],
"custody_accounts": [
{
"id": "6f1c2a3b-9d4e-4f50-8a61-7b2c3d4e5f60",
"name": "Depot 1234",
"released_through": "2026-10-16",
"last_released_at": "2026-10-17T07:02:11.000000Z",
"counts_toward_date": true
}
],
"cash_accounts": []
}
],
"next_cursor": null,
"limit": 100
}