Initiate a TUS-resumable upload session.
The TUS-protocol response shape: 201 Created with Location
header pointing at the session’s PATCH endpoint, plus
Tus-Resumable and Upload-Expires. The JSON body is the
machine-parseable companion for non-browser callers.
Documentation Index
Fetch the complete documentation index at: https://docs.roughy.ai/llms.txt
Use this file to discover all available pages before exploring further.
An API key — either a programmatic key minted via POST /api-keys or a session-class key minted by POST /auth/login / an OAuth callback. Pass it as Authorization: Bearer <token>. UI flows can omit the header — the roughy_session HttpOnly cookie set by login + OAuth callbacks is read as a fallback.
Successful Response
POST /assets/upload-resumable JSON body.
The TUS-protocol surface lives in HTTP headers (Location,
Tus-Resumable, Upload-Expires); this body is the
machine-parseable companion for non-browser callers (CLI,
SDK, integration tests) so they can recover the asset id +
session id without parsing the Location URL. Browser TUS
clients ignore the response body.
Public projection of an assets row (no signed URLs).
{
"content_type": "audio/mpeg",
"created_at": "2026-05-02T08:54:52.423000Z",
"duration_seconds": "324.412",
"id": "019de7f7-3a52-74d1-9eeb-323e0bfb7bb9",
"size_bytes": 4823572,
"state": "ready",
"type": "audio_input"
}