4.2 KiB
4.2 KiB
Scribe 5-Minute Preflight Runbook
Use this before deep debugging.
1) Confirm the Right Product
- File-based or storage-based transcription -> stay on
scribe. - Live meeting media stream or botless live transcription -> use
rtmsinstead. - Meeting bot that joins and records before transcription -> chain Meeting SDK Linux first.
2) Confirm Credentials
- Build-platform issuer credential pair available.
- JWT generation uses
HS256with one-hour-or-less expiry. - Secret stays server-side.
- Reject placeholder values such as
${ZOOM_API_KEY}and${ZOOM_API_SECRET}. They can make a naive health check look configured while every real call still fails.
3) Confirm Mode Selection
- Fast mode for one short file and immediate JSON response.
- Batch mode for many files, long recordings, or archive-style processing.
- Browser microphone pseudo-streaming for short repeated chunks uploaded through the async fast-mode wrapper.
- Fast mode current limits from the API spec:
- maximum file size:
100 MB - maximum duration:
2 hours
- maximum file size:
- If fast mode is exposed through a hosted browser UI, prefer an async wrapper:
- browser uploads once
- backend returns
202with a request ID - frontend polls for completion This avoids losing successful transcriptions to edge/client timeout races.
- Observed hosted timing from the deployed sample:
- ~17.2 MB MP4 completed in ~26s
- ~38.6 MB MP4 completed in ~26-37s
- ~59.2 MB MP4 completed in ~32-34s on the backend
- some ~59.2 MB requests still surfaced as frontend
504even though the backend later completed with200Treat these as deployment observations, not hard API guarantees.
- Recommended starting browser mic cadence:
- chunk size:
5 seconds - acceptable range:
5-10 seconds - keep only
2-3chunks in flight at once This gives incremental transcript updates without trying to hold a single long browser request open.
- chunk size:
- For browser mic capture, rotate the recorder per chunk so each uploaded blob is a standalone file.
Do not assume
MediaRecorder.start(timeslice)later chunks will always be independently transcribable. - Do not treat this as the default production solution for live transcription.
Prefer
rtmswhen the user actually needs a live-audio product instead of a browser demo.
4) Confirm Storage / Webhook Inputs
- Fast mode file URL or upload path resolves.
- Batch input/output URIs are valid.
- AWS or pre-signed access is set correctly for S3 mode.
- Webhook URL is public HTTPS if you expect notifications.
5) Confirm Post-Processing Contract
- Decide whether downstream code expects
text_display, segments, or word-level timings. - Decide whether channel separation or diarization is required before shipping.
6) Quick Probes
- JWT generation works locally.
POST /aiservices/scribe/transcribesucceeds with a known small file.- For browser-uploaded files, backend forwarding should use
multipart/form-datato Zoom, not a JSONdata:URI wrapper. - Batch submit returns
201withjob_id. - Webhook signature verification works with the configured secret.
7) Fast Decision Tree
401/auth failure -> wrong credential pair or expired JWT.- Fast mode returns schema error -> wrong request body or config fields.
- Fast mode returns
413 Request Entity Too Largebefore the app logs anything -> reverse proxy limit, not Scribe. - Frontend returns
504but backend logs later show200-> browser/edge timeout race; poll by request ID instead of assuming failure. - Browser mic feature needs true continuous low-latency media instead of chunked uploads -> switch to
rtms, notscribe. - Browser mic chunk 1 works but chunk 2 onward is empty -> recorder/container boundary issue; restart the recorder for each chunk.
- Batch jobs queue but never complete -> storage auth / URI / webhook issues.
- Missing transcripts for some files -> inspect
/jobs/{jobId}/filesbefore re-submitting whole batch.
8) Source Checkpoints
Official docs
- https://developers.zoom.us/docs/ai-services/
- https://developers.zoom.us/docs/ai-services/scribe/
- https://developers.zoom.us/api-hub/ai-services/methods/endpoints.json
Raw docs in repo tooling output
tools/zoom-crawler/raw-docs/developers.zoom.us/docs/ai-services/