Platform overview

Connect your agent, explore ideas, and build with Looki using the CLI and API.

API Reference

Endpoint definitions, parameters, and response examples.

API authentication

Authentication requirements for the API.

Agent Integrations

Connect your agent with plugins, skills, or MCP.

Connect your agent

Choose WorkBuddy, Codex, Gemini, Claude Code, Grok Build, Cursor, Kimi Code, GitHub Copilot, Visual Studio Code, DeepSeek Harness, or another agent to install and try Looki.

Install the Looki plugin

npx plugins add looki-ai/looki-plugin

Install Looki Skills

npx skills add looki-ai/looki-skills

Connect Looki MCP

Remote MCP server: https://open.looki.ai/mcp

API Reference

OpenAPI 3.1.0

Endpoint definitions, authentication, parameters, and response examples.

Getting started

Make your first request.

Your data is yours to use. Build your own integrations with the Looki API.

Authentication

Apply for an API key in the Console and include it in the X-API-Key header on every request.

To avoid leaking your API key, never send it to any address other than https://open.looki.ai.

Rate limiting

Requests are limited to 60 per minute per API key. Exceeding the limit returns HTTP 429. Retry after 60 seconds.

File URLs

Pre-signed media URLs expire after 10 minutes. Request fresh data when a URL expires. All sample response values are illustrative.

Account

1 endpoint
GET/me

Get Current User

Returns information about the currently authenticated user.

Responses

200Successful response.
codeinteger—
detailstring—
dataobject—
userobject—
idstringUnique user identifier
first_namestring | nullFirst name
last_namestring | nullLast name
tzstringUser timezone offset
genderinteger | nullGender: 0 prefer not to say, 1 male, 2 female, 3 non-binary
birthdaydate | nullBirthday in YYYY-MM-DD format

Memory

1 endpoint
GET/memory/overview

Get Memory Overview

Returns the user's categorized memory overview and its last update time.

Responses

200Successful response.
codeinteger—
detailstring—
dataobject—
summariesobjectMap of memory categories to summary text: identity, traits, relationships, lifestyle, interests, current_experiences, and looki_preferences; unavailable categories are omitted
updated_atdate-time | nullOverview update time in ISO 8601 format; null when no overview exists

Moments

5 endpoints
GET/moments

List Moments

Returns Moments filtered by date range.

Query parameters

start_datedateoptional

Inclusive start date in YYYY-MM-DD format; omit for no lower bound

end_datedateoptional

Inclusive end date in YYYY-MM-DD format; omit for no upper bound

limitintegeroptional

Number of records per page (minimum 1, default 20, max 100)

cursorstringoptional

Opaque next_cursor from the previous response (1-1024 characters); omit for the first request

sortstringoptional

Record order: asc or desc (default desc)

Responses

200Successful response.
codeinteger—
detailstring—
dataobject—
itemsobject[]—
idstringUnique identifier of the moment
titlestringMoment title
descriptionstringMoment description
media_typesstring[]Media types included (e.g. ["IMAGE", "VIDEO"])
cover_fileobject | nullCover file of the moment
idstringUnique identifier of the file
fileobject | nullThe media file
temporary_urlstringMedia URL; pre-signed URLs expire in 10 minutes
media_typestringMedia type (IMAGE, VIDEO, AUDIO)
metadataobject | nullPublic media metadata: width, height, duration_ms, or alt; available keys depend on the file
thumbnailobject | nullThumbnail of the file
temporary_urlstringMedia URL; pre-signed URLs expire in 10 minutes
media_typestringMedia type (IMAGE, VIDEO, AUDIO)
metadataobject | nullPublic media metadata: width, height, duration_ms, or alt; available keys depend on the file
locationstring | nullLocation description
created_atdate-timeCreation time in ISO 8601 format
tzstring | nullTimezone offset in +00:00 format
datedateDate in YYYY-MM-DD format
tzstringTimezone offset in +00:00 format
start_timedate-timeStart time in ISO 8601 format
end_timedate-timeEnd time in ISO 8601 format
search_contextstring | nullSearch context associated with the Moment
audio_summarystring | nullAudio summary of the Moment
next_cursorstring | nullOpaque cursor for the next page; null when no further page is available.
has_morebooleanWhether another page is available. Pass next_cursor as cursor to continue with unchanged filters.
GET/moments/search

Search Moments

