API Key 발급
BizCrush API를 사용하려면 API Key가 필요합니다. 계정 설정에서 최대 5개까지 생성할 수 있습니다.
Speech-to-Text API
FeaturedSpeech-to-Text API for audio transcription with speaker diarization. Supports file-based (batch) and real-time (streaming) transcription.
나만의 STT 서비스 구축
Use the BizCrush STT API to build your own speech-to-text service. Integrate real-time transcription into your apps, process audio files at scale, or create custom voice-powered workflows — all with speaker diarization and multi-language support.
15개 언어 자동 감지 — 설정 없이 오디오를 보내면 바로 결과를 받을 수 있습니다.
개요
인증
모든 STT 요청은 쿼리 파라미터로 API 키를 전달해야 합니다:
?api_key=YOUR_API_KEY
API Key는 bizcru.sh/settings에서 발급할 수 있습니다.
파일 STT
오디오 파일 URL을 전송하면 화자 분리가 포함된 전체 트랜스크립트를 받을 수 있습니다.
/stt
인증: ?api_key
Transcribe an audio file URL and return the full transcript with speaker diarization.
요청 본문 (JSON)
| 이름 | 타입 | 필수 여부 | 설명 |
|---|---|---|---|
| audio_url | string | 필수 | Public audio file URL (signed URL, CDN URL, etc.) |
| session_id | string | 선택 | Session identifier. Auto-generated if omitted |
| enable_diarization | boolean | 선택 | Enable speaker diarization (default: true) |
| language_hints | string[] | 선택 | 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. |
응답 필드
| 필드 | 타입 | 설명 |
|---|---|---|
| text | string | Full transcript text |
| detected_language | string | Detected language code |
| confidence | float | Average confidence (0~1) |
| utterances | array | Speaker-diarized utterance segments |
| utterances[].speaker | string | Speaker number ("0", "1", "2", ...) |
| utterances[].text | string | Utterance text |
| utterances[].start_ms | integer | Start time (milliseconds) |
| utterances[].end_ms | integer | End time (milliseconds) |
| utterances[].confidence | float | Utterance confidence |
| utterances[].language | string | Utterance language |
응답 예시
{
"text": "Could you introduce yourself and tell us about your role?",
"detected_language": "en",
"confidence": 0.961,
"utterances": [
{
"speaker": "1",
"text": "Could you introduce yourself and tell us about your role?",
"start_ms": 960,
"end_ms": 5400,
"confidence": 0.94,
"language": "en"
},
{
"speaker": "2",
"text": "Sure. My name is Ethan Kim, and I'm CTO of BizCrush.",
"start_ms": 5820,
"end_ms": 9600,
"confidence": 0.96,
"language": "en"
}
]
}
cURL 예시
curl -X POST \
"https://extapi.bizcrush.ai/v1/stt?api_key=YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"audio_url": "https://example.com/audio.oga", "enable_diarization": true}'
참고: Response time depends on audio length — may take up to several minutes. Set timeout to 600+ seconds.
실시간 STT (WebSocket)
Real-time audio streaming transcription via WebSocket. Send audio chunks and receive interim/final results in real time.
wss://extapi.bizcrush.ai/v1/stt/stream
쿼리 파라미터
| 이름 | 타입 | 필수 여부 | 설명 |
|---|---|---|---|
| api_key | string | 필수 | API key |
| format | string | 선택 | "json" for JSON text frames, omit for protobuf binary |
| reduce_noise | string | 선택 | "true" to enable real-time noise reduction |
| language_hints | string[] | 선택 | Language codes as comma-separated (?language_hints=ko,en) or repeated (?language_hints=ko&language_hints=en). Up to 3; extras dropped. Omit for auto-detection. |
프로토콜
Send a JSON text frame with encoding and optional session_id
| 필드 | 타입 | 설명 |
|---|---|---|
| encoding | string | "pcm16" or "opus" (default: "pcm16") |
| session_id | string | Session identifier (optional, auto-generated if omitted) |
| language_hints | string[] | Optional language codes, e.g. ["ko","en"] or "ko,en". Up to 3 entries; extras dropped. Overrides query param. Omit for auto-detection. |
{"encoding": "pcm16", "session_id": "optional-session-id"}
Server responds with connection status
{"connected": true}
Send raw audio as binary WebSocket frames
| 인코딩 | 포맷 | 청크 크기 |
|---|---|---|
| pcm16 | 16kHz, mono, 16-bit little-endian | 640 bytes (20ms) recommended |
| opus | 16kHz, mono. Raw Opus packets or OGG/Opus container | Opus frame unit |
Server sends interim and final results as JSON text frames
| 필드 | 타입 | 설명 |
|---|---|---|
| chunk.id | string | Chunk ID — same across interim/final for one utterance, new ID after final |
| chunk.session_id | string | Session ID |
| chunk.text | string | Transcribed text (cumulative — each interim contains full text so far) |
| chunk.is_final | boolean | false: interim result, true: final confirmed result |
{"chunk": {"id": "01KMCHP57H31XYZABC", "session_id": "my-session", "text": "Hello, how are you?", "is_final": true}}
예제
Python
import asyncio
import json
import websockets
async def live_stt(api_key: str):
url = f"wss://extapi.bizcrush.ai/v1/stt/stream?api_key={api_key}&format=json"
async with websockets.connect(url) as ws:
await ws.send(json.dumps({"encoding": "pcm16"}))
resp = json.loads(await ws.recv())
assert resp["connected"], f"Connection failed: {resp}"
async def send_audio():
with open("audio.pcm", "rb") as f:
while chunk := f.read(640):
await ws.send(chunk)
await asyncio.sleep(0.02)
await asyncio.sleep(3)
await ws.close()
async def receive_results():
try:
async for msg in ws:
data = json.loads(msg)
if "chunk" in data:
chunk = data["chunk"]
status = "FINAL" if chunk["is_final"] else "interim"
print(f"[{status}] {chunk['text']}")
except websockets.exceptions.ConnectionClosed:
pass
await asyncio.gather(send_audio(), receive_results())
asyncio.run(live_stt("YOUR_API_KEY"))
JavaScript (Browser)
const ws = new WebSocket(
"wss://extapi.bizcrush.ai/v1/stt/stream?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) {
const { id, text, is_final } = data.chunk;
console.log(`[${is_final ? "FINAL" : "interim"}] ${text}`);
}
};
function sendAudioChunk(pcmData) {
if (ws.readyState === WebSocket.OPEN) {
ws.send(pcmData);
}
}
음성 합성 (TTS)
텍스트를 자연스러운 음성으로 변환하고 서명된 다운로드 URL을 반환합니다 (오디오는 Firebase Storage에 업로드됩니다).
/tts
인증: ?api_key
Generate speech audio from text and return a signed download URL (audio uploaded to Firebase Storage at tts/{session_id}/{message_id}.ogg).
요청 본문 (Protobuf)
application/x-protobuf (request and response are protobuf-encoded SessionTTSRequest / SessionTTSResponse)
| 이름 | 타입 | 필수 여부 | 설명 |
|---|---|---|---|
| session_id | string | 필수 | Session identifier |
| message_id | string | 필수 | Message identifier (used in storage path) |
| text | string | 필수 | Text to convert to speech |
응답 필드
| 필드 | 타입 | 설명 |
|---|---|---|
| audio_url | string | Signed download URL (Opus / OGG) — valid for several days |
| error | string | Set on failure; audio_url empty |
오디오 소음 제거
BizCrush AI를 사용하여 오디오 파일의 배경 소음을 제거합니다. 다운로드 URL을 제공하면 소음이 제거된 M4A 파일을 반환합니다.
/v1/denoise
X-API-Key
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.
요청 본문
| 이름 | 타입 | 필수 여부 | 설명 |
|---|---|---|---|
| audio_url | string | 필수 | Input audio file download URL (any format supported by ffmpeg) |
응답 필드
| 필드 | 타입 | 설명 |
|---|---|---|
| denoised_audio_url | string | Signed download URL for the denoised M4A file (valid ~1 hour) |
지원 언어
자동 언어 감지가 기본 내장되어 있어 별도 설정이 필요 없습니다. STT 엔진이 15개 언어를 자동으로 감지하고, 대화 중 언어가 바뀌어도 매끄럽게 처리합니다. language_hint를 사용하면 더 빠르게 감지할 수 있습니다.
| 코드 | 언어 |
|---|---|
| en | English |
| zh | 中文 |
| hi | हिन्दी |
| es | Español |
| ar | العربية |
| fr | Français |
| pt | Português |
| ru | Русский |
| id | Bahasa Indonesia |
| de | Deutsch |
| ja | 日本語 |
| vi | Tiếng Việt |
| it | Italiano |
| ko | 한국어 |
| th | ภาษาไทย |
STT 오류 코드
| 상태 | 오류 | 설명 |
|---|---|---|
| 401 | Missing authorization | API key not provided |
| 401 | Invalid API key | Invalid API key |
| 400 | Empty request body | Request body is empty |
| 400 | Missing audio_url | audio_url field missing (File STT) |
| 400 | Missing session_id, message_id, or text | Required TTS field missing |
| 400 | Invalid JSON | JSON parsing failed |
| 500 | TTS generation failed | OpenAI TTS call failed |
| 500 | Storage upload failed | Firebase Storage upload failed |
| 500 | (varies) | Internal server error (transcription failure, etc.) |
| WS 1008 | Auth failure | WebSocket closed with code 1008 on authentication failure |
미팅 REST API
인증
모든 API 요청에는 X-API-Key 헤더가 필요합니다.
curl -X POST https://extapi.bizcrush.ai/v1/get-meetings \
-H "Content-Type: application/json" \
-H "X-API-Key: YOUR_API_KEY" \
-d '{}'
API Key는 bizcru.sh/settings에서 발급할 수 있습니다.
빠른 시작
한 번의 요청으로 미팅을 생성하고 참가자를 초대하세요:
curl -X POST https://extapi.bizcrush.ai/v1/create-meeting \
-H "Content-Type: application/json" \
-H "X-API-Key: YOUR_API_KEY" \
-d '{
"participant_ids": ["em:john@example.com"],
"title": "Weekly Standup"
}'
응답:
{
"meeting": {
"id": "01KNGVN84KR7T5CVDY9TTW7FFW",
"host_user_id": "0J56UlxXAS",
"participant_ids": ["0J56UlxXAS", "em:john@example.com"],
"status": "MS_LIVE",
"title": "Weekly Standup",
"language": "ko",
"translation_languages": ["ko", "en"]
}
}
Meetings
Create, delete, and list meetings.
/v1/create-meeting
Create a new meeting and optionally invite participants.
파라미터
| 이름 | 타입 | 필수 여부 | 설명 |
|---|---|---|---|
| participant_ids | list[str] | 선택 | Participant IDs. Formats: userId (no prefix), em:email@example.com |
| title | str | 선택 | Meeting title |
/v1/delete-meeting
Delete a meeting by ID.
파라미터
| 이름 | 타입 | 필수 여부 | 설명 |
|---|---|---|---|
| meeting_id | str | 필수 | Meeting ID to delete |
/v1/get-meetings
List the authenticated user's meetings, newest first.
파라미터
| 이름 | 타입 | 필수 여부 | 설명 |
|---|---|---|---|
| last_updated_at | str | 선택 | Pagination cursor: fetch meetings updated before this time (RFC 3339) |
| limit | int | 선택 | Max results per page (default: 50, max: 50) |
Meeting Messages
Send, delete, and list meeting messages (text, summaries, etc.).
/v1/send-meeting-message
Send a text message to a meeting.
파라미터
| 이름 | 타입 | 필수 여부 | 설명 |
|---|---|---|---|
| meeting_message | dict | 필수 | Meeting message object with meeting_id and text fields |
/v1/delete-meeting-message
Delete a message from a meeting.
파라미터
| 이름 | 타입 | 필수 여부 | 설명 |
|---|---|---|---|
| meeting_id | str | 필수 | Meeting ID |
| message_id | str | 필수 | Message ID to delete |
/v1/get-meeting-messages
Get messages for a meeting (summaries, user messages, etc.).
파라미터
| 이름 | 타입 | 필수 여부 | 설명 |
|---|---|---|---|
| meeting_id | str | 필수 | Meeting ID |
| last_updated_at | str | 선택 | Pagination cursor (RFC 3339) |
| limit | int | 선택 | Max results per page (default: 50) |
Meeting AI
AI-powered meeting summarization and Q&A.
/v1/summarize-meeting
Generate an AI summary of a meeting.
파라미터
| 이름 | 타입 | 필수 여부 | 설명 |
|---|---|---|---|
| meeting_id | str | 필수 | Meeting ID to summarize |
| send_email_to_participants | bool | 선택 | Send summary email to participants (default: false) |
| user_prompt | str | 선택 | Custom prompt to guide summarization |
/v1/ask-ai-for-meeting
Ask AI a question about a meeting's content.
파라미터
| 이름 | 타입 | 필수 여부 | 설명 |
|---|---|---|---|
| meeting_id | str | 필수 | Meeting ID |
| message | dict | 필수 | User question as {text: '...'} object |
| model | int | 선택 | LLM model enum value (0 = default) |
| attachment_urls | list[str] | 선택 | Attachment URLs (PDF, images, etc.) |
| source_content | str | 선택 | Existing markdown to edit (edit mode) |
| source_document_id | str | 선택 | Document ID for version chaining |
Meeting Cached Data
Retrieve cached meeting summaries and transcripts.
/v1/get-meeting-summary
Get the AI-generated summary of a meeting (cached).
파라미터
| 이름 | 타입 | 필수 여부 | 설명 |
|---|---|---|---|
| meeting_id | str | 필수 | Meeting ID |
| force_refresh | bool | 선택 | Force refresh from DB instead of cache |
/v1/get-meeting-transcripts
Get the full transcripts of a meeting (cached).
파라미터
| 이름 | 타입 | 필수 여부 | 설명 |
|---|---|---|---|
| meeting_id | str | 필수 | Meeting ID |
| force_refresh | bool | 선택 | Force refresh from DB instead of cache |
Meeting Participants
Add/remove participants and manage co-host roles.
/v1/add-meeting-participants
Add participants to a meeting.
파라미터
| 이름 | 타입 | 필수 여부 | 설명 |
|---|---|---|---|
| meeting_id | str | 필수 | Meeting ID |
| participant_ids | list[str] | 필수 | Participant IDs. Formats: userId, em:email@example.com |
/v1/remove-meeting-participants
Remove participants from a meeting.
파라미터
| 이름 | 타입 | 필수 여부 | 설명 |
|---|---|---|---|
| meeting_id | str | 필수 | Meeting ID |
| participant_ids | list[str] | 필수 | Participant IDs to remove |
/v1/assign-co-host
Assign co-host role to users in a meeting.
파라미터
| 이름 | 타입 | 필수 여부 | 설명 |
|---|---|---|---|
| meeting_id | str | 필수 | Meeting ID |
| user_ids | list[str] | 필수 | User IDs to assign as co-host |
/v1/remove-co-host
Remove co-host role from users in a meeting.
파라미터
| 이름 | 타입 | 필수 여부 | 설명 |
|---|---|---|---|
| meeting_id | str | 필수 | Meeting ID |
| user_ids | list[str] | 필수 | User IDs to remove co-host from |
Meeting Settings
Get and update default meeting settings (languages, keywords).
/v1/get-user-default-meeting-setting
Get the user's default meeting settings.
파라미터
| 이름 | 타입 | 필수 여부 | 설명 |
|---|---|---|---|
| device_language_code | str | 선택 | IETF BCP-47 language code (default: 'en') |
/v1/update-user-default-meeting-setting
Update the user's default meeting settings.
파라미터
| 이름 | 타입 | 필수 여부 | 설명 |
|---|---|---|---|
| original_languages | list[str] | 선택 | STT input languages (IETF BCP-47) |
| view_language | str | 선택 | Document generation language (default: 'en') |
| translation_languages | list[str] | 선택 | Translation target languages |
| contextual_keywords | list[str] | 선택 | Keywords to help AI understand meeting context |
Transcription
Access live transcription chunks, finalized utterances, and corrections.
/v1/get-live-transcription-chunks
Get real-time transcription chunks for a meeting.
파라미터
| 이름 | 타입 | 필수 여부 | 설명 |
|---|---|---|---|
| meeting_id | str | 필수 | Meeting ID |
| last_updated_at | str | 필수 | Pagination cursor (RFC 3339). Use '1970-01-01T00:00:00Z' for first page |
| message_id | str | 선택 | Filter by message ID |
| limit | int | 선택 | Max results (default: 100) |
/v1/get-transcript-utterances
Get finalized transcript utterances with confidence scores.
파라미터
| 이름 | 타입 | 필수 여부 | 설명 |
|---|---|---|---|
| meeting_id | str | 필수 | Meeting ID |
| last_updated_at | str | 필수 | Pagination cursor (RFC 3339). Use '1970-01-01T00:00:00Z' for first page |
| message_id | str | 선택 | Filter by message ID |
| limit | int | 선택 | Max results (default: 100) |
/v1/update-transcript-utterance
Correct a transcribed utterance's text.
파라미터
| 이름 | 타입 | 필수 여부 | 설명 |
|---|---|---|---|
| id | str | 필수 | Utterance document ID |
| meeting_id | str | 필수 | Meeting ID |
| transcript | str | 필수 | Corrected transcript text |
Notion
Upload meeting summaries to Notion.
/v1/upload-meeting-to-notion
Upload a meeting summary to a Notion workspace.
파라미터
| 이름 | 타입 | 필수 여부 | 설명 |
|---|---|---|---|
| user_id | str | 필수 | User ID (for retrieving Notion access token) |
| meeting_id | str | 필수 | Meeting ID to upload |
People
List contacts and people.
/v1/get-my-people
List the authenticated user's contacts.
파라미터
| 이름 | 타입 | 필수 여부 | 설명 |
|---|---|---|---|
| cursor | str | 선택 | Pagination cursor (name:email format) |
| limit | int | 선택 | Results per page (default: 20) |
오류 처리
API는 표준 HTTP 상태 코드와 JSON 오류 본문을 반환합니다:
| 상태 | 설명 |
|---|---|
| 401 | API 키가 없거나 유효하지 않음 |
| 400 | 잘못된 요청 본문 (유효성 검사 오류) |
| 404 | 리소스를 찾을 수 없음 (잘못된 미팅/메시지 ID) |
| 500 | 내부 서버 오류 |
{
"success": false,
"error": "Meeting not found",
"code": "NOT_FOUND"
}
Zapier 연동
개요
Connect BizCrush with your favorite tools through our Zapier integration. Automatically capture meeting summaries, generate AI documents, and push insights to Slack, Notion, Google Docs, and more.
트리거
4 polling triggers that detect new meetings, summaries, contacts, and follow-up emails.
액션
2 actions to retrieve meeting details and generate AI documents with custom prompts.
인증
Zapier는 OAuth 2.0 (Authorization Code flow)을 사용합니다. 토큰 수명 주기는 Zapier가 자동으로 관리합니다.
OAuth 2.0 플로우
| 단계 | 설명 | 엔드포인트 |
|---|---|---|
| 1 | Authorization — User is redirected to BizCrush to grant access | GET /oauth/zapier/authorize |
| 2 | Token Exchange — Authorization code is exchanged for access and refresh tokens | POST /api/oauth/zapier/token |
| 3 | API Requests — Access token is sent as a Bearer token | Authorization: Bearer <access_token> |
연결 테스트
/api/zapier/me
인증: Bearer Token
curl https://bizcru.sh/api/zapier/me \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN"
응답 예시
{
"user_id": "abc123",
"email": "user@example.com",
"display_name": "John Doe"
}
트리거
폴링 기반 트리거입니다. Zapier가 주기적으로 호출하여 새 데이터를 감지합니다. 모든 트리거는 날짜순(최신순)으로 정렬된 배열을 반환하며, 최대 50개입니다.
/api/zapier/triggers/meeting-ended
인증: Bearer Token
Meeting Ended
Fires when a meeting you participated in has ended. Returns up to 50 recent ended meetings.
응답 필드
| 필드 | 타입 | 설명 |
|---|---|---|
| id | string | Meeting ID (deduplication key) |
| title | string | Meeting title |
| start_at | ISO 8601 | Meeting start time |
| end_at | ISO 8601 | Meeting end time |
| language | string | Meeting language (e.g., "ko", "en") |
| host_user_id | string | Host user ID |
| participant_count | number | Number of participants |
| tags | string[] | Meeting tags |
응답 예시
[
{
"id": "01KMHVN8JX62M7HPS2H4GNXVR8",
"title": "Weekly Standup",
"start_at": "2025-01-15T09:00:00.000Z",
"end_at": "2025-01-15T10:30:00.000Z",
"language": "en",
"host_user_id": "abc123",
"participant_count": 3,
"tags": ["standup", "weekly"]
}
]
/api/zapier/triggers/summary-ready
인증: Bearer Token
Summary Ready
Fires when an AI-generated summary is ready for one of your meetings.
응답 필드
| 필드 | 타입 | 설명 |
|---|---|---|
| id | string | Summary message ID (deduplication key) |
| meeting_id | string | Meeting ID |
| meeting_title | string | Meeting title |
| ai_model | string | AI model used for generation |
| markdown_body | string | Summary content in Markdown |
| created_at | ISO 8601 | Summary creation time |
응답 예시
[
{
"id": "summary_msg_id",
"meeting_id": "01KMHVN8JX62M7HPS2H4GNXVR8",
"meeting_title": "Weekly Standup",
"ai_model": "gpt-4o",
"markdown_body": "## Meeting Summary\n- Discussed project updates...",
"created_at": "2025-01-15T10:35:00.000Z"
}
]
/api/zapier/triggers/contact-discovered
인증: Bearer Token
Contact Discovered
Fires when a new contact (guest profile) is discovered from a meeting.
응답 필드
| 필드 | 타입 | 설명 |
|---|---|---|
| id | string | Contact message ID (deduplication key) |
| meeting_id | string | Meeting ID |
| meeting_title | string | Meeting title |
| name | string | Contact name |
| string | Contact email | |
| company_name | string | Company name |
| company_position | string | Job title / position |
| linkedin_id | string | LinkedIn profile ID |
| created_at | ISO 8601 | Discovery time |
응답 예시
[
{
"id": "contact_msg_id",
"meeting_id": "01KMHVN8JX62M7HPS2H4GNXVR8",
"meeting_title": "Sales Call",
"name": "John Doe",
"email": "john@example.com",
"company_name": "Acme Inc",
"company_position": "CEO",
"linkedin_id": "johndoe",
"created_at": "2025-01-15T11:00:00.000Z"
}
]
/api/zapier/triggers/followup-email-ready
인증: Bearer Token
Follow-up Email Ready
Fires when an AI-generated follow-up email is ready for a meeting.
응답 필드
| 필드 | 타입 | 설명 |
|---|---|---|
| id | string | Email message ID (deduplication key) |
| meeting_id | string | Meeting ID |
| meeting_title | string | Meeting title |
| subject | string | Email subject line |
| body_html | string | Email body in HTML |
| created_at | ISO 8601 | Email generation time |
응답 예시
[
{
"id": "email_msg_id",
"meeting_id": "01KMHVN8JX62M7HPS2H4GNXVR8",
"meeting_title": "Sales Call",
"subject": "Follow up from our meeting",
"body_html": "<p>Thank you for the meeting.</p>",
"created_at": "2025-01-15T11:10:00.000Z"
}
]
액션
Zapier 사용자가 Zap에서 실행할 수 있는 액션입니다.
/api/zapier/meetings/{id}
인증: Bearer Token
Get Meeting Details
Retrieve detailed information about a specific meeting, including its latest AI summary.
경로 파라미터
| 파라미터 | 필수 여부 | 설명 |
|---|---|---|
| id | 필수 | Meeting ID |
응답 예시
{
"id": "01KMHVN8JX62M7HPS2H4GNXVR8",
"title": "Q1 Planning Meeting",
"start_at": "2025-01-15T09:00:00.000Z",
"end_at": "2025-01-15T10:30:00.000Z",
"language": "en",
"host_user_id": "abc123",
"participant_count": 4,
"tags": ["planning", "q1"],
"latest_summary": {
"ai_model": "gpt-4o",
"markdown_body": "## Key Decisions\n- Approved Q1 budget...",
"created_at": "2025-01-15T10:35:00.000Z"
}
}
/api/zapier/meetings/{id}/generate-document
인증: Bearer Token
Generate AI Document
Generate an AI document from a meeting using a custom prompt. Supports asynchronous callback delivery for long-running generations.
경로 파라미터
| 파라미터 | 필수 여부 | 설명 |
|---|---|---|
| id | 필수 | Meeting ID |
요청 본문
| 필드 | 타입 | 필수 여부 | 기본값 | 설명 |
|---|---|---|---|---|
| prompt | str | 필수 | — | Custom prompt for document generation (e.g., "Summarize key decisions and action items") |
| model | str | 선택 | gpt-4o | AI model — gpt-4o (default) or claude |
| callback_url | str | 선택 | — | URL to receive async results (used by Zapier automatically) |
응답 예시
// Sync response (no callback)
{
"success": true,
"meeting_id": "01KMHVN8...",
"document_text": "## Summary\n...",
"message": "AI document generation requested."
}
비동기 콜백 응답
// Async: initial response (immediate)
{
"success": true,
"meeting_id": "01KMHVN8...",
"message": "AI document generation started. Result will be delivered via callback."
}
// Async: callback POST to callback_url (after AI completes)
{
"status": "success",
"meeting_id": "01KMHVN8...",
"document_text": "# Detailed AI Document\n\n## Key Decisions\n- ...",
"created_at": "2025-01-15T10:40:00.000Z"
}