Tutorials

[BizCrush API] Quick Start Guide

5

min

BizCrush

Growth

INDEX

    INDEX

      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, and Google Docs automatically


      STEP 1 — Get Your API Key

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

      2. Navigate to Settings https://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 the timeout to 600+ seconds for long audio files.


      QUICK START — Live STT via WebSocket (Python)


      pip install websockets
      pip install websockets
      pip install websockets
      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.

      • Support: help@bizcrush.ai

      • Business: business@bizcrush.ai