Overview
The Omi Developer API provides programmatic access to your personal Omi data, allowing you to build custom applications and integrations. Use it to create analytics dashboards, export data to other services, build automation workflows, or contribute data back to your Omi account.Memories
Read & write user memories
Conversations
Access full transcripts
Action Items
Manage tasks & to-dos
Batch Operations
Create multiple items at once
Getting Started
Generate an API Key
- Open the Omi app
- Navigate to Settings → Developer
- Under “Developer API Keys”, click Create Key
- Give your key a descriptive name (e.g., “My Analytics Dashboard”)
- Copy the key immediately - you won’t be able to see it again!
Make API Requests
All API requests must include your API key in the
Authorization header:Base URL
For self-hosted instances, replace with your backend URL.
Quick Reference
| Resource | Method | Endpoint | Description |
|---|---|---|---|
| API Keys | GET | /v1/dev/keys | List all API keys |
| POST | /v1/dev/keys | Create new API key | |
| DELETE | /v1/dev/keys/{key_id} | Revoke API key | |
| Memories | GET | /v1/dev/user/memories | Get memories |
| POST | /v1/dev/user/memories | Create memory | |
| POST | /v1/dev/user/memories/batch | Create multiple memories (max 25) | |
| Action Items | GET | /v1/dev/user/action-items | Get action items |
| POST | /v1/dev/user/action-items | Create action item | |
| POST | /v1/dev/user/action-items/batch | Create multiple action items (max 50) | |
| Conversations | GET | /v1/dev/user/conversations | Get conversations |
| POST | /v1/dev/user/conversations | Create from text | |
| POST | /v1/dev/user/conversations/from-segments | Create from transcript segments |
Endpoints
Key Management
List API Keys
Create API Key
Revoke API Key
204 No Content
User Data
All user data endpoints require authentication via your Developer API key.Memories
Get Memories
limit(integer, optional): Maximum number of memories to return. Default: 25offset(integer, optional): Number of memories to skip. Default: 0categories(string, optional): Comma-separated list of categories to filter by (e.g., “personal,work”)
Create Memory
manual category and are automatically categorized between interesting and system.
Request Body:
content(string, required): The memory content (1-500 characters)category(string, optional): Memory category -interesting,system, ormanual(defaults tomanualand auto-categorizes tointerestingorsystemif not provided)visibility(string, optional):publicorprivate(default:private)tags(array, optional): List of tags
Create Memories (Batch)
Action Items
Get Action Items
conversation_id(string, optional): Filter by conversation ID (use “null” for standalone items)completed(boolean, optional): Filter by completion statusstart_date(datetime, optional): Filter by start date (inclusive)end_date(datetime, optional): Filter by end date (inclusive)limit(integer, optional): Maximum number to return. Default: 100offset(integer, optional): Number of items to skip. Default: 0
Create Action Item
description(string, required): The action item description (1-500 characters)completed(boolean, optional): Whether completed (default:false)due_at(datetime, optional): Due date in ISO 8601 format with timezone
FCM notifications are automatically sent if a
due_at date is provided.Create Action Items (Batch)
Conversations
Get Conversations
limit(integer, optional): Maximum number to return. Default: 25offset(integer, optional): Number to skip. Default: 0start_date(datetime, optional): Filter by start date (inclusive)end_date(datetime, optional): Filter by end date (inclusive)categories(string, optional): Comma-separated list of categories (e.g., “personal,business”)include_transcript(boolean, optional): Include full transcript segments. Default: false
Create Conversation from Text
text(string, required): The conversation text/transcript (1-100,000 characters)text_source(string, optional): Source type -audio_transcript,message, orother_text(default:other_text)text_source_spec(string, optional): Additional source info (e.g., ‘email’, ‘slack’, ‘whatsapp’)started_at(datetime, optional): When conversation started (defaults to now)finished_at(datetime, optional): When conversation finished (defaults tostarted_at+ 5 minutes)language(string, optional): Language code (default: ‘en’)geolocation(object, optional): Geolocation data
- Discard Detection: Determines if content is meaningful enough to save
- Structured Generation: Creates title, overview, category, and emoji
- Action Item Extraction: Identifies and creates action items (with deduplication against past 2 days)
- Memory Extraction: Extracts interesting facts and insights (up to 4 per conversation)
- App Integration: Triggers enabled summarization apps
- Webhooks: Notifies external systems
Memories and action items are extracted asynchronously. Use the GET endpoints to retrieve them after creation.
Create Conversation from Transcript Segments
transcript_segments(array, required): List of transcript segments (1-500 segments)text(string, required): The spoken textspeaker(string, optional): Speaker identifier like ‘SPEAKER_00’, ‘SPEAKER_01’ (default: ‘SPEAKER_00’)speaker_id(integer, optional): Numeric speaker ID (auto-calculated if not provided)is_user(boolean, optional): Whether this segment is from the user (default:false)person_id(string, optional): ID of known person speakingstart(float, required): Start time in seconds (e.g., 0.0, 1.5, 60.2)end(float, required): End time in seconds (e.g., 1.5, 3.0, 65.8)
source(string, optional): Source of conversation (default:external_integration)- Available:
omi,friend,openglass,phone,desktop,apple_watch,bee,plaud,frame,screenpipe,workflow,sdcard,external_integration
- Available:
started_at(datetime, optional): When conversation started (defaults to now)finished_at(datetime, optional): When conversation finished (calculated from last segment if not provided)language(string, optional): Language code (default: ‘en’)geolocation(object, optional): Geolocation data
Unlike text-based conversations, transcript segments ARE stored in the
transcript_segments field and can be retrieved with include_transcript=true.Authentication
All API requests (except key creation) require authentication using your Developer API key:Rate Limits
| Limit | Value |
|---|---|
| Per minute | 100 requests per API key |
| Per day | 10,000 requests per user |
Error Responses
HTTP Status Codes
HTTP Status Codes
| Code | Meaning |
|---|---|
200 OK | Request succeeded |
204 No Content | Request succeeded with no response body |
400 Bad Request | Invalid request parameters |
401 Unauthorized | Invalid or missing API key |
403 Forbidden | API key doesn’t have required permissions |
404 Not Found | Resource not found |
429 Too Many Requests | Rate limit exceeded |
500 Internal Server Error | Server error |
Error Response Format
Error Response Format
Security Best Practices
Store Keys Securely
Use environment variables or secret management services
Rotate Keys Regularly
Generate new keys and revoke old ones periodically
Use Specific Keys
Create separate keys for different applications
Monitor Usage
Check the “last used” timestamp in your key list
Example Use Cases
Import Data from Other Services
Import Data from Other Services
Import your tasks from another task management system:
Create Memories from Notes
Create Memories from Notes
Automatically create memories from your note-taking app:
Process Meeting Transcripts
Process Meeting Transcripts
Upload meeting transcripts with speaker information:
Analytics Dashboard
Analytics Dashboard
Build a custom dashboard to visualize your memory trends:
Action Item Tracker
Action Item Tracker
Sync your Omi action items with your task management system:
Data Export
Data Export
Export your conversations to a local database:
Comparison with MCP
| Feature | Developer API | MCP |
|---|---|---|
| Purpose | Direct HTTP API access | AI assistant integration |
| Access | Read & write user data | Read/write with AI context |
| Use Case | Custom apps, dashboards, automation | Claude Desktop, AI agents |
| Authentication | Bearer token | Environment variable |
| Best For | Web apps, integrations, batch operations | AI-powered workflows |
Use Developer API when you need
- Programmatic access for custom applications
- Batch operations (multiple memories/action items)
- Integration with external services
- Custom automation workflows
Use MCP when you want
- AI assistants like Claude to interact with your data
- Natural language queries and AI-powered insights
- Context-aware AI assistance
Learn more about the Model Context Protocol in the MCP documentation.
Other APIs
Looking for different API capabilities? Omi offers several APIs for different use cases:Integration Import APIs
For App Developers - Create conversations and memories on behalf of users who have enabled your app
Webhook Triggers
For App Developers - Receive real-time notifications when memories are created or transcripts are processed
Chat Tools
For App Developers - Add custom tools that Omi’s AI can invoke during conversations
Audio Streaming
For App Developers - Process raw audio bytes in real-time via WebSocket
The Developer API (this page) is for accessing your own personal data. The APIs above are for building apps that interact with other users’ data (with their permission).