> ## Documentation Index
> Fetch the complete documentation index at: https://docs.kair.is/llms.txt
> Use this file to discover all available pages before exploring further.

# Single Audio Upload Flow

> Sequence diagram: uploading a complete audio file in one request.

# Single Audio Upload Flow

This document describes the sequence of operations when a user uploads a single audio file to a session.

```mermaid theme={null}
sequenceDiagram
    participant Frontend
    participant API
    participant DB
    participant Redis
    participant Worker

    Frontend->>API: POST /sessions (create session)
    API->>DB: Insert into sessions
    DB-->>API: session_id
    API-->>Frontend: session_id

    Frontend->>API: POST /sessions/{id}/audio (upload audio)
    API->>DB: Insert into audios
    API->>DB: Insert into transcriptions<br/>(audio_id=audio.id, audio_chunk_id=NULL)
    API->>DB: Insert into transcription_jobs
    API->>Redis: Push job to queue
    API-->>Frontend: job_id, audio_id

    Worker->>Redis: Pull job from queue
    Worker->>Worker: Transcribe audio
    Worker->>DB: Update transcriptions.transcription_text
    Worker->>DB: Update transcriptions.completed_at
    Worker->>DB: Update transcription_jobs.status=completed

    Worker->>DB: Insert into transcription_jobs (summarisation)
    Worker->>Redis: Push summarisation job

    Worker->>Redis: Pull summarisation job
    Worker->>Worker: Generate summary
    Worker->>DB: Insert into summarisations
    Worker->>DB: Update session
```

## Data Model

* **Sessions**: 1 per upload session
* **Audios**: 1 per session (the uploaded audio file)
* **Transcriptions**: 1 per session (references the audio file)
* **Summarisations**: 1 per session (generated from the transcription)
