# Videxo > Videxo is a video processing API over HTTP. Describe a job in JSON (an input and a preset or options, for example POST /v1/transcode, or named inputs and a list of outputs on POST /v1/jobs), or send an ffmpeg command that names files by alias; Videxo compiles JSON to one ffmpeg command, runs the job and stores its outputs. Poll the job or wait for its webhook, then download the files. - JSON first: [Quickstart](https://videxo.io/docs), [Operations](https://videxo.io/docs/operations) (every output type and option) and [Presets](https://videxo.io/docs/presets). Every job also returns the ffmpeg command it runs (`ffmpeg_command`). - Raw ffmpeg: [Command rules](https://videxo.io/docs/commands) and [Migrating from your own ffmpeg](https://videxo.io/docs/migrate-from-ffmpeg). AI assistants and agents can use Videxo through its MCP server at https://api.videxo.io/mcp (Streamable HTTP, an OAuth sign-in or the API key as a Bearer token; the tools that need no account are at https://api.videxo.io/mcp/public): see [MCP server](https://videxo.io/docs/mcp). ## Get started - [Quickstart](https://videxo.io/docs): Create an API key, send a JSON request, poll the job until it ends and download its output. - [Playground](https://videxo.io/docs/playground): Build a request in the dashboard, see the command it compiles to and what it may cost, then run it on your account and get the outputs. - [Authentication and API basics](https://videxo.io/docs/api-basics): The API's address, API keys, headers, environments, response conventions and versioning. - [Jobs and their states](https://videxo.io/docs/jobs): How a job moves from queued to its end, what each state carries, and how to list, cancel and clean up jobs. - [Files](https://videxo.io/docs/files): Upload private inputs and download job outputs with expiring links. - [TypeScript SDK](https://videxo.io/docs/sdk): Install @videxo/sdk from npm and call the API from TypeScript: jobs, operation endpoints, uploads, downloads, webhooks, errors and retries. - [Swift SDK](https://videxo.io/docs/sdk/swift): The iOS and macOS client: upload in the foreground or in a background session with a client token or a one-time URL, follow a job, and refresh the token through your backend. - [Client tokens](https://videxo.io/docs/client-tokens): Let a mobile app or a web page upload files and follow jobs without an API key: short-lived tokens with a narrow grant, minted by your server. - [MCP server](https://videxo.io/docs/mcp): Connect Claude Code, Claude Desktop, Cursor, VS Code or another MCP client with your API key, or a client that signs in with OAuth, so an AI assistant can check commands and run jobs. - [Get help](https://videxo.io/docs/support): Open a support ticket from the dashboard or email us, and what to include so we can help quickly. ## Integrations - [Integrations](https://videxo.io/docs/integrations): Small runnable apps that take a file through Videxo in the stack you already use, with the API key kept on your server. - [curl](https://videxo.io/docs/integrations/curl): Every call of the round trip from a shell: upload a file, create a job from JSON, wait for it and download the outputs. - [Node with Express](https://videxo.io/docs/integrations/express): An Express app that creates jobs from JSON, takes uploads straight from the browser, verifies webhooks and hands out downloads. - [React with Next.js](https://videxo.io/docs/integrations/nextjs): A Next.js app whose route handlers create jobs and verify webhooks, and whose client component uploads straight to Videxo. - [SvelteKit](https://videxo.io/docs/integrations/sveltekit): A SvelteKit app whose form action creates jobs, whose +server.ts verifies webhooks, and whose page uploads straight to Videxo. - [Python with FastAPI](https://videxo.io/docs/integrations/python-fastapi): A FastAPI app with async httpx calls that creates jobs from JSON, takes uploads straight from the browser, verifies webhooks and hands out downloads. - [Go](https://videxo.io/docs/integrations/go): A Go server on net/http that creates jobs from JSON, takes uploads straight from the browser, verifies webhooks and hands out downloads. - [PHP without a framework](https://videxo.io/docs/integrations/php): A PHP without a framework example that creates jobs from JSON, uploads from the browser, verifies webhooks and redirects downloads. - [Laravel](https://videxo.io/docs/integrations/laravel): A Laravel example that creates jobs from JSON, uploads from the browser, verifies webhooks and redirects downloads. - [Ruby on Rails](https://videxo.io/docs/integrations/rails): A Ruby on Rails example that creates jobs from JSON, uploads from the browser, verifies webhooks and redirects downloads. - [iOS with Swift](https://videxo.io/docs/integrations/swift): A SwiftUI app that uploads a video straight to Videxo with an upload URL from your backend, has your backend create the job and follows it to the downloads. - [Android with Kotlin](https://videxo.io/docs/integrations/kotlin): An Android app that uploads a video straight to Videxo with an upload URL from your backend, has your backend create the job and follows it to the downloads. ## Guides - [Compress and convert](https://videxo.io/docs/guides/compress): Re-encode a video to a smaller file or another format with JSON: codec, quality, container and frame rate. - [Sizes and renditions](https://videxo.io/docs/guides/sizes): Resize a video, or write several sizes in one job with presets, keeping the shape. - [Vertical, square and rotated](https://videxo.io/docs/guides/vertical-and-square): Cut a landscape video to 9:16 or 1:1 for social feeds, letterbox it into a new frame, or rotate and flip it. - [Thumbnails](https://videxo.io/docs/guides/thumbnails): Take a poster frame, or frames at the times you choose, as JPEG or PNG images. - [Storyboards](https://videxo.io/docs/guides/storyboards): Lay out frames at a fixed interval in a grid on one image, for scrubbing previews and review sheets. - [GIF previews](https://videxo.io/docs/guides/gif-previews): Turn a few seconds of video into an animated GIF with a palette made for its frames. - [Extract audio](https://videxo.io/docs/guides/extract-audio): Take the sound out of a video, or convert audio to MP3, AAC, Opus, FLAC or WAV. - [Loudness](https://videxo.io/docs/guides/loudness): Bring the sound to a target loudness in LUFS with EBU R128, keeping the picture as it is. - [Background music](https://videxo.io/docs/guides/background-music): Mix a music track under the original sound at the level you choose. - [Watermark](https://videxo.io/docs/guides/watermark): Place a logo or image over every frame, at the position, size, opacity and time you choose. - [Picture in picture](https://videxo.io/docs/guides/picture-in-picture): Place a second video, scaled down, in a corner of the first. - [Trim and clip](https://videxo.io/docs/guides/trim): Cut a part of a video by start time and length, exact to the frame or at key frames without re-encoding. - [Join files](https://videxo.io/docs/guides/join): Put videos or sounds one after another into one file. - [Speed](https://videxo.io/docs/guides/speed): Speed up or slow down a video or its sound; the sound keeps its pitch. - [Fade in and out](https://videxo.io/docs/guides/fade): Fade the picture from and to black or white and the sound from and to silence. - [Blur a region](https://videxo.io/docs/guides/blur): Blur rectangles of the picture, or the whole frame, to hide faces, plates or private data. - [Colour and sharpness](https://videxo.io/docs/guides/colour): Adjust brightness, contrast, saturation, gamma and hue, and sharpen edges. - [Waveform video](https://videxo.io/docs/guides/waveform): Draw the sound of an audio file as a moving waveform or spectrum video, keeping the sound. - [Read media metadata](https://videxo.io/docs/guides/metadata): Read the container, duration and streams of a file with ffprobe, without encoding anything. - [Scene detection](https://videxo.io/docs/guides/scenes): Find where the shots of a video change, as a JSON list of scenes with their times and scores. - [Slideshows and image to video](https://videxo.io/docs/guides/slideshow): Turn still images into a video, each held for a time, with a slow zoom or pan and music. ## Raw ffmpeg - [Command rules](https://videxo.io/docs/commands): The supported ffmpeg command syntax, and the options, formats, codecs and filters a command can use. - [Migrating from your own ffmpeg](https://videxo.io/docs/migrate-from-ffmpeg): Send the ffmpeg commands you already run as jobs, by naming files with aliases, and move to JSON one job at a time. - [Migrating from Rendi](https://videxo.io/docs/migrate-from-rendi): Move Rendi run-ffmpeg-command calls to Videxo jobs: the same aliases, a different endpoint, header and response. ## Reference - [Operations](https://videxo.io/docs/operations): The JSON request in full: inputs, output types, every option with its range and the types that take it, defaults, and the per-operation endpoints. - [Presets](https://videxo.io/docs/presets): Named output settings such as web-720p and poster, what each one makes, its options and the ffmpeg command it runs. - [Fonts](https://videxo.io/docs/fonts): The fonts text layers and subtitles can use, the scripts each one covers, and their licences. - [Limits per plan](https://videxo.io/docs/limits): What a job may use on each plan, the request limits that apply to every plan, and how credits are counted. - [Errors](https://videxo.io/docs/errors): The shape of every error answer, the fifteen error codes with what to do about each, request ids, and how a failed job reports why. - [Idempotency](https://videxo.io/docs/idempotency): Retry job creation safely with an Idempotency-Key, and what the API returns for a retry, a conflict and an expired key. - [Rate limits](https://videxo.io/docs/rate-limits): How many requests a minute each plan allows per API key, and what a limited request returns. - [Webhooks](https://videxo.io/docs/webhooks): The signed request a job sends when it ends, how to verify it, and how deliveries are retried. - [Billing](https://videxo.io/docs/billing): Pay as you go and plans, the balance, what a job holds while it runs, and how paid plans are bought, changed and cancelled. - [Teams and organizations](https://videxo.io/docs/organizations): Organizations, members and their roles, invitations, and why API keys, jobs and billing belong to an organization. - [API changelog](https://videxo.io/docs/changelog): Changes to the API during the preview, newest first, with what to change in your code for a breaking one. ## API reference - [Overview and objects](https://videxo.io/docs/api) ## API: Jobs - [Create a job](https://videxo.io/docs/api/create-a-job) - [List jobs](https://videxo.io/docs/api/list-jobs) - [Get a job](https://videxo.io/docs/api/get-a-job) - [Cancel a job](https://videxo.io/docs/api/cancel-a-job) - [Delete a job's files](https://videxo.io/docs/api/delete-a-jobs-files) ## API: Operations - [List fonts](https://videxo.io/docs/api/list-fonts) - [Compile without running](https://videxo.io/docs/api/compile-without-running) - [Transcode a video](https://videxo.io/docs/api/transcode-a-video) - [Grab thumbnails](https://videxo.io/docs/api/grab-thumbnails) - [Make a storyboard](https://videxo.io/docs/api/make-a-storyboard) - [Make a GIF](https://videxo.io/docs/api/make-a-gif) - [Extract audio](https://videxo.io/docs/api/extract-audio) - [Join files](https://videxo.io/docs/api/join-files) - [Make a slideshow](https://videxo.io/docs/api/make-a-slideshow) - [Detect scenes](https://videxo.io/docs/api/detect-scenes) - [Read media metadata](https://videxo.io/docs/api/read-media-metadata) - [List presets](https://videxo.io/docs/api/list-presets) ## API: Files - [Download a signed output](https://videxo.io/docs/api/download-a-signed-output) - [Send bytes to a one-time upload URL](https://videxo.io/docs/api/send-bytes-to-a-one-time-upload-url) - [Create a one-time direct upload](https://videxo.io/docs/api/create-a-one-time-direct-upload) - [Get a fresh signed download URL](https://videxo.io/docs/api/get-a-fresh-signed-download-url) ## API: Client tokens - [Mint a client token for an app or a web page](https://videxo.io/docs/api/mint-a-client-token-for-an-app-or-a-web-page) - [Revoke a client token and its chain](https://videxo.io/docs/api/revoke-a-client-token-and-its-chain) - [Revoke an end user's client tokens](https://videxo.io/docs/api/revoke-an-end-users-client-tokens) ## API: Client - [What the client token may still do](https://videxo.io/docs/api/what-the-client-token-may-still-do) - [Create an upload with a client token](https://videxo.io/docs/api/create-an-upload-with-a-client-token) - [Read a job the client token may read](https://videxo.io/docs/api/read-a-job-the-client-token-may-read) - [List the jobs the client token may read](https://videxo.io/docs/api/list-the-jobs-the-client-token-may-read) ## API: Webhooks - [Get the signing secret](https://videxo.io/docs/api/get-the-signing-secret) - [Rotate the signing secret](https://videxo.io/docs/api/rotate-the-signing-secret) - [List webhook endpoints](https://videxo.io/docs/api/list-webhook-endpoints) - [Create the webhook endpoint](https://videxo.io/docs/api/create-the-webhook-endpoint) - [Get a webhook endpoint](https://videxo.io/docs/api/get-a-webhook-endpoint) - [Update a webhook endpoint](https://videxo.io/docs/api/update-a-webhook-endpoint) - [Delete a webhook endpoint](https://videxo.io/docs/api/delete-a-webhook-endpoint) - [List webhook deliveries](https://videxo.io/docs/api/list-webhook-deliveries) - [List a job's webhook deliveries](https://videxo.io/docs/api/list-a-jobs-webhook-deliveries) - [Send a delivery again](https://videxo.io/docs/api/send-a-delivery-again) ## API: Account - [The account and key behind the API key](https://videxo.io/docs/api/the-account-and-key-behind-the-api-key) - [The account's credits](https://videxo.io/docs/api/the-accounts-credits) ## Features - [All features](https://videxo.io/features): Every transformation with a JSON request that runs and the ffmpeg command it runs: transcode, social formats, clips, watermarks, colour, thumbnails, GIFs and audio. Planned features are marked Soon. - [Transcode and compress](https://videxo.io/features/transcode): Compress video, convert between H.264, H.265, VP9 and AV1, resize and set the frame rate. Examples: Compress and transcode, WebM for browsers, Renditions: several sizes in one job, Change the frame rate. - [Social formats](https://videxo.io/features/social-formats): Crop to 9:16 and 1:1, letterbox into a new frame, rotate and flip. Examples: Vertical 9:16, Square 1:1, Pad and letterbox, Rotate and flip. - [Clips and trims](https://videxo.io/features/clips-and-trims): Trim clips by time, join files, change the speed, fade in and out, and find the scenes of a video. Examples: Trim and clip, Join files, Slideshows and image to video, Transitions between parts, Title cards, Speed up or slow down, Scene detection, Fade in and out. - [Watermarks and overlays](https://videxo.io/features/watermarks): Overlay logos, watermarks, titles and captions, and place one video over another as picture in picture. Examples: Watermark or logo, Picture in picture, Text and titles, Burned-in subtitles. - [Colour and effects](https://videxo.io/features/color-and-effects): Correct colour with eq and hue, blur a region for privacy, sharpen after scaling. Examples: Colour correction, Blur a region, Sharpen. - [Thumbnails and GIFs](https://videxo.io/features/thumbnails-and-gifs): Pick thumbnails, lay out storyboards and contact sheets, and make GIF previews with a fitted palette. Examples: Thumbnails, Storyboards and contact sheets, GIF previews. - [Audio](https://videxo.io/features/audio): Extract and convert audio, normalise loudness, mix background music and draw waveforms. Examples: Extract and convert audio, Loudness normalisation, Background music, Waveform and spectrum video. ## File capabilities - Download links for outputs: Signed links in job responses and webhooks, valid for up to one hour and bounded by file retention. - Uploads from apps and browsers: One-time upload URLs for files up to 100 MB and your plan’s input limit. Private uploaded inputs stay for 24 hours. - Expiry by plan: Outputs are unavailable after their expires_at, set by your plan’s retention. Download the files you want to keep before then. - Deleting the stored files: DELETE /v1/jobs/{id}/files removes stored outputs before their retention ends. Deleted outputs stay listed with deleted_at. - Swift package: The iOS and macOS client, installed with Swift Package Manager: uploads with progress and job status through a client token. ## Guides - [For mobile apps](https://videxo.io/for/mobile-apps): Run ffmpeg for your Android, iOS, React Native or Flutter app on servers instead of the phone: compress, thumbnails, vertical cuts, GIF previews and audio. Your backend sends one request and gets a signed webhook. - [ffmpeg API](https://videxo.io/ffmpeg-api): ffmpeg as a service: send the ffmpeg command you already run to one REST API endpoint, or the same job in JSON, and get the files and a signed webhook back. Hosted ffmpeg, no ffmpeg server to run. - [ffmpeg in the cloud](https://videxo.io/ffmpeg-in-the-cloud): Run ffmpeg in the cloud without an AWS setup, a Docker image, a queue or storage of your own: a JSON request or your own ffmpeg command in, files with a SHA-256 and an expiry out, and a signed webhook. - [Serverless ffmpeg](https://videxo.io/serverless-ffmpeg): ffmpeg on AWS Lambda, Vercel or Cloudflare Workers means a binary in a layer and time and memory limits. Compare them, with sourced limits and prices, to one API call billed per minute of output. ## Compared with other services - [Alternatives](https://videxo.io/alternatives): Videxo beside the video APIs it is compared with, from Zencoder and Rendi to Creatomate and Shotstack: setup, jobs, outputs, webhooks and MCP, each from the service's own pages. - [Videxo and Zencoder](https://videxo.io/alternatives/zencoder): Compare Zencoder and Videxo for transcoding files over HTTP: jobs, outputs, notifications and streaming, with a map from Zencoder's API to Videxo's. - [Videxo and AWS Elemental MediaConvert](https://videxo.io/alternatives/mediaconvert): AWS Elemental MediaConvert and Videxo side by side: jobs and templates, S3 and webhooks, setup and AI assistants, with a map from MediaConvert's concepts to Videxo's. - [Videxo and Qencode](https://videxo.io/alternatives/qencode): Compare Qencode and Videxo for video jobs over an API: JSON or ffmpeg commands, tasks and jobs, callbacks and webhooks, and how Qencode's API maps to Videxo's. - [Videxo and Transloadit](https://videxo.io/alternatives/transloadit): Transloadit and Videxo compared for video: Assemblies and jobs, Robots and outputs, webhooks and MCP, with a map from Transloadit's concepts to Videxo's. - [Videxo and Rendi](https://videxo.io/alternatives/rendi): Rendi and Videxo both run ffmpeg commands over HTTP with input and output aliases. Compare JSON operations, webhooks, storage and MCP, and move a Rendi command in minutes. - [Videxo and JSON2Video](https://videxo.io/alternatives/json2video): JSON2Video and Videxo compared: scenes and parts, editors and templates, webhooks and MCP, with JSON2Video requests moved over and what does not carry. - [Videxo and Creatomate](https://videxo.io/alternatives/creatomate): Creatomate and Videxo compared: RenderScript and parts, template editor, webhooks and MCP, with Creatomate requests moved over and what does not carry. - [Videxo and Shotstack](https://videxo.io/alternatives/shotstack): Shotstack and Videxo compared: timelines and parts, Studio and templates, webhooks and MCP, with Shotstack edits moved over and what does not carry. ## Soon (planned, not available yet) - Adaptive streaming (HLS) and a player: Playback that adapts to the connection, with an embeddable player. - AI upscale: Raise a video to 1080p, 1440p or 4K with AI that restores detail, with optional smoother motion. - AI edit: Change the look of a clip with curated AI presets (colour grading, film looks, colourisation, restoration, weather, seasons, styles), or replace an object by category, with an optional reference photo. - Background removal for people: Cut a person out of their background in video, as an add-on. - Scene thumbnails and chapters: A thumbnail for each scene of a video, and chapters to match. - Storyboards with WebVTT: A sprite of frames and the WebVTT file that tells a player which frame belongs to which time. - Silence removal: Find the quiet parts of a recording and cut them out. - Automatic captions and transcripts: Speech to text as SRT, VTT and JSON with word times. - Signed playback: Playback links that only work for the viewers you sign them for. - Viewer analytics: Views, minutes watched, startup time and rebuffering for videos you deliver. - Resumable uploads: Uploads that pick up where they stopped after a lost connection, and files past 100 MB. ## Optional - [Everything in one file](https://videxo.io/llms-full.txt): all docs pages, the API reference and every feature example as Markdown. - [OpenAPI document](https://videxo.io/docs/openapi.json): the API as OpenAPI 3.1.