Tutorials

[BizCrush API] Quick Start Guide

Apr 15, 2026

5

min

BizCrush

Growth

What You Can Build

  • 🎙️ Real-time Speech-to-Text via WebSocket (15 languages, auto-detected)

  • 📁 File transcription + speaker diarization (who said what + timestamps)

  • 🤖 AI meeting summaries + Q&A (Claude-powered, custom prompts)

  • 🔗 MCP server — control BizCrush from Claude or Cursor with natural language

  • Zapier — push meeting data to Slack, Notion, Google Docs automatically

STEP 1 — Get Your API Key

  1. Go to https://bizcru.sh → Sign up (Google login supported)

  2. Navigate to Settingshttps://bizcru.sh/en/settings

  3. Scroll down to the API Keys section

  4. Click the purple "Issue API Key" button

    1. ⚠️ Copy it immediately — it will NOT be shown again!

  5. Save it: BIZCRUSH_API_KEY=sk-prod-xxxxxx

You can issue up to 5 keys per account.

QUICK START — File Transcription

Base URL: https://extapi-stt.bizcrush.aiAuth: ?api_key=YOUR_API_KEY (query parameter)

curl -X POST "<https://extapi-stt.bizcrush.ai/stt?api_key=YOUR_API_KEY>" \\
  -H "Content-Type: application/json" \\
  -d '{"audio_url": "<https://example.com/audio.mp3>", "enable_diarization": true}'
curl -X POST "<https://extapi-stt.bizcrush.ai/stt?api_key=YOUR_API_KEY>" \\
  -H "Content-Type: application/json" \\
  -d '{"audio_url": "<https://example.com/audio.mp3>", "enable_diarization": true}'
curl -X POST "<https://extapi-stt.bizcrush.ai/stt?api_key=YOUR_API_KEY>" \\
  -H "Content-Type: application/json" \\
  -d '{"audio_url": "<https://example.com/audio.mp3>", "enable_diarization": true}'

Response includes:

  • text — full transcript

  • detected_language — auto-detected language code

  • utterances[] — speaker-diarized segments with start_ms, end_ms, speaker, confidence

Set timeout to 600+ seconds for long audio files.

QUICK START — Live STT via WebSocket (Python)

import asyncio, json, websockets

async def live_stt(api_key):
    url = f"wss://extapi-stt.bizcrush.ai/?api_key={api_key}&format=json"
    async with websockets.connect(url) as ws:
        # 1. Send config
        await ws.send(json.dumps({"encoding": "pcm16"}))
        resp = json.loads(await ws.recv())
        print("Connected:", resp)  # {"connected": true}

        # 2. Stream PCM16 audio as binary frames (640 bytes = 20ms chunks)
        # 3. Receive interim + final results:
        async for msg in ws:
            data = json.loads(msg)
            if "chunk" in data:
                status = "FINAL" if data["chunk"]["is_final"] else "interim"
                print(f"[{status}] {data['chunk']['text']}")

asyncio.run(live_stt("YOUR_API_KEY"))
import asyncio, json, websockets

async def live_stt(api_key):
    url = f"wss://extapi-stt.bizcrush.ai/?api_key={api_key}&format=json"
    async with websockets.connect(url) as ws:
        # 1. Send config
        await ws.send(json.dumps({"encoding": "pcm16"}))
        resp = json.loads(await ws.recv())
        print("Connected:", resp)  # {"connected": true}

        # 2. Stream PCM16 audio as binary frames (640 bytes = 20ms chunks)
        # 3. Receive interim + final results:
        async for msg in ws:
            data = json.loads(msg)
            if "chunk" in data:
                status = "FINAL" if data["chunk"]["is_final"] else "interim"
                print(f"[{status}] {data['chunk']['text']}")

asyncio.run(live_stt("YOUR_API_KEY"))
import asyncio, json, websockets

async def live_stt(api_key):
    url = f"wss://extapi-stt.bizcrush.ai/?api_key={api_key}&format=json"
    async with websockets.connect(url) as ws:
        # 1. Send config
        await ws.send(json.dumps({"encoding": "pcm16"}))
        resp = json.loads(await ws.recv())
        print("Connected:", resp)  # {"connected": true}

        # 2. Stream PCM16 audio as binary frames (640 bytes = 20ms chunks)
        # 3. Receive interim + final results:
        async for msg in ws:
            data = json.loads(msg)
            if "chunk" in data:
                status = "FINAL" if data["chunk"]["is_final"] else "interim"
                print(f"[{status}] {data['chunk']['text']}")

