---
title: "Register a trusted native Desktop meeting"
method: POST
path: "/v1/desktop/native-recordings"
tags: ["Desktop"]
---

# Register a trusted native Desktop meeting

`POST /v1/desktop/native-recordings`

## Request

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

## Request body

- object
  - `device_id` string, required: Stable UUID generated by the desktop app on first launch.
  - `key` string, required: S3 key returned by the /presign call. Server validates it belongs to the caller's prefix.
  - `filename` string, required
  - `mime_type` 'audio/wav', nullable
  - `size_bytes` integer, required
  - `started_at` string, required: ISO-8601 UTC timestamp when the recording started.
  - `duration_ms` integer, required
  - `language` string, nullable
  - `title` string, nullable
  - `kind` 'meeting'
  - `workspace_id` integer, nullable: Workspace to route this recording into. When absent, a DB trigger falls back to the caller's default workspace. Server verifies the caller is a member of the target workspace.
  - `project_id` integer, nullable: Project within the target workspace. NULL = Inbox. Server verifies the project belongs to the workspace.

## Response `200`

Existing native meeting returned for a retry.

- object
  - `request_id` string, required
  - `status` 'TO_TRANSCRIBE' | 'TRANSCRIBING' | 'TO_STRUCTURE' | 'STRUCTURING' | 'COMPLETED' | 'FAILED', required
  - `access_source` string, required
  - `trial_started` boolean, required
  - `trial` object, nullable, required
  - `replayed` boolean, required

## Other responses

- `201`: Native meeting accepted.
- `401`: OAuth Desktop session required.
- `402`: Ordinary balance or trial fair-use exhausted.

---

[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)
