Limitless Lifelogs API
The Lifelogs API from Limitless — 2 operation(s) for lifelogs.
The Lifelogs API from Limitless — 2 operation(s) for lifelogs.
Every API here is available over the APIs.io API and to AI agents over MCP.
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
find_apisBrowse and filter every API in the catalog.get_api_artifactsOne API's artifacts, grouped by type.get_openapiThe primary OpenAPI for this API.find_similar_apisAPIs that look like this one.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.curl "https://apis.io/api/v1/apis/limitless-ai-lifelogs-api"
curl "https://apis.io/api/v1/apis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.
A second provider on the same verified email joins the account you already have.
openapi: 3.2.0
info:
title: Limitless Developer Chats Lifelogs API
description: 'API for accessing lifelogs, providing transparency and portability to user data.
## Rate Limiting
The API implements rate limiting to ensure fair usage and protect against abuse.
- **Default Rate Limit:** 180 requests per minute per API key
- **Rate Limit Response:** When exceeded, returns 429 Too Many Requests with retry information
'
version: 1.0.0
servers:
- url: https://api.limitless.ai/
tags:
- name: Lifelogs
paths:
/v1/lifelogs:
get:
operationId: getLifelogs
summary: Returns a list of lifelogs.
description: Returns a list of lifelogs based on specified time range or date. If a search parameter is provided, performs hybrid search across the lifelogs. Pagination is not supported when using the search parameter.
parameters:
- in: query
name: timezone
description: IANA timezone specifier. If missing, UTC is used.
schema:
type: string
- in: query
name: date
description: Will return all entries beginning on a date in the given timezone (YYYY-MM-DD).
schema:
type: string
format: date
- in: query
name: start
description: Start datetime in modified ISO-8601 format (YYYY-MM-DD or YYYY-MM-DD HH:mm:SS). Timezones/offsets will be ignored.
schema:
type: string
format: date-time
- in: query
name: end
description: End datetime in modified ISO-8601 format (YYYY-MM-DD or YYYY-MM-DD HH:mm:SS). Timezones/offsets will be ignored.
schema:
type: string
format: date-time
- in: query
name: cursor
description: Cursor for pagination to retrieve the next set of entries. Will not work when `search` parameter is provided.
schema:
type: string
- in: query
name: direction
description: Sort direction for entries.
schema:
type: string
enum:
- asc
- desc
default: desc
- in: query
name: includeMarkdown
description: Whether to include markdown content in the response.
schema:
type: boolean
default: true
- in: query
name: includeHeadings
description: Whether to include headings in the response.
schema:
type: boolean
default: true
- in: query
name: isStarred
description: Filter entries by their starred status.
schema:
type: boolean
- in: query
name: limit
description: Maximum number of entries to return. Upper limit is 100.
schema:
type: integer
- in: query
name: includeContents
description: Whether to include structured contents in the response. When false, the contents array will be empty. Note that contents are automatically excluded when more than 25 results are returned, regardless of this parameter.
schema:
type: boolean
default: true
- in: query
name: search
description: 'Search query to perform hybrid search across lifelogs. When provided, other filtering parameters are applied as additional constraints. You cannot paginate requests when using this parameter. Upper limit of 100 results. Hybrid search is a combination of keyword search and semantic search; you can therefore send:
- semantic queries, like "place bob recommended at dinner"
- boolean keyword search, like "blue OR red"
(While "AND" queries are supported, sending "red AND blue" is the same as sending "red blue").
'
schema:
type: string
responses:
'200':
description: Successful response with entries.
content:
application/json:
schema:
$ref: '#/components/schemas/LifelogsResponse'
'429':
description: Too Many Requests - Rate limit exceeded.
content:
application/json:
schema:
type: object
properties:
error:
type: string
description: Error message indicating rate limit exceeded.
retryAfter:
type: string
description: Number of seconds to wait before retrying.
tags:
- Lifelogs
/v1/lifelogs/{id}:
get:
operationId: getLifelog
summary: Returns a single lifelog by ID.
description: Returns a specific lifelog entry by its unique identifier.
parameters:
- in: path
name: id
required: true
description: Unique identifier of the lifelog to retrieve.
schema:
type: string
- in: query
name: timezone
description: IANA timezone specifier. If missing, UTC is used.
schema:
type: string
- in: query
name: includeMarkdown
description: Whether to include markdown content in the response.
schema:
type: boolean
default: true
- in: query
name: includeHeadings
description: Whether to include headings in the response.
schema:
type: boolean
default: true
- in: query
name: includeContents
description: Whether to include structured contents in the response. When false, the contents array will be empty.
schema:
type: boolean
default: true
responses:
'200':
description: Successful response with a single lifelog entry.
content:
application/json:
schema:
$ref: '#/components/schemas/LifelogResponse'
'404':
description: Lifelog entry not found.
'401':
description: Unauthorized - Invalid or missing API key.
'429':
description: Too Many Requests - Rate limit exceeded.
content:
application/json:
schema:
type: object
properties:
error:
type: string
description: Error message indicating rate limit exceeded.
retryAfter:
type: string
description: Number of seconds to wait before retrying.
tags:
- Lifelogs
delete:
operationId: deleteLifelog
summary: Deletes a single lifelog by ID.
description: Permanently deletes a specific lifelog entry by its unique identifier.
parameters:
- in: path
name: id
required: true
description: Unique identifier of the lifelog to delete.
schema:
type: string
responses:
'200':
description: Lifelog successfully deleted.
content:
application/json:
schema:
type: object
properties:
success:
type: boolean
description: Indicates whether the deletion was successful.
'404':
description: Lifelog entry not found.
'401':
description: Unauthorized - Invalid or missing API key.
'429':
description: Too Many Requests - Rate limit exceeded.
content:
application/json:
schema:
type: object
properties:
error:
type: string
description: Error message indicating rate limit exceeded.
retryAfter:
type: string
description: Number of seconds to wait before retrying.
tags:
- Lifelogs
components:
schemas:
Meta:
type: object
properties:
lifelogs:
$ref: '#/components/schemas/MetaLifelogs'
LifelogsResponse:
type: object
properties:
data:
$ref: '#/components/schemas/LifelogsResponseData'
meta:
$ref: '#/components/schemas/Meta'
Lifelog:
type: object
properties:
id:
type: string
description: Unique identifier for the entry.
title:
type: string
description: Title of the entry. Equal to the first heading1 node.
markdown:
type:
- string
- 'null'
description: Raw markdown content of the entry.
contents:
type: array
items:
$ref: '#/components/schemas/ContentNode'
description: List of ContentNodes.
startTime:
type: string
format: date-time
description: ISO format in given timezone.
endTime:
type: string
format: date-time
description: ISO format in given timezone.
isStarred:
type: boolean
description: Whether the entry is starred. Defaults to false if not explicitly starred.
updatedAt:
type: string
format: date-time
description: Last update time of the entry in ISO format in given timezone.
LifelogResponseData:
type: object
properties:
lifelog:
$ref: '#/components/schemas/Lifelog'
LifelogResponse:
type: object
properties:
data:
$ref: '#/components/schemas/LifelogResponseData'
LifelogsResponseData:
type: object
properties:
lifelogs:
type: array
items:
$ref: '#/components/schemas/Lifelog'
MetaLifelogs:
type: object
properties:
nextCursor:
type:
- string
- 'null'
description: Cursor for pagination to retrieve the next set of lifelogs, bound to the query parameters from the original request. When using a cursor, other query parameters are ignored.
count:
type: integer
description: Number of lifelogs in the current response.
ContentNode:
type: object
properties:
type:
type: string
description: Type of content node (e.g., heading1, heading2, heading3, blockquote). More types might be added.
content:
type: string
description: Content of the node.
startTime:
type: string
format: date-time
description: ISO format in given timezone.
endTime:
type: string
format: date-time
description: ISO format in given timezone.
startOffsetMs:
type: integer
description: Milliseconds after start of this entry.
endOffsetMs:
type: integer
description: Milliseconds after start of this entry.
children:
type: array
items:
$ref: '#/components/schemas/ContentNode'
description: Child content nodes.
speakerName:
type:
- string
- 'null'
description: Speaker identifier, present for certain node types (e.g., blockquote).
speakerIdentifier:
type:
- string
- 'null'
description: Speaker identifier, when applicable. Set to "user" when the speaker has been identified as the user.
enum:
- user