asyncio.run(live_stt("YOUR_API_KEY"))

Audio format: PCM16 — 16kHz, mono, 16-bit little-endian, 640 bytes/chunk (20ms)

QUICK START — Live STT (JavaScript / Browser)

const ws = new WebSocket(
  "wss://extapi-stt.bizcrush.ai/?api_key=YOUR_API_KEY&format=json"
);

ws.onopen = () => ws.send(JSON.stringify({ encoding: "pcm16" }));

ws.onmessage = (event) => {
  const data = JSON.parse(event.data);
  if (data.connected) console.log("Connected! Start sending audio...");
  if (data.chunk) {
    console.log(`[${data.chunk.is_final ? "FINAL" : "interim"}] ${data.chunk.text}`);
  }
};

// Send raw PCM16 audio as binary frames
function sendAudioChunk(pcmData) {
  if (ws.readyState === WebSocket.OPEN) ws.send(pcmData);
}
const ws = new WebSocket(
  "wss://extapi-stt.bizcrush.ai/?api_key=YOUR_API_KEY&format=json"
);

ws.onopen = () => ws.send(JSON.stringify({ encoding: "pcm16" }));

ws.onmessage = (event) => {
  const data = JSON.parse(event.data);
  if (data.connected) console.log("Connected! Start sending audio...");
  if (data.chunk) {
    console.log(`[${data.chunk.is_final ? "FINAL" : "interim"}] ${data.chunk.text}`);
  }
};

// Send raw PCM16 audio as binary frames
function sendAudioChunk(pcmData) {
  if (ws.readyState === WebSocket.OPEN) ws.send(pcmData);
}
const ws = new WebSocket(
  "wss://extapi-stt.bizcrush.ai/?api_key=YOUR_API_KEY&format=json"
);

ws.onopen = () => ws.send(JSON.stringify({ encoding: "pcm16" }));

ws.onmessage = (event) => {
  const data = JSON.parse(event.data);
  if (data.connected) console.log("Connected! Start sending audio...");
  if (data.chunk) {
    console.log(`[${data.chunk.is_final ? "FINAL" : "interim"}] ${data.chunk.text}`);
  }
};

// Send raw PCM16 audio as binary frames
function sendAudioChunk(pcmData) {
  if (ws.readyState === WebSocket.OPEN) ws.send(pcmData);
}

QUICK START — Meeting REST API

Base URL: https://extapi.bizcrush.aiAuth: X-API-Key: YOUR_API_KEY (header)

# Create a meeting
curl -X POST <https://extapi.bizcrush.ai/v1/create-meeting> \\
  -H "X-API-Key: YOUR_API_KEY" \\
  -H "Content-Type: application/json" \\
  -d '{"title": "Hackathon Demo", "participant_ids": ["<em:teammate@email.com>"]}'

# AI Summary with custom prompt
curl -X POST <https://extapi.bizcrush.ai/v1/summarize-meeting> \\
  -H "X-API-Key: YOUR_API_KEY" \\
  -H "Content-Type: application/json" \\
  -d '{"meeting_id": "MEETING_ID", "user_prompt": "List action items only"}'

# Ask AI about a meeting
curl -X POST <https://extapi.bizcrush.ai/v1/ask-ai-for-meeting> \\
  -H "X-API-Key: YOUR_API_KEY" \\
  -H "Content-Type: application/json" \\
  -d '{"meeting_id": "MEETING_ID", "message": {"text": "What were the key decisions?"}}'

# Get live transcription (poll every 1s)
curl -X POST <https://extapi.bizcrush.ai/v1/get-live-transcription-chunks> \\
  -H "X-API-Key: YOUR_API_KEY" \\
  -H "Content-Type: application/json" \\
  -d '{"meeting_id": "MEETING_ID", "last_updated_at": "1970-01-01T00:00:00Z", "limit": 100}'
# Create a meeting
curl -X POST <https://extapi.bizcrush.ai/v1/create-meeting> \\
  -H "X-API-Key: YOUR_API_KEY" \\
  -H "Content-Type: application/json" \\
  -d '{"title": "Hackathon Demo", "participant_ids": ["<em:teammate@email.com>"]}'

# AI Summary with custom prompt
curl -X POST <https://extapi.bizcrush.ai/v1/summarize-meeting> \\
  -H "X-API-Key: YOUR_API_KEY" \\
  -H "Content-Type: application/json" \\
  -d '{"meeting_id": "MEETING_ID", "user_prompt": "List action items only"}'

