Limitless Lifelogs API

The Lifelogs API from Limitless — 2 operation(s) for lifelogs.

OpenAPI Specification

limitless-ai-lifelogs-api-openapi.yml Raw ↑
swagger: '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
host: api.limitless.ai
basePath: /
schemes:
- https
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
        type: string
        description: IANA timezone specifier. If missing, UTC is used.
      - in: query
        name: date
        type: string
        format: date
        description: Will return all entries beginning on a date in the given timezone (YYYY-MM-DD).
      - in: query
        name: start
        type: string
        format: date-time
        description: Start datetime in modified ISO-8601 format (YYYY-MM-DD or YYYY-MM-DD HH:mm:SS). Timezones/offsets will be ignored.
      - in: query
        name: end
        type: string
        format: date-time
        description: End datetime in modified ISO-8601 format (YYYY-MM-DD or YYYY-MM-DD HH:mm:SS). Timezones/offsets will be ignored.
      - in: query
        name: cursor
        type: string
        description: Cursor for pagination to retrieve the next set of entries. Will not work when `search` parameter is provided.
      - in: query
        name: direction
        type: string
        enum:
        - asc
        - desc
        default: desc
        description: Sort direction for entries.
      - in: query
        name: includeMarkdown
        type: boolean
        default: true
        description: Whether to include markdown content in the response.
      - in: query
        name: includeHeadings
        type: boolean
        default: true
        description: Whether to include headings in the response.
      - in: query
        name: isStarred
        type: boolean
        description: Filter entries by their starred status.
      - in: query
        name: limit
        type: integer
        description: Maximum number of entries to return. Upper limit is 100.
      - in: query
        name: includeContents
        type: boolean
        default: true
        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.
      - in: query
        name: search
        type: string
        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").

          '
      responses:
        '200':
          description: Successful response with entries.
          schema:
            $ref: '#/definitions/LifelogsResponse'
        '429':
          description: Too Many Requests - Rate limit exceeded.
          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
        type: string
        required: true
        description: Unique identifier of the lifelog to retrieve.
      - in: query
        name: timezone
        type: string
        description: IANA timezone specifier. If missing, UTC is used.
      - in: query
        name: includeMarkdown
        type: boolean
        default: true
        description: Whether to include markdown content in the response.
      - in: query
        name: includeHeadings
        type: boolean
        default: true
        description: Whether to include headings in the response.
      - in: query
        name: includeContents
        type: boolean
        default: true
        description: Whether to include structured contents in the response. When false, the contents array will be empty.
      responses:
        '200':
          description: Successful response with a single lifelog entry.
          schema:
            $ref: '#/definitions/LifelogResponse'
        '404':
          description: Lifelog entry not found.
        '401':
          description: Unauthorized - Invalid or missing API key.
        '429':
          description: Too Many Requests - Rate limit exceeded.
          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
        type: string
        required: true
        description: Unique identifier of the lifelog to delete.
      responses:
        '200':
          description: Lifelog successfully deleted.
          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.
          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
definitions:
  LifelogsResponseData:
    type: object
    properties:
      lifelogs:
        type: array
        items:
          $ref: '#/definitions/Lifelog'
  LifelogResponseData:
    type: object
    properties:
      lifelog:
        $ref: '#/definitions/Lifelog'
        x-nullable: true
  LifelogResponse:
    type: object
    properties:
      data:
        $ref: '#/definitions/LifelogResponseData'
  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
        description: Raw markdown content of the entry.
        x-nullable: true
      contents:
        type: array
        items:
          $ref: '#/definitions/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.
  MetaLifelogs:
    type: object
    properties:
      nextCursor:
        type: string
        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.
        x-nullable: true
      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: '#/definitions/ContentNode'
        description: Child content nodes.
      speakerName:
        type: string
        description: Speaker identifier, present for certain node types (e.g., blockquote).
        x-nullable: true
      speakerIdentifier:
        type: string
        description: Speaker identifier, when applicable. Set to "user" when the speaker has been identified as the user.
        enum:
        - user
        x-nullable: true
  Meta:
    type: object
    properties:
      lifelogs:
        $ref: '#/definitions/MetaLifelogs'
  LifelogsResponse:
    type: object
    properties:
      data:
        $ref: '#/definitions/LifelogsResponseData'
      meta:
        $ref: '#/definitions/Meta'