Searches Moments by meaning and returns matching results ranked by relevance.

Query parameters

querystringrequired

Search query string (1-100 characters)

start_datedateoptional

Inclusive start date in YYYY-MM-DD format; omit for no lower bound

end_datedateoptional

Inclusive end date in YYYY-MM-DD format; omit for no upper bound

limitintegeroptional

Number of records per page (minimum 1, default 10, max 100)

cursorstringoptional

Opaque next_cursor from the previous response (1-1024 characters); omit for the first request

Responses

200Successful response.
codeinteger—
detailstring—
dataobject—
itemsobject[]—
idstringUnique identifier of the moment
titlestringMoment title
descriptionstringMoment description
media_typesstring[]Media types included (e.g. ["IMAGE", "VIDEO"])
cover_fileobject | nullCover file of the moment
idstringUnique identifier of the file
fileobject | nullThe media file
temporary_urlstringMedia URL; pre-signed URLs expire in 10 minutes
media_typestringMedia type (IMAGE, VIDEO, AUDIO)
metadataobject | nullPublic media metadata: width, height, duration_ms, or alt; available keys depend on the file
thumbnailobject | nullThumbnail of the file
temporary_urlstringMedia URL; pre-signed URLs expire in 10 minutes
media_typestringMedia type (IMAGE, VIDEO, AUDIO)
metadataobject | nullPublic media metadata: width, height, duration_ms, or alt; available keys depend on the file
locationstring | nullLocation description
created_atdate-timeCreation time in ISO 8601 format
tzstring | nullTimezone offset in +00:00 format
datedateDate in YYYY-MM-DD format
tzstringTimezone offset in +00:00 format
start_timedate-timeStart time in ISO 8601 format
end_timedate-timeEnd time in ISO 8601 format
search_contextstring | nullSearch context associated with the Moment
audio_summarystring | nullAudio summary of the Moment
next_cursorstring | nullOpaque cursor for the next page; null when no further page is available.
has_morebooleanWhether another page is available. Pass next_cursor as cursor to continue with unchanged filters.
GET/moments/calendar

Get Moment Calendar

Returns dates with Moments and a highlight Moment cover for each date.

Query parameters

start_datedaterequired

Start date in YYYY-MM-DD format (e.g. 2025-12-01)

end_datedaterequired

End date in YYYY-MM-DD format (e.g. 2025-12-31)

Responses

200Successful response.
codeinteger—
detailstring—
dataobject[]—
datedate—
highlight_momentobject | null—
idstringUnique identifier of the moment
titlestringMoment title
descriptionstringMoment description
media_typesstring[]Media types included (e.g. ["IMAGE", "VIDEO"])
cover_fileobject | nullCover file of the moment
idstringUnique identifier of the file
fileobject | nullThe media file
temporary_urlstringMedia URL; pre-signed URLs expire in 10 minutes
media_typestringMedia type (IMAGE, VIDEO, AUDIO)
metadataobject | nullPublic media metadata: width, height, duration_ms, or alt; available keys depend on the file
thumbnailobject | nullThumbnail of the file
temporary_urlstringMedia URL; pre-signed URLs expire in 10 minutes
media_typestringMedia type (IMAGE, VIDEO, AUDIO)
metadataobject | nullPublic media metadata: width, height, duration_ms, or alt; available keys depend on the file
locationstring | nullLocation description
created_atdate-timeCreation time in ISO 8601 format
tzstring | nullTimezone offset in +00:00 format
datedateDate in YYYY-MM-DD format
tzstringTimezone offset in +00:00 format
start_timedate-timeStart time in ISO 8601 format
end_timedate-timeEnd time in ISO 8601 format
search_contextstring | nullSearch context associated with the Moment
audio_summarystring | nullAudio summary of the Moment
GET/moments/{moment_id}

Get Moment Detail

Returns full details of a specific Moment, including its cover file.

Path parameters

moment_iduuidrequired

The unique identifier of the moment (UUID)

Responses

