Skip to main content
POST
/
api
/
v1
/
assets
/
{asset_id}
/
confirm
Confirm Upload
curl --request POST \
  --url https://roughy-api-staging.fly.dev/api/v1/assets/{asset_id}/confirm \
  --header 'Authorization: Bearer <token>'
{
  "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"
}

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.

Authorizations

Authorization
string
header
required

Either your Supabase session JWT (UI flows) or an API key minted via POST /api-keys (programmatic flows). Pass it as Authorization: Bearer <token>. The server inspects the token format and routes to JWT or API-key verification automatically.

Path Parameters

asset_id
string<uuid>
required

Response

Successful Response

Public projection of an assets row (no signed URLs).

id
string<uuid>
required
type
enum<string>
required
Available options:
audio,
video,
rendered_video,
cut_file
state
enum<string>
required

Lifecycle state, orthogonal to AssetType (content kind).

Available options:
pending_upload,
ready,
deleted
size_bytes
integer | null
required
content_type
string | null
required
duration_seconds
string | null
required
Pattern: ^(?!^[-+.]*$)[+-]?0*\d*\.?\d*$
created_at
string<date-time>
required