Video processing

Opt in to automatic video re-encoding so every target network receives a file it accepts, and understand how processing is billed.

Every social network has its own rules for video: accepted codecs and containers, maximum resolution and frame rate, file size caps, and quirks such as Instagram rejecting files whose metadata is not at the front. A video that publishes fine on one network can be rejected by another.

With video processing turned on, Outstand inspects each video on a post, re-encodes it only when needed, and sends every network a file it accepts. You upload one file and do not have to manage per-network variants yourself.

Turning it on

Video processing is opt-in per post. Set processMedia: true when you create a post:

curl -X POST https://api.outstand.so/v1/posts \
  -H "Authorization: Bearer $OUTSTAND_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "accounts": ["YOUR_INSTAGRAM_ACCOUNT_ID", "YOUR_TIKTOK_ACCOUNT_ID"],
    "containers": [
      {
        "content": "Behind the scenes of our launch",
        "media": [{ "url": "https://media.outstand.so/your-upload.mov", "filename": "launch.mov" }]
      }
    ],
    "processMedia": true
  }'

Without processMedia, nothing is re-encoded and nothing is billed: the file you uploaded is published exactly as supplied. The flag has no effect on posts without video.

Validation is always on, and free

Whether or not you opt in, Outstand inspects (probes) every video on a new post and checks it against the networks the post targets. Inspection is never billed.

  • Problems no re-encode can fix reject the request with a 422 and a message naming the network and the limit. These are a video that is too long or too short for a network, an aspect ratio outside what the network accepts, or a file below a network's minimum size. Fixing them would mean trimming or cropping your content, which Outstand does not do on your behalf.
  • Problems a re-encode can fix (codec, container, resolution, frame rate, file size, faststart, edit lists) are returned in the response warnings array and do not block the post. With processMedia: true they are fixed before publishing. Without it, the file is published as-is and the network has the final say.
  • If a video cannot be inspected (for example the URL is not reachable yet), the post is still created with a warning and the video is published as-is.

What gets produced

When a post opts in, Outstand decides which encoded files (outputs) the video needs for the networks the post targets.

No output

If the source already fits the shared output profile below - which every network accepts - no encode runs and nothing is billed. The original file is published.

The master output

Otherwise Outstand produces one shared master output that satisfies the format requirements of every network at once. All selected networks receive this same file, so targeting more networks does not multiply the work.

PropertyMaster output
Video codecH.264
Audio codecAAC, 128 kbps
ContainerMP4, with the metadata at the front (faststart) and no edit lists
ResolutionFits within 1920x1080 (1080p), aspect ratio preserved
Frame rateUp to 30 fps
Video bitrateFollows your source, capped at 10 Mbps

Outstand never upscales or up-encodes: a 720p source stays 720p, a 24 fps source stays 24 fps, and a low-bitrate source is not inflated. There is no surcharge for high-resolution or high-frame-rate sources - they are brought down to the profile above.

Network-specific outputs

A network gets its own output only when the master would still break that network's file size cap. The network-specific file is encoded to a size budget just under the cap, and a master is always produced alongside it as a fallback.

Whether this happens depends on the video's duration and bitrate, so it mostly affects long or high-bitrate videos. The most common case is Bluesky, which caps video at 100 MB: at the maximum master bitrate, a video longer than roughly 80 seconds exceeds it. Long videos to LinkedIn (500 MB cap), Instagram and Reddit (1 GB cap) or Facebook (10 GB cap) can also need one. Short and moderate-bitrate videos almost never do.

Checking progress

Encoding runs in the background after the post is created.

  • GET /v1/posts/{id} reports each video's state in containers[].media[].processing: a roll-up status (pending, processing, ready or failed), what the probe read off the file, each output with its kind (master or a network name), status and public URL, and the per-network issues the source would otherwise hit.
  • GET /v1/media/{id} returns the same pipeline state for a single uploaded file under video.

An empty renditions array is a success: it means the source already met every target and nothing needed encoding.

When a post is due to publish while an encode it needs is still running, publishing waits for it rather than sending a file it knows is wrong. If an encode fails, publishing falls back to the file you uploaded. The media URL stored on the post is always your original upload - the encoded file is substituted per network at publish time.

Pricing

Draft: the price and plan allowances on this page are not final.

Video processing is billed by the duration of each output Outstand produces.

  • Billing unit: one block = 10 seconds of output video.
  • Rounding: each output's duration is rounded up to the next full block, with a minimum of 1 block per output.
  • Per output: a master and a network-specific output of the same video are two outputs, each billed.
  • Allowance: every plan includes an allowance of processing. The allowance for each plan is listed on the pricing page.
  • Overage: usage beyond the allowance is billed at $0.005 per 10-second block (equivalent to $0.03 per output minute).

What is never billed:

  • Posts without processMedia: true.
  • Inspecting or validating a video.
  • A video that already fits the output profile, so no encode runs.
  • Failed encodes. You are only billed for outputs that finish successfully.
  • Reusing outputs that already exist (see below).

Examples

ScenarioOutputs producedBlocks
20s 1080p, 30 fps H.264/AAC MP4 with faststart, under 10 Mbps, to Instagram and TikTokNone - the source already fits0
25s 4K 60 fps video, to Instagram and TikTokMaster (25s, rounds up to 3 blocks)3
5s HEVC .mov clip, to XMaster (5s, minimum 1 block)1
90s 4K video at 10 Mbps or higher, to Instagram and BlueskyMaster (9 blocks) + Bluesky output (9 blocks), because the master would be over Bluesky's 100 MB cap18
The same 90s 4K video at 8 Mbps, to Instagram and BlueskyMaster only (9 blocks) - at this bitrate the master stays under 100 MB9

At the overage rate, the 3-block example costs $0.015 and the 18-block example costs $0.09.

Reusing a video

Outputs belong to the uploaded file, not to the post. If you use the same video (the same media URL) in a later post, outputs that already exist are reused and not billed again. Only an output that did not exist yet is produced and billed - for example, reposting the 90s video above to Bluesky after first posting it to Instagram only produces and bills the Bluesky output, because the master already exists.