Skip to main content

Overview

Auto-Processing lets you automatically transcribe recordings when they’re uploaded, and optionally generate summaries when transcription completes — without any additional API calls. Benefits:
  • Zero-code processing pipeline — upload once, get transcription and summary automatically
  • Configurable per organization, project, end user, or device
  • Choose your preferred ASR provider and LLM provider at each level
  • Non-blocking — auto-processing errors never fail the upload
Use Cases:
  • Medical clinics: Upload recording → auto-transcribe → auto-generate SOAP notes
  • Sales teams: Upload call recording → auto-transcribe → auto-generate deal summary
  • Legal firms: Upload consultation → auto-transcribe → auto-generate legal memo
  • Enterprise: Upload meeting → auto-transcribe → auto-generate meeting notes

Quick Start

Enable auto-processing for an entire project with a single API call:
curl -X PUT https://api.bota.dev/v1/projects/proj_xxx/config/processing \
  -H "Authorization: Bearer sk_live_..." \
  -H "Content-Type: application/json" \
  -d '{
    "auto_transcription": {
      "enabled": true
    },
    "auto_summary": {
      "enabled": true,
      "template": "general_notes"
    }
  }'
Now every recording uploaded in this project will be automatically transcribed and summarized.

How It Works

Processing Flow

  1. Recording upload completes — your app calls POST /v1/recordings/:id/upload-complete
  2. Auto-transcription check — the system resolves the processing config for the recording’s device/end_user/project
  3. If enabled — a transcription job is queued automatically (same as calling POST /v1/recordings/:id/transcribe)
  4. Transcription completes — the worker checks the same config for auto-summary settings
  5. If enabled — a summary job is queued automatically (same as calling POST /v1/summaries)
  6. Webhooks firetranscription.completed and summary.completed events are sent as usual

Config Resolution

The system determines which processing settings to apply based on the recording’s context: This means you can set different processing rules at each level. See Hierarchical Configuration for details on how inheritance works.

Error Handling

Auto-processing is non-blocking. If auto-transcription or auto-summary fails:
  • The upload still completes successfully
  • The error is logged but does not affect the parent operation
  • You can always retry manually via the API
Auto-processing requires that the relevant AI provider API keys are configured. If you’re using user-provided API keys, they will be used automatically. Otherwise, the system falls back to Bota’s default keys.

Configuration

Processing Config Schema

{
  "processing": {
    "auto_transcription": {
      "enabled": false,
      "provider": "whisper"
    },
    "auto_summary": {
      "enabled": false,
      "provider": "gemini",
      "template": "general_notes"
    }
  }
}

Auto-Transcription Settings

FieldTypeDefaultDescription
enabledbooleanfalseEnable automatic transcription on upload
providerstringSystem defaultASR provider to use
Available ASR Providers:
ProviderDescription
whisperOpenAI Whisper (default) — 99 languages, word timestamps
deepgramDeepgram Nova-2 — real-time capable, speaker diarization
assemblyaiAssemblyAI — Best/Nano models
elevenlabsElevenLabs — high accuracy, language detection

Auto-Summary Settings

FieldTypeDefaultDescription
enabledbooleanfalseEnable automatic summary after transcription
providerstringSystem defaultLLM provider to use
templatestringgeneral_notesSummary template
Available LLM Providers:
ProviderDescription
geminiGoogle Gemini 2.0 Flash (default) — JSON output
openaiOpenAI GPT-4o — JSON mode
claudeAnthropic Claude Sonnet 4 — structured output
Available Templates:
TemplateIndustryOutput
general_notesGeneral meetingsKey points, action items, decisions
sales_callSalesPain points, budget, timeline, next steps
clinical_soapHealthcareSOAP notes (Subjective, Objective, Assessment, Plan)
legal_memoLegalFacts, issues, analysis, conclusion

Setting Config at Different Levels

Auto-processing uses the hierarchical configuration system, so you can set it at any level.

