---
title: "Start a desktop recording session"
method: POST
path: "/v1/desktop/sessions"
tags: ["Desktop"]
---

# Start a desktop recording session

`POST /v1/desktop/sessions`

## Request

- Base URL: `https://api.quillhub.ai`
- URL: `https://api.quillhub.ai/v1/desktop/sessions`
- Auth: HTTP bearer

Creates a new desktop recording session, allocates a `request` row, and returns the first batch of 30 presigned S3 PUT URLs (covering ~5 minutes of 10-second WAV chunks).

## Request body

- object
  - `device_id` string, required: Stable UUID generated by the desktop app on first launch.
  - `started_at` string, required: ISO-8601 UTC timestamp when the recording started.
  - `title` string: Optional user-provided recording title.

## Response `201`

Session created.

- object
  - `session_id` string, required: The request.id for this session, used in extend/finalize/GET calls and for polling GET /v1/transcriptions/:id.
  - `upload_urls` object[], required
    - `seq` integer, required
    - `presigned_url` string, uri, required
    - `key` string, required
  - `finalize_url` string, uri, required

## Other responses

- `401`: Missing or invalid Bearer token.

---

[API](https://skmtc.dev/quillhub/apis/quillhub-public-api.md) · [All operations](https://skmtc.dev/quillhub/apis/quillhub-public-api/llms.txt) · [OpenAPI document](https://skmtc.dev/quillhub/apis/quillhub-public-api/revisions/5bd42ee9d967?raw)
