Local HTTP API

Enable, configure, and integrate with the MeetingDebrief API.

Overview

MeetingDebrief includes a local HTTP API that lets other applications on your machine interact with the app. The API runs on localhost and is disabled by default. You can control recordings, access transcripts, trigger summaries, and manage sessions; all from external tools, scripts, or AI agents.

Enabling the API

Open Settings and scroll to the Local HTTP API section. Toggle the API on to start listening on the configured port. You can disable it at any time. If the API was enabled when you quit the app, it automatically starts again on next launch.

Port configuration

The default port is 9876. You can change it in Settings before enabling the API. If the configured port is in use, the API tries the next 10 ports automatically. The actual port is shown in Settings once the API is running.

Interactive documentation

When the API is running, click the URL shown in Settings to open the built-in Swagger UI in your browser. This interactive documentation lets you explore all endpoints, see request and response schemas, and try out API calls directly.

The OpenAPI specification is also available at /api-docs/openapi.json for use with code generators or other tooling.

Authentication

Most endpoints require a bearer token. Include it in the Authorization header:

Authorization: Bearer trby_your_token_here

Getting a token

A bearer token is created automatically the first time you enable the API. The token is displayed in Settings under the API section. Click Copy to copy it to your clipboard.

Regenerating a token

If your token is compromised, click Regenerate in Settings. This replaces the existing token with a new one; the old token stops working immediately.

Rate limiting

The API enforces a rate limit of 60 requests per minute per token. Requests beyond the limit return a 429 Too Many Requests response. The limit resets each minute.

Discovery

The GET /api/info endpoint is public (no authentication required) and returns the API version and a catalog of all available endpoints. This is useful for AI agents that need to discover what the API can do.

curl http://127.0.0.1:9876/api/info

Endpoints

Recording

Control the recorder just as you would from the desktop UI. Starting a recording via the API shows the overlay and updates the tray icon.

  • POST /api/recording/start — start recording
  • POST /api/recording/stop — stop recording (triggers auto-transcription if enabled)
  • POST /api/recording/cancel — cancel and discard the current recording
  • POST /api/recording/pause — pause recording
  • POST /api/recording/resume — resume recording
  • GET /api/recording/status — current recording state, duration, and session ID

Sessions

  • GET /api/sessions — list all sessions
  • GET /api/sessions/{id} — get session details
  • PUT /api/sessions/{id} — rename a session (body: {"title": "New name"})
  • DELETE /api/sessions/{id} — delete a session and its transcript and summaries

Transcripts

  • GET /api/sessions/{id}/transcript — transcript segments as JSON with timestamps, speaker labels, and confidence scores
  • GET /api/sessions/{id}/transcript/text — plain text transcript formatted for AI consumption (Speaker [0:01]: text)
  • POST /api/sessions/{id}/transcribe — queue transcription for a session

Summaries

  • GET /api/sessions/{id}/summaries — list summaries for a session
  • GET /api/sessions/{id}/summaries/{summary_id} — get a single summary
  • POST /api/sessions/{id}/summarize — trigger summary generation (body: {"template_id": 1})

Templates

  • GET /api/templates — list available summary templates with their IDs, names, and descriptions

Context

  • GET /api/sessions/{id}/context — returns the session, transcript, and all summaries in a single response. Useful for feeding full meeting context to an AI agent.

Example workflow

# 1. Copy your token from Settings, then set it here
TOKEN="trby_your_token_here"

# 2. Start a recording
curl -X POST http://127.0.0.1:9876/api/recording/start \
  -H "Authorization: Bearer $TOKEN"

# 3. Check status
curl http://127.0.0.1:9876/api/recording/status \
  -H "Authorization: Bearer $TOKEN"

# 4. Stop recording
curl -X POST http://127.0.0.1:9876/api/recording/stop \
  -H "Authorization: Bearer $TOKEN"

# 5. Get sessions and find the latest
curl http://127.0.0.1:9876/api/sessions \
  -H "Authorization: Bearer $TOKEN"

# 6. Get full context for a session
curl http://127.0.0.1:9876/api/sessions/1/context \
  -H "Authorization: Bearer $TOKEN"

# 7. Get plain text transcript (great for piping to AI)
curl http://127.0.0.1:9876/api/sessions/1/transcript/text \
  -H "Authorization: Bearer $TOKEN"

# 8. Generate a summary with a specific template
curl -X POST http://127.0.0.1:9876/api/sessions/1/summarize \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"template_id": 1}'