ToolAssay

Finish a short source video (<=60s, <=1080p, <=64MB, fetched by URL) into up to

Finish a short source video (<=60s, <=1080p, <=64MB, fetched by URL) into up to two platform-preset deliverables: caller-guided crop reframing between declared subject regions (never automatic detection), sidecar or burned-in subtitles with reflow, and EBU R128 loudness normalised to the preset target and measured, never claimed compliant. Includes a contact sheet. No rights clearance performed.

Answeringour last check, 2026-09-24
1 of 1checks answered this week
612 msmedian answer time
$0.5listed price per call
$0.5price it asked us

Paid test badge: not yet. The checks above are free: we call the tool without paying and read the payment request it sends back. The Verified badge needs paid calls whose answers match the promised output, and nobody can buy a badge.

Endpoint

POST https://video.api.williamrobinson.dev/v1/video/finish

CategoryImage and media
Provider hostvideo.api.williamrobinson.dev
Networkseip155:8453
Payment schemesexact
Self-reported calls, 30 days1 from 1 payers (the provider's figure, not ours)

Our checks, last 30 days

DayResultHTTPAskedTime
2026-09-24 valid payment request 402$0.5 612 ms

Example input (from the provider)

{
  "body": {
    "brand": null,
    "deliverables": [
      {
        "captions": "burned",
        "language": "en",
        "preset": "youtube-16x9",
        "sidecar": true
      },
      {
        "captions": "none",
        "language": null,
        "preset": "shorts-9x16",
        "sidecar": false
      }
    ],
    "options": {
      "captionFontSizeFraction": 0.045,
      "captionMaxCharsPerLine": 42,
      "captionMaxLines": 2,
      "normalizeLoudness": true
    },
    "sourceUrl": "https://interactive-examples.mdn.mozilla.net/media/cc0-videos/friday.mp4",
    "subjects": [
      {
        "box": {
          "h": 0.6,
          "w": 0.35,
          "x": 0.325,
          "y": 0.2
        },
        "fromS": 0,
        "toS": 6
      }
    ],
    "subtitles": [
      {
        "content": "1\n00:00:00,000 --> 00:00:02,000\nFriday afternoon at the switchboard\n\n2\n00:00:02,000 --> 00:00:04,000\nThe operators keep the calls moving\n\n3\n00:00:04,000 --> 00:00:06,000\nA vintage office comedy short\n",
        "format": "srt",
        "language": "en"
      }
    ]
  },
  "bodyType": "json",
  "method": "POST",
  "type": "http"
}

Promised output schema (from the provider)

{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "properties": {
    "input": {
      "additionalProperties": false,
      "properties": {
        "body": {
          "$schema": "https://json-schema.org/draft/2020-12/schema",
          "additionalProperties": false,
          "properties": {
            "brand": {
              "additionalProperties": false,
              "properties": {
                "logoPng": {
                  "contentEncoding": "base64",
                  "description": "Base64 PNG (<= 262144 bytes decoded), or null.",
                  "maxLength": 349528,
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "position": {
                  "enum": [
                    "top-left",
                    "top-right",
                    "bottom-left",
                    "bottom-right"
                  ],
                  "type": "string"
                },
                "widthFraction": {
                  "description": "Logo width as a fraction of output width.",
                  "maximum": 0.3,
                  "minimum": 0.05,
                  "type": "number"
                }
              },
              "required": [
                "logoPng",
                "position",
                "widthFraction"
              ],
              "type": [
                "object",
                "null"
              ]
            },
            "deliverables": {
              "items": {
                "additionalProperties": false,
                "properties": {
                  "captions": {
                    "enum": [
                      "burned",
                      "sidecar",
                      "none"
                    ],
                    "type": "string"
                  },
                  "language": {
                    "description": "Must reference a subtitles[] language when captions is not \"none\"; must be null when captions is \"none\".",
                    "type": [
                      "string",
                      "null"
                    ]
                  },
                  "preset": {
                    "enum": [
                      "youtube-16x9",
                      "shorts-9x16",
                      "reels-9x16",
                      "tiktok-9x16",
                      "square-1x1",
                      "feed-4x5"
                    ],
                    "type": "string"
                  },
                  "sidecar": {
                    "description": "Also produce the sidecar .vtt when captions is \"burned\".",
                    "type": "boolean"
                  }
                },
                "required": [
                  "preset",
                  "language",
                  "captions",
                  "sidecar"
                ],
                "type": "object"
              },
              "maxItems": 2,
              "minItems": 1,
              "type": "array"
            },
            "options": {
              "additionalProperties": false,
              "properties": {
                "captionFontSizeFraction": {
                  "default": 0.045,
                  "maximum": 0.12,
                  "minimum": 0.02,
                  "type": "number"
                },
                "captionMaxCharsPerLine": {
                  "default": 42,
                  "maximum": 80,
                  "minimum": 10,
                  "type": "integer"
                },
                "captionMaxLines": {
                  "default": 2,
                  "maximum": 4,
                  "minimum": 1,
                  "type": "integer"
                },
                "normalizeLoudness": {
                  "default": true,
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "sourceUrl": {
              "description": "Public HTTPS URL of the source video (mp4/mov/webm/mkv, <= 67108864 bytes, <= 60s, <= 1080p). Fetched by the service before processing.",
              "format": "uri",
              "maxLength": 2048,
              "type": "string"
            },
            "subjects": {
              "description": "Regions of interest the reframer must keep in view; empty means centre-crop.",
              "items": {
                "additionalProperties": false,
                "properties": {
                  "box": {
                    "additionalProperties": false,
                    "description": "Region of interest in source-pixel fractions.",
                    "properties": {
                      "h": {
                        "exclusiveMinimum": 0,
                        "maximum": 1,
                        "type": "number"
                      },
                      "w": {
                        "exclusiveMinimum": 0,
                        "maximum": 1,
                        "type": "number"
                      },
                      "x": {
                        "maximum": 1,
                        "minimum": 0,
                        "type": "number"
                      },
                      "y": {
                        "maximum": 1,
                        "minimum": 0,
                        "type": "number"
                      }
                    },
                    "required": [
                      "x",
                      "y",
                      "w",
                      "h"
                    ],
                    "type": "object"
                  },
                  "fromS": {
                    "maximum": 60,
                    "minimum": 0,
                    "type": "number"
                  },
                  "toS": {
                    "description": "Must be greater than fromS.",
                    "maximum": 60,
                    "minimum": 0,
                    "type": "number"
                  }
     

This page as JSON