Skip to main content

Media transcode

  • Sells as: the media-transcode product (a product-scoped API key). This capability has no separate product-face contract — its public product route reuses the capability contract below; see the Edge route table's Product face row.

Generic media/video processing capability. Submits transcode jobs (pluggable Stub / FFmpeg backend), extracts technical metadata, generates thumbnails, detects scene boundaries, and extracts audio tracks. Stateless outbound compute; no persistent store.

  • Group: Content & media
  • Contract: contracts/media-transcode/v1/openapi.yaml
  • Console: Manage the media-transcode product in the console →
  • Runbook: operational checklist for media-transcodeinternal (Vagary Labs ops; not part of this public site): docs/runbooks/capability-operations.md#media-transcode
  • Public base: https://api.vagarylabs.com (the consolidated API gateway — one host, per-brand sibling api.<zone>)
  • Auth: a product API key (vgk_…) issued from the console — Authorization: Bearer vgk_…
  • Product face (customer-keyed):
    • https://api.vagarylabs.com/product/v1/media/transcode

Edge route table

The routes this capability actually serves on the public edge — live-synced from GET https://api.vagarylabs.com/product/v1/_meta/catalog (snapshot v1). The metric is the request-granularity billing counter; the scope is the key permission required.

Product face (customer-keyed)

MethodPathMetricScope
POST/product/v1/media/transcodetranscode_requestswrite

Endpoints

MethodPathSummary
POST/v1/transcodeSubmit a transcode job (validates output_format ∈ {mp4,webm,hls,dash}, quality ∈ {360p,480p,720p,1080p,4k}).
POST/v1/metadataTechnical metadata for a video URL.
POST/v1/thumbnailSingle thumbnail at a timestamp.
POST/v1/thumbnailsN evenly-spaced thumbnails.
POST/v1/audioExtract the audio track.
POST/v1/scenesScene-boundary detection.
GET/healthLiveness + backend + tenancy posture.
GET/metricsPrometheus metrics.

Schemas

VideoRequest

FieldTypeDescription
video_urlstring
organization_idstringoptional; must match the verified tenant when a JWT is presented

TranscodeRequest

ThumbnailRequest

ThumbnailsRequest

TranscodeResult

FieldTypeDescription
job_idstring
statusstring
output_urlstring

Metadata

FieldTypeDescription
durationnumber
widthinteger
heightinteger
codecstring
fpsnumber
bitrateinteger
size_bytesinteger

Error

FieldTypeDescription
errorstring
reasonstring
detailobject

Generated by scripts/gen-capability-docs.py from contracts/media-transcode/v1/openapi.yaml — the contract IS the source of truth; edit the contract, not this page. The Edge route table section is synced from the live edge catalog snapshot (v1) — re-sync with python3 scripts/sync-edge-catalog.py.