# BizCrush API — Full Reference > BizCrush is an AI-powered meeting platform. This API lets you manage meetings, transcriptions, AI summaries, and integrations programmatically. - Base URL: https://extapi.bizcrush.ai - Auth: `X-API-Key` header (required for all endpoints) - Content-Type: `application/json` - All endpoints use POST method ## REST API Endpoints ### Meetings Create, delete, and list meetings. #### POST /v1/create-meeting Create a new meeting and optionally invite participants. **Parameters (JSON body):** - `participant_ids` (list[str], optional): Participant IDs. Formats: userId (no prefix), em:email@example.com - `title` (str, optional): Meeting title #### POST /v1/delete-meeting Delete a meeting by ID. **Parameters (JSON body):** - `meeting_id` (str, required): Meeting ID to delete #### POST /v1/get-meetings List the authenticated user's meetings, newest first. **Parameters (JSON body):** - `last_updated_at` (str, optional): Pagination cursor: fetch meetings updated before this time (RFC 3339) - `limit` (int, optional): Max results per page (default: 50, max: 50) ### Meeting Messages Send, delete, and list meeting messages (text, summaries, etc.). #### POST /v1/send-meeting-message Send a text message to a meeting. **Parameters (JSON body):** - `meeting_message` (dict, required): Meeting message object with meeting_id and text fields #### POST /v1/delete-meeting-message Delete a message from a meeting. **Parameters (JSON body):** - `meeting_id` (str, required): Meeting ID - `message_id` (str, required): Message ID to delete #### POST /v1/get-meeting-messages Get messages for a meeting (summaries, user messages, etc.). **Parameters (JSON body):** - `meeting_id` (str, required): Meeting ID - `last_updated_at` (str, optional): Pagination cursor (RFC 3339) - `limit` (int, optional): Max results per page (default: 50) ### Meeting AI AI-powered meeting summarization and Q&A. #### POST /v1/summarize-meeting Generate an AI summary of a meeting. **Parameters (JSON body):** - `meeting_id` (str, required): Meeting ID to summarize - `send_email_to_participants` (bool, optional): Send summary email to participants (default: false) - `user_prompt` (str, optional): Custom prompt to guide summarization #### POST /v1/ask-ai-for-meeting Ask AI a question about a meeting's content. **Parameters (JSON body):** - `meeting_id` (str, required): Meeting ID - `message` (dict, required): User question as {text: '...'} object - `model` (int, optional): LLM model enum value (0 = default) - `attachment_urls` (list[str], optional): Attachment URLs (PDF, images, etc.) - `source_content` (str, optional): Existing markdown to edit (edit mode) - `source_document_id` (str, optional): Document ID for version chaining ### Meeting Cached Data Retrieve cached meeting summaries and transcripts. #### POST /v1/get-meeting-summary Get the AI-generated summary of a meeting (cached). **Parameters (JSON body):** - `meeting_id` (str, required): Meeting ID - `force_refresh` (bool, optional): Force refresh from DB instead of cache #### POST /v1/get-meeting-transcripts Get the full transcripts of a meeting (cached). **Parameters (JSON body):** - `meeting_id` (str, required): Meeting ID - `force_refresh` (bool, optional): Force refresh from DB instead of cache ### Meeting Participants Add/remove participants and manage co-host roles. #### POST /v1/add-meeting-participants Add participants to a meeting. **Parameters (JSON body):** - `meeting_id` (str, required): Meeting ID - `participant_ids` (list[str], required): Participant IDs. Formats: userId, em:email@example.com #### POST /v1/remove-meeting-participants Remove participants from a meeting. **Parameters (JSON body):** - `meeting_id` (str, required): Meeting ID - `participant_ids` (list[str], required): Participant IDs to remove #### POST /v1/assign-co-host Assign co-host role to users in a meeting. **Parameters (JSON body):** - `meeting_id` (str, required): Meeting ID - `user_ids` (list[str], required): User IDs to assign as co-host #### POST /v1/remove-co-host Remove co-host role from users in a meeting. **Parameters (JSON body):** - `meeting_id` (str, required): Meeting ID - `user_ids` (list[str], required): User IDs to remove co-host from ### Meeting Settings Get and update default meeting settings (languages, keywords). #### POST /v1/get-user-default-meeting-setting Get the user's default meeting settings. **Parameters (JSON body):** - `device_language_code` (str, optional): IETF BCP-47 language code (default: 'en') #### POST /v1/update-user-default-meeting-setting Update the user's default meeting settings. **Parameters (JSON body):** - `original_languages` (list[str], optional): STT input languages (IETF BCP-47) - `view_language` (str, optional): Document generation language (default: 'en') - `translation_languages` (list[str], optional): Translation target languages - `contextual_keywords` (list[str], optional): Keywords to help AI understand meeting context ### Transcription Access live transcription chunks, finalized utterances, and corrections. #### POST /v1/get-live-transcription-chunks Get real-time transcription chunks for a meeting. **Parameters (JSON body):** - `meeting_id` (str, required): Meeting ID - `last_updated_at` (str, required): Pagination cursor (RFC 3339). Use '1970-01-01T00:00:00Z' for first page - `message_id` (str, optional): Filter by message ID - `limit` (int, optional): Max results (default: 100) #### POST /v1/get-transcript-utterances Get finalized transcript utterances with confidence scores. **Parameters (JSON body):** - `meeting_id` (str, required): Meeting ID - `last_updated_at` (str, required): Pagination cursor (RFC 3339). Use '1970-01-01T00:00:00Z' for first page - `message_id` (str, optional): Filter by message ID - `limit` (int, optional): Max results (default: 100) #### POST /v1/update-transcript-utterance Correct a transcribed utterance's text. **Parameters (JSON body):** - `id` (str, required): Utterance document ID - `meeting_id` (str, required): Meeting ID - `transcript` (str, required): Corrected transcript text ### Notion Upload meeting summaries to Notion. #### POST /v1/upload-meeting-to-notion Upload a meeting summary to a Notion workspace. **Parameters (JSON body):** - `user_id` (str, required): User ID (for retrieving Notion access token) - `meeting_id` (str, required): Meeting ID to upload ### People List contacts and people. #### POST /v1/get-my-people List the authenticated user's contacts. **Parameters (JSON body):** - `cursor` (str, optional): Pagination cursor (name:email format) - `limit` (int, optional): Results per page (default: 20) ## Audio Noise Reduction #### POST /v1/denoise Denoise an audio file using BizCrush AI. Provide a download URL; the server applies noise reduction, re-encodes to M4A (AAC), and returns a signed download URL valid for 1 hour. **Parameters (JSON body):** - `audio_url` (string, required): Input audio file download URL (any format supported by ffmpeg) **Response fields:** - `denoised_audio_url` (string): Signed download URL for the denoised M4A file (valid ~1 hour) ## MCP Server - URL: https://extapi.bizcrush.ai/mcp - Transport: Streamable HTTP - Auth: `X-API-Key` header ### Available Tools #### create_meeting Create a new meeting and optionally invite participants. **Parameters:** `participant_ids: list[str], title: str` #### delete_meeting Delete a meeting by ID. **Parameters:** `meeting_id: str` #### get_meetings List the authenticated user's meetings, newest first. **Parameters:** `last_updated_at?: str, limit: int` #### send_meeting_message Send a text message to a meeting. **Parameters:** `meeting_id: str, text: str` #### delete_meeting_message Delete a message from a meeting. **Parameters:** `meeting_id: str, message_id: str` #### get_meeting_messages Get messages for a meeting. **Parameters:** `meeting_id: str, last_updated_at?: str, limit: int` #### summarize_meeting Generate an AI summary of a meeting. **Parameters:** `meeting_id: str, send_email_to_participants: bool, user_prompt?: str` #### ask_ai_for_meeting Ask AI a question about a meeting's content. **Parameters:** `meeting_id: str, message_text: str, model: int, attachment_urls?: list[str]` #### add_meeting_participants Add participants to a meeting. **Parameters:** `meeting_id: str, participant_ids: list[str]` #### remove_meeting_participants Remove participants from a meeting. **Parameters:** `meeting_id: str, participant_ids: list[str]` #### assign_co_host Assign co-host role to users. **Parameters:** `meeting_id: str, user_ids: list[str]` #### remove_co_host Remove co-host role from users. **Parameters:** `meeting_id: str, user_ids: list[str]` #### get_user_default_meeting_setting Get user's default meeting settings. **Parameters:** `device_language_code: str` #### update_user_default_meeting_setting Update user's default meeting settings. **Parameters:** `original_languages: list[str], view_language: str, translation_languages: list[str], contextual_keywords: list[str]` #### get_live_transcription_chunks Get real-time transcription chunks. **Parameters:** `meeting_id: str, last_updated_at: str, message_id?: str, limit: int` #### get_transcript_utterances Get finalized transcript utterances. **Parameters:** `meeting_id: str, last_updated_at: str, message_id?: str, limit: int` #### update_transcript_utterance Correct a transcribed utterance's text. **Parameters:** `utterance_id: str, meeting_id: str, transcript: str` #### get_meeting_summary Get the AI-generated summary of a meeting (cached). **Parameters:** `meeting_id: str, force_refresh: bool` #### get_meeting_transcripts Get the full transcripts of a meeting (cached). **Parameters:** `meeting_id: str, force_refresh: bool` #### upload_meeting_to_notion Upload a meeting summary to Notion. **Parameters:** `meeting_id: str` #### get_my_people List the user's contacts. **Parameters:** `cursor?: str, limit: int` ## Speech-to-Text API - Base URL: https://extapi.bizcrush.ai/v1 - Auth: `?api_key=YOUR_API_KEY` query parameter - Build your own STT service with these APIs ### File STT #### POST /stt Transcribe an audio file URL and return the full transcript with speaker diarization. **Parameters (JSON body):** - `audio_url` (string, required): Public audio file URL (signed URL, CDN URL, etc.) - `session_id` (string, optional): Session identifier. Auto-generated if omitted - `enable_diarization` (boolean, optional): Enable speaker diarization (default: true) - `language_hints` (string[], optional): Language codes, e.g. ["ko","en"] or "ko,en". Up to 3; extras dropped. Omit for auto-detection. Legacy `language_hint` (single string) also accepted. **Response fields:** text, detected_language, confidence, utterances[] (speaker, text, start_ms, end_ms, confidence, language) ### Live STT (WebSocket) #### wss://extapi.bizcrush.ai/v1/stt/stream Real-time audio streaming transcription via WebSocket. Send audio chunks and receive interim/final results in real time. **Query parameters:** api_key (required), format ("json" or protobuf), reduce_noise ("true" for noise reduction) **Protocol:** 1) Send config JSON (encoding, session_id) → 2) Receive {connected: true} → 3) Stream audio binary → 4) Receive transcript chunks (id, session_id, text, is_final) **Audio formats:** pcm16 (16kHz mono 16-bit LE, 640 bytes/chunk) or opus (16kHz mono) ### Supported Languages (15) en, zh, hi, es, ar, fr, pt, ru, id, de, ja, vi, it, ko, th ## Text-to-Speech API - Base URL: https://extapi.bizcrush.ai/v1 - Auth: `?api_key=YOUR_API_KEY` query parameter - Content-Type: `application/x-protobuf` #### POST /tts Generate speech audio from text and return a signed download URL (audio uploaded to Firebase Storage at tts/{session_id}/{message_id}.ogg). **Parameters (protobuf SessionTTSRequest):** - `session_id` (string, required): Session identifier - `message_id` (string, required): Message identifier (used in storage path) - `text` (string, required): Text to convert to speech **Response fields (protobuf SessionTTSResponse):** - `audio_url` (string): Signed download URL (Opus / OGG) — valid for several days - `error` (string): Set on failure; audio_url empty **Audio format:** OGG/Opus, single channel **Default voice:** nova (configurable server-side)