200Successful response.
codeinteger—
detailstring—
dataobject—
idstringUnique identifier of the moment
titlestringMoment title
descriptionstringMoment description
media_typesstring[]Media types included (e.g. ["IMAGE", "VIDEO"])
cover_fileobject | nullCover file of the moment
idstringUnique identifier of the file
fileobject | nullThe media file
temporary_urlstringMedia URL; pre-signed URLs expire in 10 minutes
media_typestringMedia type (IMAGE, VIDEO, AUDIO)
metadataobject | nullPublic media metadata: width, height, duration_ms, or alt; available keys depend on the file
thumbnailobject | nullThumbnail of the file
temporary_urlstringMedia URL; pre-signed URLs expire in 10 minutes
media_typestringMedia type (IMAGE, VIDEO, AUDIO)
metadataobject | nullPublic media metadata: width, height, duration_ms, or alt; available keys depend on the file
locationstring | nullLocation description
created_atdate-timeCreation time in ISO 8601 format
tzstring | nullTimezone offset in +00:00 format
datedateDate in YYYY-MM-DD format
tzstringTimezone offset in +00:00 format
start_timedate-timeStart time in ISO 8601 format
end_timedate-timeEnd time in ISO 8601 format
search_contextstring | nullSearch context associated with the Moment
audio_summarystring | nullAudio summary of the Moment
GET/moments/{moment_id}/files

List Moment Files

Returns files belonging to a specific Moment, with filtering by highlight status.

Path parameters

moment_iduuidrequired

The unique identifier of the Moment (UUID)

Query parameters

highlightbooleanoptional

Filter by highlight status; omit to include all files

cursorstringoptional

Opaque next_cursor from the previous response (1-1024 characters); omit for the first request

limitintegeroptional

Number of records per page (minimum 1, default 20, max 100)

Responses

200Successful response.
codeinteger—
detailstring—
dataobject—
itemsobject[]—
idstringUnique identifier of the file
fileobject | nullThe media file
temporary_urlstringMedia URL; pre-signed URLs expire in 10 minutes
media_typestringMedia type (IMAGE, VIDEO, AUDIO)
metadataobject | nullPublic media metadata: width, height, duration_ms, or alt; available keys depend on the file
thumbnailobject | nullThumbnail of the file
temporary_urlstringMedia URL; pre-signed URLs expire in 10 minutes
media_typestringMedia type (IMAGE, VIDEO, AUDIO)
metadataobject | nullPublic media metadata: width, height, duration_ms, or alt; available keys depend on the file
locationstring | nullLocation description
created_atdate-timeCreation time in ISO 8601 format
tzstring | nullTimezone offset in +00:00 format
next_cursorstring | nullOpaque cursor for the next page; null when no further page is available.
has_morebooleanWhether another page is available. Pass next_cursor as cursor to continue with unchanged filters.

Journals

3 endpoints
GET/journals

List Journals

Returns Journals filtered by date range.

Query parameters

start_datedateoptional

Inclusive start date in YYYY-MM-DD format; omit for no lower bound

end_datedateoptional

Inclusive end date in YYYY-MM-DD format; omit for no upper bound

limitintegeroptional

Number of records per page (minimum 1, default 20, max 100)

cursorstringoptional

Opaque next_cursor from the previous response (1-1024 characters); omit for the first request

sortstringoptional

Record order: asc or desc (default desc)

Responses

200Successful response.
codeinteger—
detailstring—
dataobject—
itemsobject[]—
idstringUnique identifier of the journal
typestringJournal type (e.g. DIARY)
titlestring | nullJournal title
descriptionstringJournal summary
contentstring | nullFull journal content
media_itemsobject[]Media attached to the journal
sourceobjectSource media file
temporary_urlstringMedia URL; pre-signed URLs expire in 10 minutes
media_typestringMedia type (IMAGE, VIDEO, AUDIO)
metadataobject | nullPublic media metadata: width, height, duration_ms, or alt; available keys depend on the file
thumbnailobject | nullThumbnail media file
temporary_urlstringMedia URL; pre-signed URLs expire in 10 minutes
media_typestringMedia type (IMAGE, VIDEO, AUDIO)
metadataobject | nullPublic media metadata: width, height, duration_ms, or alt; available keys depend on the file
datedateDate in YYYY-MM-DD format
start_datestring | nullStart date for multi-day journals
tzstringTimezone offset in +00:00 format
recorded_atdate-timeOriginal recording time in ISO 8601
created_atdate-timeCreation time in ISO 8601 format
next_cursorstring | nullOpaque cursor for the next page; null when no further page is available.
has_morebooleanWhether another page is available. Pass next_cursor as cursor to continue with unchanged filters.
GET/journals/calendar

Get Journal Calendar

Returns dates with Journals within a date range.

Query parameters

