Superscribe for developers

Hang up.
The JSON is ready.

Every call and meeting on your own number comes out as data: transcript, summary, speaker turns, numbers, duration. Read it with the REST API, or hand it to an agent through MCP. No phone system to adopt, no bot on the line.

REST API

Four reads. That is the whole surface.

Base URL https://superscribe.io/api/v1. Every request carries your key. The full contract is in the OpenAPI spec and the API reference.

  1. List recordings

    GET /api/v1/recordings. Filter by date, source (phone_call, meeting, microphone, file) and phone number. Add includeTranscript=false for a compact list and page through it with page and limit.

  2. One recording

    GET /api/v1/recordings/:id. The transcript, the summary, duration, direction, both numbers and, for phone calls, the speaker-labelled turns with timestamps.

  3. Search

    GET /api/v1/recordings/search?q=. Semantic search across transcripts first, plain text search as the fallback. The response says which one answered.

  4. A usage report

    GET /api/v1/reports/usage?dateFrom=&dateTo=. Calls, meetings and dictations with minutes, how many were summarised, suggested follow-ups, CRM entries, billed time per project and GitHub activity for linked repositories. One JSON for the whole range.

What a call looks like

One recording, trimmed.

The person on the other side is named from your contacts when the number is known. Turns with is_owner: true are yours. Lists can leave the transcript and the turns out.

curl "https://superscribe.io/api/v1/recordings?source=phone_call&includeTranscript=false&limit=20" \
  -H "x-api-key: ss_YOUR_KEY"
{
  "id": "507f1f77bcf86cd799439011",
  "source": "phone_call",
  "direction": "inbound",
  "caller_number": "+12025551234",
  "callee_number": "+18335522205",
  "caller_name": "Alice",
  "duration_seconds": 142,
  "language": "en",
  "summary": "Alice asked for a quote for 200 units. Send it by Friday.",
  "transcript": "Alice: Hello?\nYou: Hi, how can I help?",
  "turns": [
    { "speaker": "caller", "speaker_label": "Alice", "is_owner": false,
      "text": "Hello?", "start_time": 0.0, "end_time": 0.8 },
    { "speaker": "agent", "speaker_label": "You", "is_owner": true,
      "text": "Hi, how can I help?", "start_time": 1.2, "end_time": 2.4 }
  ],
  "created_at": "2026-09-14T09:30:00.000Z"
}

MCP

The same data, for an agent.

Endpoint https://superscribe.io/mcp, streamable HTTP, your key in the x-api-key header. Works with Claude Desktop, Claude Code, Cursor and anything else that speaks MCP.

get_recordings
list recordings, newest first, with date and source filters, compact without transcripts, paged with next_cursor
get_recording
one recording by id, with the transcript and the turns
search_recordings
search across transcripts
get_report
the usage report for a date range, the same JSON as the REST endpoint

Claude Desktop

{
  "mcpServers": {
    "superscribe": {
      "url": "https://superscribe.io/mcp",
      "headers": { "x-api-key": "ss_YOUR_KEY" }
    }
  }
}

Claude Code

claude mcp add --transport http superscribe https://superscribe.io/mcp --header "x-api-key: ss_YOUR_KEY"

What a month looks like

The usage report, trimmed.

Real numbers from one account, one month. Billed time follows the same precision windows as the Reports page, and the GitHub counts come from repositories linked to a project.

{
  "date_from": "2026-08-14T00:00:00.000Z",
  "date_to": "2026-09-13T23:59:59.999Z",
  "recordings": {
    "phone_calls": { "count": 238, "minutes": 558, "summarized": 138,
      "over_two_minutes": 51, "incoming": 115, "outgoing": 77,
      "per_week": [{ "week_start": "2026-09-07", "count": 69 }] },
    "meetings": { "count": 73, "minutes": 102, "summarized": 41 },
    "dictations": { "count": 486, "minutes": 276, "summarized": 0 }
  },
  "follow_ups": { "suggested": 74, "recordings_with_follow_ups": 56,
    "by_kind": { "reminder": 51, "calendar_event": 12, "call_back": 8 } },
  "crm": { "entries_synced": 77, "synced_by_provider": { "pipedrive": 77 } },
  "projects": [{ "project_name": "V2", "billed_minutes": 12240,
    "github": { "commits": 70, "issues_opened": 104, "issues_closed": 64,
      "issues_from_recordings_opened": 72 } }]
}

The small print

Keys
Keys start with ss_ and only ever see the account that created them. Send them as x-api-key or as a Bearer token. Revoke any key from the dashboard and it stops working at once.
Sessions
The MCP server speaks streamable HTTP. A session expires after 30 idle minutes, and an unknown session answers 404, so a client only has to send initialize again.
Webhooks
Not yet. Superscribe does not push events. Poll GET /recordings with dateFrom, or let an agent check through MCP. If push would change something for you, say so at hello@superscribe.io.
When data appears
A recording shows up once the call or meeting has ended and the transcript is ready, usually within a minute. Hidden recordings are left out of every list.
For models
A plain-text version of this page for LLMs and agents: llms.txt and llms-full.txt.