Project Level

Apply to all recordings in a project:
curl -X PUT https://api.bota.dev/v1/projects/proj_xxx/config/processing \
  -H "Authorization: Bearer sk_live_..." \
  -d '{
    "auto_transcription": { "enabled": true, "provider": "whisper" },
    "auto_summary": { "enabled": true, "template": "sales_call" }
  }'

End User Level

Override for a specific end user (e.g., a clinician who needs SOAP notes):
curl -X PUT https://api.bota.dev/v1/end-users/eu_drsmith/config/processing \
  -H "Authorization: Bearer sk_live_..." \
  -d '{
    "auto_summary": { "template": "clinical_soap" }
  }'
You only need to specify the fields you want to override. Dr. Smith’s recordings will still inherit auto_transcription and auto_summary.enabled from the project level — only the template changes.

Device Level

Override for a specific device:
curl -X PUT https://api.bota.dev/v1/devices/dev_abc123/config/processing \
  -H "Authorization: Bearer sk_live_..." \
  -d '{
    "auto_transcription": { "provider": "deepgram" }
  }'

Disable for a Specific Entity

Disable auto-processing at a lower level even if the parent has it enabled:
# Project has auto-transcription enabled, but disable for this device
curl -X PUT https://api.bota.dev/v1/devices/dev_abc123/config/processing \
  -H "Authorization: Bearer sk_live_..." \
  -d '{
    "auto_transcription": { "enabled": false }
  }'

Remove Override (Revert to Inherited)

Delete the processing override to revert to the parent’s settings:
curl -X DELETE https://api.bota.dev/v1/devices/dev_abc123/config/processing \
  -H "Authorization: Bearer sk_live_..."

Monitoring

Webhook Events

Auto-processing triggers the same webhook events as manual processing:
EventTrigger
transcription.startedAuto-transcription job begins
transcription.completedAuto-transcription finished
transcription.failedAuto-transcription failed
summary.startedAuto-summary job begins
summary.completedAuto-summary finished
summary.failedAuto-summary failed
Subscribe to these events to track processing status. See Webhook Events for payload details.

Checking Results

After auto-processing completes, retrieve results the same way as manual processing:
# Get transcription for a recording
curl https://api.bota.dev/v1/transcriptions/txn_abc123 \
  -H "Authorization: Bearer sk_live_..."

# Get summary
curl https://api.bota.dev/v1/summaries/sum_abc123 \
  -H "Authorization: Bearer sk_live_..."

Verifying Current Config

Check the resolved processing config for any entity:
curl https://api.bota.dev/v1/devices/dev_abc123/config/processing \
  -H "Authorization: Bearer sk_live_..."
{
  "data": {
    "auto_transcription": {
      "enabled": true,
      "provider": "whisper"
    },
    "auto_summary": {
      "enabled": true,
      "provider": "gemini",
      "template": "clinical_soap"
    }
  }
}

Troubleshooting

Recording Uploaded But Not Auto-Transcribed

Check:
  1. Processing config is enabled: GET /v1/devices/:id/config/processing
  2. Recording reached uploaded status (check recording.uploaded webhook)
  3. ASR provider API key is configured (system default or user-provided)

Auto-Transcription Works But No Summary

Check:
  1. auto_summary.enabled is true in resolved config
  2. Transcription completed successfully (not failed)
  3. LLM provider API key is configured

Wrong Provider or Template Used

Config is resolved from the recording’s context at the time of processing. Check which level the setting is coming from:
# Check device-level override
GET /v1/devices/:id/config/processing

# Check end-user-level override
GET /v1/end-users/:id/config/processing

# Check project-level config
GET /dashboard/projects/:projectId/config
A more specific level always takes precedence. To revert to the parent’s setting, delete the override at the lower level.

Hierarchical Config

Learn how config inheritance works

Create Transcription

Manual transcription API reference

Create Summary

Manual summary API reference

Webhook Events

Subscribe to processing events