start_datedaterequired

Start date in YYYY-MM-DD format (e.g. 2026-06-01)

end_datedaterequired

End date in YYYY-MM-DD format (e.g. 2026-06-30)

Responses

200Successful response.
codeinteger—
detailstring—
dataobject[]—
datedate—
GET/journals/{journal_id}

Get Journal Detail

Returns full details of a single Journal entry.

Path parameters

journal_iduuidrequired

The unique identifier of the journal (UUID)

Responses

200Successful response.
codeinteger—
detailstring—
dataobject—
idstringUnique identifier of the journal
typestringJournal type (e.g. DIARY)
titlestring | nullJournal title
descriptionstringJournal summary
contentstring | nullFull journal content
media_itemsobject[]Media attached to the journal
sourceobjectSource media file
temporary_urlstringMedia URL; pre-signed URLs expire in 10 minutes
media_typestringMedia type (IMAGE, VIDEO, AUDIO)
metadataobject | nullPublic media metadata: width, height, duration_ms, or alt; available keys depend on the file
thumbnailobject | nullThumbnail media file
temporary_urlstringMedia URL; pre-signed URLs expire in 10 minutes
media_typestringMedia type (IMAGE, VIDEO, AUDIO)
metadataobject | nullPublic media metadata: width, height, duration_ms, or alt; available keys depend on the file
datedateDate in YYYY-MM-DD format
start_datestring | nullStart date for multi-day journals
tzstringTimezone offset in +00:00 format
recorded_atdate-timeOriginal recording time in ISO 8601
created_atdate-timeCreation time in ISO 8601 format

Summaries

1 endpoint
GET/summaries

List Summaries

Returns daily activity, weekly, or chat summaries for a specified date range.

Query parameters

typestringrequired

Exactly one summary type: daily, weekly, or chat

start_datedaterequired

Inclusive start date in YYYY-MM-DD format

end_datedaterequired

Inclusive end date in YYYY-MM-DD format

Responses

200Successful response.
codeinteger—
detailstring—
dataobject—
typestringThe requested summary type.
itemsobject[]—
on_datedateSummary date in YYYY-MM-DD format; weekly summaries use the week end date
summarystringSummary text

Health

1 endpoint
GET/health-reports

List Health Reports

Returns daily health reports for a specified date range.

Query parameters

start_datedaterequired

Inclusive start date in YYYY-MM-DD format

end_datedaterequired

Inclusive end date in YYYY-MM-DD format; capped at 29 days after start_date

Responses

200Successful response.
codeinteger—
detailstring—
dataobject—
itemsobject[]—
datedateReport date in YYYY-MM-DD format
tzstringReport timezone offset
report_dataobjectMap of available report sections to text: summary, calorie, daily_metrics, dietary_review, events, and time_range; missing sections are omitted

Chat

1 endpoint
GET/chat/history

List Chat History

Returns user-visible user and assistant messages from the default chat.

Query parameters

start_timedate-timeoptional

Inclusive creation-time lower bound in ISO 8601 format; omit for no time restriction; timestamps without an offset use the user's timezone

cursorstringoptional

Opaque next_cursor from the previous response (1-1024 characters); omit for the first request

limitintegeroptional

Number of messages per page (minimum 1, default 50, max 100)

Responses

200Successful response.
codeinteger—
detailstring—
dataobject—
itemsobject[]—
rolestringMessage author: user or assistant
textstringMessage text
created_atdate-timeMessage creation time in ISO 8601 format, in the user's timezone
next_cursorstring | nullOpaque cursor for the next page; null when no further page is available.
has_morebooleanWhether another page is available. Pass next_cursor as cursor to continue with unchanged filters.

Realtime

1 endpoint
GET/realtime/latest-event

Get Latest Realtime Event

Returns the most recent realtime event detected by your Looki device. Requires proactive mode to be enabled in the Looki app.

Responses

200Successful response.
codeinteger—
detailstring—
dataobject | null—
idstring—
descriptionstring—
start_timedate-time—
end_timedate-time—
tzstring—
locationstring | nullEvent location, or null when unavailable.
latest_fileobject | null—
temporary_urlstringMedia URL; pre-signed URLs expire in 10 minutes
media_typestringMedia type (IMAGE, VIDEO, AUDIO)
metadataobject | nullPublic media metadata: width, height, duration_ms, or alt; available keys depend on the file