# Lightpage API Lightpage provides an HTTP API for accessing a user's Lightpage entries. Base URL: https://worker.lightpage.com Authentication The API uses bearer tokens. Header: Authorization: Bearer API keys can be created, viewed, and revoked in Lightpage by going to Settings -> Data -> API. Keep API keys private. Do not expose them in client-side code, public repositories, browser extensions, or logs. Treat an API key as access to the Lightpage entries available to the account that created it. Authorization model - API keys are tied to the Lightpage account that created them. - API keys can list and read all entries. In the future, they may also be able to create, update, and delete entries. - Revoke an API key immediately if it is lost or exposed. Rate limits Lightpage applies rate limits to protect user data and service availability. The current public API limit is 60 requests per minute per Lightpage account. Clients should expect HTTP 429 Too Many Requests when a limit is exceeded. When present, respect Retry-After response headers before retrying. Recommended client behavior: - Cache responses when possible. - Use cursors instead of repeatedly fetching the full entry list. - Use updated_after to incrementally sync recently changed entries. - Back off exponentially after 429 or transient 5xx responses. - Avoid parallel full-account scans. Endpoints GET /v1/entries Lists entries for the authenticated user, newest updates first. Query parameters: - updated_after: Optional ISO 8601 date-time. Return entries updated after this time. - updated_before: Optional ISO 8601 date-time. Return entries updated before this time. - search: Optional text query. - tags: Optional tag filter. Entries must have all listed tag names. Pass repeated tags parameters or a comma-separated value. - cursor: Optional pagination cursor returned by a previous response. Response: { "entries": [ { "id": "not_...", "type": "note", "title": "Entry title", "preview": "Short plain-text preview of the entry", "tags": ["work", "reflection"], "created_at": "2026-06-10T12:00:00.000Z", "updated_at": "2026-06-10T12:30:00.000Z" } ], "next_cursor": "..." } next_cursor is null or omitted when there are no more results. Example: curl "https://worker.lightpage.com/v1/entries?updated_after=2026-01-01T00%3A00%3A00.000Z" \ -H "Authorization: Bearer " GET /v1/entries/{id} Reads a single entry by ID. Path parameters: - id: The Lightpage entry ID. Response: { "id": "not_...", "type": "note", "title": "Entry title", "markdown": "Full entry markdown", "tags": ["work", "reflection"], "created_at": "2026-06-10T12:00:00.000Z", "updated_at": "2026-06-10T12:30:00.000Z" } Example: curl "https://worker.lightpage.com/v1/entries/not_..." \ -H "Authorization: Bearer " Errors Common HTTP statuses: - 400 Bad Request: The request parameters are invalid. - 401 Unauthorized: Missing or invalid bearer token. - 403 Forbidden: The token is valid but not allowed to access the requested resource. - 402 Payment Required: The account does not currently have API access. - 404 Not Found: The entry does not exist or is not visible to the authenticated account. - 429 Too Many Requests: The client has exceeded a rate limit. - 503 Service Unavailable: Lightpage could not load the user's notes yet. Retry later. - 500 Internal Server Error: Unexpected server error. Error responses are JSON and include an error message. MCP For AI apps that support the Model Context Protocol, Lightpage also provides an OAuth-based MCP server: https://lightpage.com/mcp.txt Primary site: https://lightpage.com