# Ask AI about a meeting
curl -X POST <https://extapi.bizcrush.ai/v1/ask-ai-for-meeting> \\
  -H "X-API-Key: YOUR_API_KEY" \\
  -H "Content-Type: application/json" \\
  -d '{"meeting_id": "MEETING_ID", "message": {"text": "What were the key decisions?"}}'

# Get live transcription (poll every 1s)
curl -X POST <https://extapi.bizcrush.ai/v1/get-live-transcription-chunks> \\
  -H "X-API-Key: YOUR_API_KEY" \\
  -H "Content-Type: application/json" \\
  -d '{"meeting_id": "MEETING_ID", "last_updated_at": "1970-01-01T00:00:00Z", "limit": 100}'
# Create a meeting
curl -X POST <https://extapi.bizcrush.ai/v1/create-meeting> \\
  -H "X-API-Key: YOUR_API_KEY" \\
  -H "Content-Type: application/json" \\
  -d '{"title": "Hackathon Demo", "participant_ids": ["<em:teammate@email.com>"]}'

# AI Summary with custom prompt
curl -X POST <https://extapi.bizcrush.ai/v1/summarize-meeting> \\
  -H "X-API-Key: YOUR_API_KEY" \\
  -H "Content-Type: application/json" \\
  -d '{"meeting_id": "MEETING_ID", "user_prompt": "List action items only"}'

# Ask AI about a meeting
curl -X POST <https://extapi.bizcrush.ai/v1/ask-ai-for-meeting> \\
  -H "X-API-Key: YOUR_API_KEY" \\
  -H "Content-Type: application/json" \\
  -d '{"meeting_id": "MEETING_ID", "message": {"text": "What were the key decisions?"}}'

# Get live transcription (poll every 1s)
curl -X POST <https://extapi.bizcrush.ai/v1/get-live-transcription-chunks> \\
  -H "X-API-Key: YOUR_API_KEY" \\
  -H "Content-Type: application/json" \\
  -d '{"meeting_id": "MEETING_ID", "last_updated_at": "1970-01-01T00:00:00Z", "limit": 100}'

MCP SETUP — Use BizCrush from Claude or Cursor

Add to your .mcp.json:

{
  "mcpServers": {
    "bizcrush": {
      "type": "sse",
      "url": "<https://bizcrush-mcp-1071354765717.us-central1.run.app/sse>"
    }
  }
}
{
  "mcpServers": {
    "bizcrush": {
      "type": "sse",
      "url": "<https://bizcrush-mcp-1071354765717.us-central1.run.app/sse>"
    }
  }
}
{
  "mcpServers": {
    "bizcrush": {
      "type": "sse",
      "url": "<https://bizcrush-mcp-1071354765717.us-central1.run.app/sse>"
    }
  }
}

Then just talk to Claude naturally:

  • "Summarize my last meeting"

  • "Get the transcript from today's call"

  • "Send a message to meeting XYZ"

Supported Languages (auto-detected)

Code

Language

Code

Language

en

English

ja

Japanese

ko

Korean

zh

Chinese

hi

Hindi

es

Spanish

fr

French

pt

Portuguese

ar

Arabic

ru

Russian

id

Indonesian

de

German

vi

Vietnamese

it

Italian

th

Thai



API Endpoints Overview

STT API (https://extapi-stt.bizcrush.ai)

Method

Endpoint

Description

POST

/stt

File transcription with speaker diarization

WS

/

Real-time streaming STT

Meeting REST API (https://extapi.bizcrush.ai)

Endpoint

Description

POST /v1/create-meeting

Create meeting + invite participants

POST /v1/get-meetings

List meetings (paginated)

POST /v1/get-live-transcription-chunks

Real-time STT polling

POST /v1/get-transcript-utterances

Final utterances with speaker diarization

POST /v1/summarize-meeting

AI summary (custom prompt supported)

POST /v1/ask-ai-for-meeting

AI Q&A about meeting content

POST /v1/get-meeting-summary

Get cached summary

POST /v1/upload-meeting-to-notion

Push summary to Notion

POST /v1/send-meeting-message

Send chat message to meeting

POST /v1/add-meeting-participants

Add participants

Links



📖 Full API Docs

https://extapi.bizcrush.ai/developer

🔑 Get API Key

https://bizcru.sh/en/settings → API Keys → Issue API Key

🌐 Homepage

https://bizcrush.ai

💬 Questions

DM Kelly — kelly@bizcrush.ai

*BizCrush Inc.