screencastgen

Uploads Router

File upload endpoint for documents and reference media.

Source: web/backend/routers/uploads.py


Endpoints

POST /api/uploads

Upload a document file or reference audio/video file.

Request: multipart/form-data with file

Validation

Process

  1. Read the uploaded bytes.
  2. Persist the file through Storage Service.
  3. Create an UploadedFile row with ref_text unset.
  4. Return an UploadResponse.

The upload endpoint never calls or enqueues /transcribe. Pipeline workers transcribe reference audio on demand when a submitted job actually uses it.

Response

{
  "id": "uuid",
  "original_name": "voice.wav",
  "size_bytes": 123456,
  "content_type": "audio/wav"
}

GET /api/uploads/{file_id}/preview

Streams an uploaded file inline for new-job previews.

Preview is allowed for:

The response sets Content-Disposition: inline and uses a guessed media type when possible.


Dependencies

Uploads Router
├── Web Database         (async session)
├── DB Models            (UploadedFile)
├── Schemas              (UploadResponse)
├── Storage Service      (save_upload, get_upload_abs_path)
└── Web Config           (MAX_UPLOAD_SIZE_MB)

See Also