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.
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.
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.
Search
GET /api/v1/recordings/search?q=. Semantic search across transcripts first, plain text search as the fallback. The response says which one answered.
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.