Detailed pricing plans are not available yet for this tool.
LimitlessHomeSolutionsPrivacyDevelopersAboutSign InLimitless has been acquired by MetaMessage from Dan Siroker, Co-Founder & CEOI'm excited to share that Limitless has been acquired by Meta. I'm going to share why we joined forces, what this means for customers, and what comes next.First, why? When we started Limitless five years ago, the world was very different. AI was a pipe dream to many. Hardware startups were considered unfundable, and a business that did both AI and hardware would have been considered ludicrous.But today is different. The world has changed. We're no longer working on a weird fringe idea. We're building a future that now seems inevitable. We're not alone.Meta recently announced a new vision to bring personal superintelligence to everyone and a key part of that vision is building incredible AI-enabled wearables. We share this vision and we'll be joining Meta to help bring our shared vision to life.What does this mean for existing customers? Good news. We will continue to support existing Pendant customers for at least another year, but we'll no longer sell the Pendant to new customers. You'll no longer need to pay a subscription, and existing customers get the Unlimited Plan for free. That said, we will be sunsetting non-Pendant functionality like Rewind, and there'll be updates to regional availability. For continuing customers, you will need to agree to our updated Privacy Policy and Terms of Service. Whether you choose to continue to use the Pendant or not, your data will remain safe.We just launched a feature to make it easy to export all of your data. And of course, if you want to delete all of your data, that is also very easy to do within the app.Lastly, I want to thank each and every one of you for going on this journey with us. I look forward to sharing more when I can.Thanks,Frequently Asked QuestionsHow long will you support existing Pendant customers?We will continue to support existing Pendant customers throughout 2026. You'll no longer need to pay a subscription, and existing customers get the unlimited plan for free.What regions will Limitless no longer support?As of December 5, 2025, the Limitless service will no longer be available in Brazil, China, the European Union, Israel, South Korea, Turkey, and the United Kingdom. If you wish to download your stored transcripts or other account information before the service becomes unavailable in your region, please follow the instructions in this Help Center Article. Users in these regions will have until December 19, 2025 to download their information, after which, their account and all associated information will be permanently deleted.What happens to my current subscription?We're making the Limitless Unlimited Plan free for all existing customers.Do I still need to pay for a subscription?No. You no longer need to pay for a subscription if you are a continuing customer.Can I buy a new Pendant or purchase more units?No. We are no longer selling the Pendant as of December 5, 2025.Can I delete my account or export my Limitless data?Yes, you can delete your Limitless account or export your Limitless data at any time by following this Help Center Article.What is happening to the Limitless Desktop App and Limitless Web App?You will no longer be able to record using the Limitless Desktop App or Limitless Web App. However, you will still be able to access previously recorded meetings throughout 2026.What is happening to the Rewind app?The Rewind app is sunsetting. The latest update disables all screen and audio capture starting December 19, 2025.I still have questions. How can I contact your team?You can reach us at support@limitless.aiLimitless Go BeyondSign inProductHomeDevelopersCompanyAboutCareersPrivacyResources & SupportHelp CenterSupportCommunitySocialX / TwitterYouTubeLinkedInTikTokInstagram© 2026 Limitless AITermsPrivacy Policy --- LimitlessHomeSolutionsPrivacyDevelopersAboutSign In Our vision is to free the human mind from its biological limitations.We create tools that augment—not replace—human intelligence with artificial intelligence to overcome the brain’s limitations. Improving memory and focus are just the beginning.Our teamWe’re here to do the best work of our lives. We put our hearts into solving real problems for real people.Brett BejcekCo-FounderChris DempseyEngineeringColin YoungEngineeringDan SirokerCo-Founder & CEOEver UribeEngineeringHeidi LiouCustomer SuccessJay HickeyCTOJoaquin KunkelProduct DesignJonas DouradoEngineeringJules JoslynChief of StaffLazar DeminHardware EngineeringMaclean DunkinProduct EngineeringMatt StraubCustomer SuccessNikki DickmanHead of OperationsPrashanth SadasivanEngineeringRicky RaykhenbergEngineeringScott YuanHead of HardwareTim ConnorsEngineeringTyson KunovskyHead of EngineeringWe’ve honed our craft at companies like Apple, Google, Meta, Optimizely, Spotify, Twitter, Amazon, SpaceX, and Fellow.Our investorsWe have raised over $33m from top-tier investors including Sam Altman, First Round Capital, Andreessen Horowitz, and NEA.Join us on our mission to help humans go beyond our biological limitations.Learn moreLimitless Go BeyondSign inProductHomeDevelopersCompanyAboutCareersPrivacyResources & SupportHelp CenterSupportCommunitySocialX / TwitterYouTubeLinkedInTikTokInstagram© 2026 Limitless AITermsPrivacy Policy --- LimitlessHomeSolutionsPrivacyDevelopersAboutSign InPrivacyYour privacy and the privacy of the people you meet with are very important to us.Secure by designWe use Apple's Accessory Kit for secure authentication and encrypted transfers, helping ensure data is exchanged in a secure way between your device and phone.Encrypted in transit & storageWe protect your data with industry-standard encryption (TLS) in transit and securely store it using Hardware Security Modules (HSM) and advanced encryption protocols.Granular data controlsEasily manage, download, or delete your data at any time. Audio retention settings allow you to automatically delete audio after a set period of time.Data PrivacyAudit logs and code review procedures help ensure your information remains secure.FAQCan I export recordings and transcripts?Yes. You can download and export from the app and API.What happens if the Pendant is lost or stolen?Your audio is encrypted and not able to be read without the key.Can I delete my data whenever I want?Yes. You can stop recording at any time, and delete any recording in the app.Can I delete my audio and just keep the transcripts?You can set a custom audio retention period in the app. (1 day, week, month, year, or forever)How long do you keep my recordings and transcriptions?Your full recordings stay in your account until you delete them or close your account.Do I need to get consent before recording?We believe privacy is important and we recommend users of our products hold themselves accountable to a much higher standard than the bare minimum requirements. All users of our product are required to proactively provide notice and seek consent from everyone they record while using the Pendant. Not only is this a legal requirement under our Terms of Service, but it is also just the right thing to do. Please see How to ask for Consent for more information on obtaining consent, and our Terms of Service for more information regarding your use of the Pendant and our broader services.I'm speaking with someone wearing the Pendant. How is my data being handled?Please see Talking to Someone Wearing the Pendant for more information about the recording process, what data may be collected, and how that information may be used and shared.View our full privacy policy ›Limitless Go BeyondSign inProductHomeDevelopersCompanyAboutCareersPrivacyResources & SupportHelp CenterSupportCommunitySocialX / TwitterYouTubeLinkedInTikTokInstagram© 2026 Limitless AITermsPrivacy Policy --- LimitlessHomeSolutionsPrivacyDevelopersAboutSign InLimitless Developer PlatformYour data is yours to use. Build your own integrations with our API.MCP Integration: Connect your Limitless memory to MCP clients like Claude, and ChatGPT for Workspace.Note: At this time, ChatGPT's MCP (Connectors) integration works for Pro and Workspace accounts only.Table of ContentsSetupEndpointsUsageRate LimitingMCP IntegrationConnect Claude (and other MCP-compatible tools) to your Limitless MCP server to search and ask about your Lifelogs.MCP URLhttps://api.limitless.ai/mcp CopyWorks with Claude and other MCP-compatible tools.In Claude, go to Settings → Connectors and add the MCP URL.Example RepositoryWe've created an example repository that shows how to use the Developer API to access your data.Fork @limitless-ai-inc/limitless-api-examplesSlack ChannelJoin the #developers channel in our Slack Community for tips and to share what you've built!Join #developersSetup1. Access Developer settingsFirst, you'll need to join Limitless if you haven't already. Then, pair your Pendant with your Limitless account. After pairing, open the Desktop or Web App to copy your API key. You'll see the Developer link appear in your Limitless Desktop or Web App:Open Limitless Web2. Create an API KeyOnce you're logged in, you can create an API key by clicking the "Create API Key" button in the top right corner of the screen.The security of your data is incredibly important to us. NEVER share your API key, commit it to a source repository, or otherwise expose it to third parties.3. Use the APINow that you have an API key, you can use it to access the API. Here's an example of how to use the API to get your 3 most recent Lifelog entries:curl -H "X-API-Key: YOUR_API_KEY" https://api.limitless.ai/v1/lifelogsThere are many parameters you can use to customize your API request. For more information, see the API documentation.EndpointsList/Search LifelogsGet recent Lifelogs from your Pendant, search specific date ranges, sort, and paginate.GET /v1/lifelogsGet LifelogGet a specific Lifelog by ID.GET /v1/lifelogs/{lifelog_id}Delete LifelogPermanently delete a specific Lifelog by ID.DELETE /v1/lifelogs/{lifelog_id}Get AudioDownload audio from your Pendant as Ogg Opus files for a specific time range.GET /v1/download-audioList ChatsGet your chats (ask-ai conversations) with pagination support.GET /v1/chatsGet ChatGet a specific chat by ID.GET /v1/chats/{chat_id}Delete ChatPermanently delete a specific chat by ID.DELETE /v1/chats/{chat_id}While the Developer API is in beta, it only supports Pendant data. We plan to add more endpoints very soon.UsageResourcesopenapi.ymlFor developers and LLMsAuthenticationAll API requests require authentication using an API key.Include your API key in the X-API-Key header with each request:curl -H "X-API-Key: YOUR_API_KEY" https://api.limitless.ai/v1/lifelogsYou can obtain an API key from the Developer settings in your Limitless account.Rate LimitingThe API implements rate limiting to ensure fair usage and protect against abuse.Default Rate Limit: 180 requests per minute per API keyWhen you exceed the rate limit, the API returns a 429 Too Many Requests status with the following response:{ "error": "API key is rate limited", "retryAfter": "60" }The rate limit is enforced per API key across all endpoints. If you need a higher rate limit, please contact us.RequestsGET /v1/lifelogs 🔗Get recent Lifelogs from your Pendant, search specific dates, or search by natural language query.Query ParametersParameterTypeDescriptiontimezonestringIANA timezone specifier. If missing, UTC is used. Optional.isScheduledbooleanFilter chats created by scheduled prompts. When true, only scheduled chats are returned; when false, only non-scheduled chats are returned. Optional.globalPromptIdstringFilter to chats generated by scheduled prompts with the given globalPromptId. Optional.datestring (date)Will return all entries beginning on a date in the given timezone (YYYY-MM-DD). If start or end are provided, date will be ignored.startstring (date-time)Start datetime in modified ISO-8601 format (YYYY-MM-DD or YYYY-MM-DD HH:mm:SS). Timezones/offsets will be ignored; use the query parameter instead.endstring (date-time)End datetime in modified ISO-8601 format (YYYY-MM-DD or YYYY-MM-DD HH:mm:SS). Timezones/offsets will be ignored; use the query parameter instead.cursorstringCursor for pagination to retrieve the next set of lifelogs. Optional.Note: You cannot use cursor pagination when using thesearch parameter.directionstring (enum)Sort direction for lifelogs. Allowed values: asc, desc. Default: descincludeMarkdownboolean Whether to include markdown content in the response. Default: trueincludeHeadingsbooleanWhether to include headings in the response. Default: trueincludeContentsbooleanWhether to include detailed content segments in the response. Default: falseisStarredbooleanFilter entries by their starred status. Optional.limitintegerMaximum number of lifelogs to return. (Max value is 10; use the cursor parameter for pagination). Default: 3searchstringOptional.Search query to perform hybrid search across lifelogs. Hybrid search is a combination of keyword search and semantic search; you can therefore send:semantic queries, like "place bob recommended at dinner", orboolean keyword search, like "blue OR red".(While AND queries are supported, sending "red AND blue" is the same as sending "red blue"). When provided, other filtering parameters are applied as additional constraints. Note: You cannot use cursor pagination when using this parameter.ResponseReturns a 200 status code with the following response body:{ "data": { "lifelogs": [ { "id": "string", "title": "string", "markdown": "string", "startTime": "ISO-8601 string", "endTime": "ISO-8601 string", "isStarred": "boolean", "updatedAt": "ISO-8601 string", "contents": [ { "type": "heading1" | "heading2" | "blockquote", "content": "string", "startTime": "ISO-8601 string", "endTime": "ISO-8601 string", "startOffsetMs": "timestamp in milliseconds", "endOffsetMs": "timestamp in milliseconds", "children": [], "speakerName": "string", "speakerIdentifier": "user" | null } ] } ] }, "meta": { "lifelogs": { "nextCursor": "string" | undefined, "count": 0 } } }Example Requestcurl -H "X-API-Key: YOUR_API_KEY" \ "https://api.limitless.ai/v1/lifelogs?date=2025-07-20&timezone=America/Los_Angeles&sea "Example Code (TypeScript)const params = new URLSearchParams({ date: '2025-07-20', timezone: 'America/Los_Angeles', search: 'that place bob recommended at dinner' }); const response = await fetch(`https://api.limitless.ai/v1/lifelogs?${params}`, { method: 'GET', headers: { 'X-API-Key': 'YOUR_API_KEY', }, });Example Code (Python)import requests response = requests.get('https://api.limitless.ai/v1/lifelogs', params={ 'date': '2025-07-20', 'timezone': 'America/Los_Angeles', 'search': 'that place bob recommended at dinner' }, headers={'X-API-Key': 'YOUR_API_KEY'})GET /v1/lifelogs/:id 🔗Returns a specific lifelog entry by ID.Query ParametersParameterTypeDescription:idstringThe ID of the lifelog entry to retrieve, given in the URL.includeMarkdownboolean Whether to include markdown content in the response. Default: trueincludeHeadingsbooleanWhether to include headings in the response. Default: trueincludeContentsbooleanWhether to include detailed content segments in the response. Default: falseResponseReturns a 200 status code with the following response body:{ "data": { "lifelog": { "id": "string", "title": "string", "markdown": "string", "startTime": "ISO-8601 string", "endTime": "ISO-8601 string", "isStarred": "boolean", "updatedAt": "ISO-8601 string", "contents": [ { "type": "heading1" | "heading2" | "blockquote", "content": "string", "startTime": "ISO-8601 string", "endTime": "ISO-8601 string", "startOffsetMs": "timestamp in milliseconds", "endOffsetMs": "timestamp in milliseconds", "children": [], "speakerName": "string", "speakerIdentifier": "user" | null } ] } } }Example Requestcurl -H "X-API-Key: YOUR_API_KEY" \ "https://api.limitless.ai/v1/lifelogs/123"Example Code (TypeScript)const response = await fetch('https://api.limitless.ai/v1/lifelogs/123', { method: 'GET', headers: { 'X-API-Key': 'YOUR_API_KEY', }, });Example Code (Python)import requests response = requests.get('https://api.limitless.ai/v1/lifelogs/123', headers={'X-API-Key': 'YOUR_API_KEY'})DELETE /v1/lifelogs/:id 🔗Permanently deletes a specific lifelog entry by ID. All associated transcripts, audio, and metadata are fully deleted and cannot be recovered.Query ParametersParameterTypeDescription:idstringThe ID of the lifelog entry to delete, given in the URL.ResponseReturns a 200 status code with the following response body:{ "success": true }Example Requestcurl -X DELETE -H "X-API-Key: YOUR_API_KEY" \ "https://api.limitless.ai/v1/lifelogs/123"Example Code (TypeScript)const response = await fetch('https://api.limitless.ai/v1/lifelogs/123', { method: 'DELETE', headers: { 'X-API-Key': 'YOUR_API_KEY', }, });Example Code (Python)import requests response = requests.delete('https://api.limitless.ai/v1/lifelogs/123', headers={'X-API-Key': 'YOUR_API_KEY'})GET /v1/download-audio 🔗Download audio from your Pendant as Ogg Opus files for a specific time range. Returns audio data directly as binary Ogg Opus format without transcoding. Maximum duration is 2 hours (7,200,000 ms) per request. If your requested range exceeds 2 hours, the API will return a 400 error explaining the limit.Query ParametersParameterTypeDescriptionaudioSourcestringThe audio source to retrieve data from. Currently only pendantis supported. Optional, defaults to pendant.startMsnumberStart time in milliseconds (Unix timestamp). Required.endMsnumberEnd time in milliseconds (Unix timestamp). The duration between startMs and endMs cannot exceed 2 hours (7,200,000 ms). Required.ResponseReturns a 200 status code with the following response body:Binary Ogg Opus audio file Content-Type: audio/ogg Content-Disposition: inline; filename="audio.ogg" Cache-Control: public, max-age=3600Example Requestcurl -H "X-API-Key: YOUR_API_KEY" \ "https://api.limitless.ai/v1/download-audio?startMs=1704067200000&endMs=1704070800000" \ --output audio.oggExample Code (TypeScript)const startTime = new Date('2024-01-01T00:00:00Z').getTime(); const endTime = new Date('2024-01-01T01:00:00Z').getTime(); const response = await fetch(`https://api.limitless.ai/v1/download-audio?startMs=${startTime}&endMs=${endTime}`, { method: 'GET', headers: { 'X-API-Key': 'YOUR_API_KEY', }, }); if (response.ok) { const audioBlob = await response.blob(); // Use the audio blob as needed }Example Code (Python)import requests from datetime import datetime start_time = int(datetime(2024, 1, 1, 0, 0, 0).timestamp() * 1000) end_time = int(datetime(2024, 1, 1, 1, 0, 0).timestamp() * 1000) response = requests.get( 'https://api.limitless.ai/v1/download-audio', params={ 'startMs': start_time, 'endMs': end_time }, headers={'X-API-Key': 'YOUR_API_KEY'} ) if response.status_code == 200: with open('audio.ogg', 'wb') as f: f.write(response.content)GET /v1/chats 🔗Get your chats (Ask AI conversations) with pagination support. Returns chats with messages, tool calls, and limited information about tool results.Query ParametersParameterTypeDescriptioncursorstringCursor for pagination to retrieve the next set of chats. Optional.directionstringSort direction for chats. Can be asc or desc. Optional, defaults to desc.limitnumberMaximum number of chats to return. Upper limit is 100. Optional, defaults to 50.timezonestringIANA timezone specifier. If missing, UTC is used. Optional.ResponseReturns a 200 status code with the following response body:{ "data": { "chats": [ { "id": "chat_123", "summary": "Discussion about project planning", "createdAt": "2024-01-01T00:00:00.000Z", "startedAt": "2024-01-01T00:00:00.000Z", "messages": [ { "id": "msg_1", "text": "What did I discuss in my meeting today?", "toolCalls": [ { "id": "tool_call_1", "toolName": "search_lifelogs", "args": { "query": "meeting today" } } ], "toolResults": [ { "result": { "entries": [...] }, "isError": false, "toolCallId": "tool_call_1", "toolName": "search_lifelogs", "entriesReturned": [ { "title": "Team Meeting", "id": "entry_123" } ] } ], "createdAt": "2024-01-01T00:00:00.000Z", "user": { "role": "user", "name": "User" } } ], "visibility": "private" } ] }, "meta": { "chats": { "count": 1, "nextCursor": "chat_456" } } }Example Requestcurl -H "X-API-Key: YOUR_API_KEY" \ "https://api.limitless.ai/v1/chats?limit=10&direction=desc"Example Code (TypeScript)const response = await fetch('https://api.limitless.ai/v1/chats?limit=10&direction=desc', { method: 'GET', headers: { 'X-API-Key': 'YOUR_API_KEY', }, }); if (response.ok) { const data = await response.json(); console.log('Chats:', data.data.chats); }Example Code (Python)import requests response = requests.get( 'https://api.limitless.ai/v1/chats', params={'limit': 10, 'direction': 'desc'}, headers={'X-API-Key': 'YOUR_API_KEY'} ) if response.status_code == 200: data = response.json() print('Chats:', data['data']['chats'])GET /v1/chats/{id} 🔗Get a specific chat by ID. Users can only access their own chats or public chats.Query ParametersParameterTypeDescriptionidstringUnique identifier of the chat to retrieve. Required.timezonestringIANA timezone specifier. If missing, UTC is used. Optional.ResponseReturns a 200 status code with the following response body:{ "data": { "chat": { "id": "chat_123", "summary": "Discussion about project planning", "createdAt": "2024-01-01T00:00:00.000Z", "startedAt": "2024-01-01T00:00:00.000Z", "messages": [ { "id": "msg_1", "text": "What did I discuss in my meeting today?", "toolCalls": [ { "id": "tool_call_1", "toolName": "search_lifelogs", "args": { "query": "meeting today" } } ], "toolResults": [ { "result": { "entries": [...] }, "isError": false, "toolCallId": "tool_call_1", "toolName": "search_lifelogs", "entriesReturned": [ { "title": "Team Meeting", "id": "entry_123" } ] } ], "createdAt": "2024-01-01T00:00:00.000Z", "user": { "role": "user", "name": "User" } } ], "visibility": "private" } } }Example Requestcurl -H "X-API-Key: YOUR_API_KEY" \ "https://api.limitless.ai/v1/chats/chat_123"Example Code (TypeScript)const response = await fetch('https://api.limitless.ai/v1/chats/chat_123', { method: 'GET', headers: { 'X-API-Key': 'YOUR_API_KEY', }, }); if (response.ok) { const data = await response.json(); console.log('Chat:', data.data.chat); }Example Code (Python)import requests response = requests.get( 'https://api.limitless.ai/v1/chats/chat_123', headers={'X-API-Key': 'YOUR_API_KEY'} ) if response.status_code == 200: data = response.json() print('Chat:', data['data']['chat'])DELETE /v1/chats/{id} 🔗Permanently delete a specific chat by ID. Users can only delete their own chats.Query ParametersParameterTypeDescriptionidstringUnique identifier of the chat to delete. Required.ResponseReturns a 200 status code with the following response body:{ "data": { "success": true } }Example Requestcurl -X DELETE -H "X-API-Key: YOUR_API_KEY" \ "https://api.limitless.ai/v1/chats/chat_123"Example Code (TypeScript)const response = await fetch('https://api.limitless.ai/v1/chats/chat_123', { method: 'DELETE', headers: { 'X-API-Key': 'YOUR_API_KEY', }, }); if (response.ok) { const data = await response.json(); console.log('Delete successful:', data.data.success); }Example Code (Python)import requests response = requests.delete( 'https://api.limitless.ai/v1/chats/chat_123', headers={'X-API-Key': 'YOUR_API_KEY'} ) if response.status_code == 200: data = response.json() print('Delete successful:', data['data']['success'])Back to TopLimitless Go BeyondSign inProductHomeDevelopersCompanyAboutCareersPrivacyResources & SupportHelp CenterSupportCommunitySocialX / TwitterYouTubeLinkedInTikTokInstagram© 2026 Limitless AITermsPrivacy Policy



