Skip to main content

Documentation Index

Fetch the complete documentation index at: https://docs.auvy.ai/llms.txt

Use this file to discover all available pages before exploring further.

Transcription API

The transcription plane runs STT on already-ingested audio. It does not accept raw upload bytes — use the ingest plane first, then reference the attachment or asset by id.
Gladia keys: GET /v1/transcription/runtime checks API configuration. Pre-recorded STT runs on agent-end — set GLADIA_API_KEY there too.

Ingest first

PlaneRouteUse for
Chat attachmentsPOST /v1/chat/attachmentsComposer mic, meetings, trace audio
Vault assetsPOST /v1/assetsVoice assets for RAG

Runtime

GET /v1/transcription/runtime
const runtime = await auvy.transcription.runtime()
// { available, gladia_configured, reason? }

Transcribe

POST /v1/transcribe
JSON body:
{
  "source": { "type": "attachment_id", "id": "<uuid>" },
  "locale": "en",
  "diarize": true
}
const staged = await auvy.chat.uploadAttachment(wavFile, { brainId })
const { job_id } = await auvy.transcription.transcribe(
  { type: 'attachment_id', id: staged.id },
  { diarize: true, locale: 'en' },
)
const result = await auvy.transcription.waitForResult(job_id)
// { text, segments?: [{ speaker, text, start_ms?, end_ms? }] }

Poll job status

GET /v1/jobs/:id/status
When status is completed, result contains { text, segments? } for transcription jobs.

Meetings example

const staged = await auvy.chat.uploadAttachment(wav, { brainId })
const { job_id } = await auvy.transcription.transcribe(
  { type: 'attachment_id', id: staged.id },
  { diarize: true },
)
const result = await auvy.transcription.waitForResult(job_id)
await auvy.resources.meetings.patchPartial(meetingId, {
  transcript_segments: result.segments,
  transcription: { status: 'ready', finalized_at: new Date().toISOString() },
})
See Meetings for transcript read APIs and speaker assignment.