Skip to main content

What Are Integration Apps?

Integration apps allow Omi to interact with external services by sending data to your webhook endpoints. Unlike prompt-based apps, these require you to host a server.

Memory Triggers

Run code when a memory is created

Real-Time Transcript

Process live transcripts as they happen

Audio Streaming

Receive raw audio bytes for custom processing

Memory Creation Triggers

These apps are activated when Omi creates a new memory, allowing you to process or store the data externally.
  1. User completes a conversation
  2. Omi processes and creates a memory
  3. Your webhook receives the complete memory object
  4. Your server processes and responds
The webhook receives the full conversation data including transcript, structured summary, action items, and metadata.
  • Slack Integration: Post conversation summaries to team channels
  • CRM Updates: Log customer interactions automatically
  • Project Management: Create tasks in Notion, Asana, or Jira
  • Knowledge Base: Build a searchable archive of conversations
  • Analytics: Track conversation patterns and insights
Running FastAPI locally (no cloud deployment):

Webhook Payload

Your endpoint receives a POST request with the memory object: POST /your-endpoint?uid=user123
{
  "id": "memory_abc123",
  "created_at": "2024-07-22T23:59:45.910559+00:00",
  "started_at": "2024-07-21T22:34:43.384323+00:00",
  "finished_at": "2024-07-21T22:35:43.384323+00:00",
  "transcript_segments": [
    {
      "text": "Let's discuss the project timeline.",
      "speaker": "SPEAKER_00",
      "speakerId": 0,
      "is_user": false,
      "start": 10.0,
      "end": 15.0
    }
  ],
  "structured": {
    "title": "Project Timeline Discussion",
    "overview": "Brief overview of the conversation...",
    "emoji": "📅",
    "category": "work",
    "action_items": [
      {
        "description": "Send project proposal by Friday",
        "completed": false
      }
    ],
    "events": []
  },
  "apps_response": [],
  "discarded": false
}
Check out the Notion CRM Example for a complete implementation.

Real-Time Transcript Processors

Process conversation transcripts as they occur, enabling real-time analysis and actions.
  1. User starts speaking
  2. Omi transcribes in real-time
  3. Your webhook receives transcript segments as they’re created
  4. Your server processes and can trigger immediate actions
Segments arrive in multiple calls as the conversation unfolds, allowing for live reactions.
  • Live Coaching: Provide real-time feedback during presentations
  • Fact-Checking: Verify claims as they’re made
  • Smart Home: Trigger actions based on spoken commands
  • Sentiment Analysis: Monitor emotional tone in real-time
  • Translation: Live translation of conversations

Webhook Payload

Your endpoint receives transcript segments with session context: POST /your-endpoint?session_id=abc123&uid=user123
[
  {
    "text": "I think we should prioritize the mobile app.",
    "speaker": "SPEAKER_00",
    "speakerId": 0,
    "is_user": false,
    "start": 10.0,
    "end": 15.0
  },
  {
    "text": "Agreed, let's start with iOS.",
    "speaker": "SPEAKER_01",
    "speakerId": 1,
    "is_user": true,
    "start": 16.0,
    "end": 18.0
  }
]

Implementation Tips

Real-time processors require careful design to avoid performance issues.

Use session_id

Track context across multiple calls using the session_id parameter

Avoid Redundancy

Implement logic to prevent processing the same segments twice

Accumulate Context

Build complete conversation context by storing segments

Handle Errors

Fail gracefully - don’t block transcription with slow processing
See the Real-time News Checker Example for a complete implementation.

Real-Time Audio Bytes

Stream raw audio bytes from Omi directly to your endpoint for custom audio processing.
  1. User speaks into Omi device
  2. Raw PCM audio is streamed to your endpoint
  3. Your server processes the audio bytes directly
  4. Handle as needed (custom STT, VAD, feature extraction, etc.)
Unlike transcript processors, you receive the actual audio data, not text.
  • Custom ASR: Use your own speech recognition models
  • Voice Activity Detection: Implement custom VAD logic
  • Audio Features: Extract spectrograms, embeddings, or other features
  • Recording: Store raw audio for later processing
  • Real-time Translation: Feed audio to translation services

Technical Details

SettingValue
Trigger Typeaudio_bytes
HTTP MethodPOST
Content-Typeapplication/octet-stream
Audio FormatPCM16 (16-bit little-endian)
Bytes per Sample2
Request format: POST /your-endpoint?sample_rate=16000&uid=user123 Body contains raw PCM16 audio bytes.
To produce a playable WAV file, prepend a WAV header and concatenate the received chunks.

Configuring Delivery Frequency

You can control how often audio is sent via the Omi app Developer Settings:
url,seconds
For example: https://your-endpoint.com/audio,5 sends audio every 5 seconds.
For a complete implementation, see the Audio Streaming Guide.

Creating an Integration App

Choose Your Trigger Type

Decide which integration type(s) you need:
  • Memory Trigger: Process completed conversations
  • Real-Time Transcript: React to live speech
  • Audio Bytes: Process raw audio

Set Up Your Endpoint

Create a webhook endpoint that can receive POST requests. For testing, use webhook.site or webhook-test.com.Your endpoint should:
  • Accept POST requests
  • Parse JSON body (or binary for audio)
  • Read uid from query parameters
  • Return 200 OK quickly

Implement Your Logic

Process the incoming data and integrate with external services.Example (Python/FastAPI):
from fastapi import FastAPI, Request

app = FastAPI()

@app.post("/webhook")
async def handle_memory(request: Request, uid: str):
    memory = await request.json()
    # Process memory data
    await send_to_slack(memory["structured"]["title"])
    return {"status": "ok"}

Test Your Integration

Use Developer Mode to test without creating new memories (see testing section below)

Submit Your App

Publish through the Omi mobile app

Testing Your Integration

Enable Developer Mode

Open Omi app → Settings → Enable Developer Mode → Developer Settings

Set Webhook URL

  • Memory Triggers: Enter URL in “Memory Creation Webhook”
  • Real-Time: Enter URL in “Real-Time Transcript Webhook”

Test Memory Triggers

Go to any memory → Tap 3-dot menu → Developer Tools → Trigger webhook with existing data

Test Real-Time

Start speaking - your endpoint receives updates immediately
Use webhook.site to see exactly what data Omi sends before writing any code.

App Submission Fields

When submitting your integration app:
FieldRequiredDescription
Webhook URLYesYour POST endpoint for receiving data
Setup Completed URLNoGET endpoint returning {"is_setup_completed": boolean}
Auth URLNoURL for user authentication (uid appended automatically)
Setup InstructionsNoText or link explaining how to configure your app

Setup Instructions Best Practices

Step-by-Step Guide

Clear numbered instructions for configuration

Screenshots

Visual aids for complex setup steps

Authentication Flow

If required, explain how to connect accounts

Troubleshooting

Common issues and how to resolve them
When users open your setup links, Omi automatically appends a uid query parameter. Use this to associate credentials with specific users.