{"slug":"medien-halowerk-com-v1-keyframes-dd7818","title":"Takes a video by URL or inline base64 and reports where the picture changes","host":"medien.halowerk.com","method":"POST","resource":"https://medien.halowerk.com/v1/keyframes","category":"image","description":"Takes a video by URL or inline base64 and reports where the picture changes. FFmpeg measures the difference between consecutive frames; every jump above the threshold starts a new scene, and the answer lists each scene with start, end, duration and the fraction of the running time it covers, plus th","price_listed":0.03,"price_asked":0.03,"state":"answering","state_label":"Answering","checks_7d":1,"answered_7d":1,"latency_ms_median":1158,"reported_calls_30d":2,"reported_payers_30d":1,"networks":["eip155:8453"],"badge":"unverified","paid_checks_7d":0,"paid_ok_7d":0,"example_input":{"body":{"duration_minutes":3,"include_thumbnails":true,"scene_threshold":0.35,"source":{"url":"https://example.com/film.mp4"}},"bodyType":"json","method":"POST","type":"http"},"output_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","properties":{"input":{"additionalProperties":false,"properties":{"body":{"additionalProperties":false,"properties":{"duration_minutes":{"default":1,"description":"Length of the video in started minutes — this is what you are billed for. A longer video is refused with its real duration and nothing is charged; a shorter one simply costs what you declared, and the answer says how much less it would have been.","maximum":30,"minimum":1,"type":"integer"},"include_thumbnails":{"default":false,"description":"Render one JPEG per scene and return it base64.","type":"boolean"},"max_scenes":{"default":100,"description":"Ceiling on returned scenes. What is dropped is counted and reported.","maximum":400,"minimum":1,"type":"integer"},"max_thumbnails":{"default":20,"description":"Ceiling on rendered thumbnails, independent of the scene count.","maximum":60,"minimum":1,"type":"integer"},"min_scene_seconds":{"default":0.4,"description":"Merge cuts closer together than this. Guards against flicker being read as a cut.","maximum":60,"minimum":0,"type":"number"},"scene_threshold":{"default":0.35,"description":"Frame-to-frame difference above which a new scene starts. Lower finds more, higher finds fewer.","maximum":0.95,"minimum":0.05,"type":"number"},"source":{"additionalProperties":false,"description":"The video. Either url or content_base64.","properties":{"content_base64":{"description":"The video inline, base64. Larger files must come by url.","maxLength":12000000,"type":"string"},"filename":{"maxLength":260,"type":"string"},"url":{"description":"Public http(s) URL of the video.","maxLength":2048,"type":"string"}},"type":"object"},"thumbnail_width":{"default":160,"description":"Width of the thumbnails; height follows the aspect ratio.","maximum":640,"minimum":32,"type":"integer"}},"required":["source"],"type":"object"},"bodyType":{"enum":["json","form-data","text"],"type":"string"},"method":{"enum":["POST","PUT","PATCH"],"type":"string"},"type":{"const":"http","type":"string"}},"required":["type","method","bodyType","body"],"type":"object"}},"required":["input"],"type":"object"},"history":[{"day":"2026-09-24","reachable":true,"status":402,"valid_402":true,"asked_usdc":0.03,"price_match":true,"latency_ms":1158,"error":null}],"description_full":"Takes a video by URL or inline base64 and reports where the picture changes. FFmpeg measures the difference between consecutive frames; every jump above the threshold starts a new scene, and the answer lists each scene with start, end, duration and the fraction of the running time it covers, plus the raw detection score positions.","last_updated":"2026-09-21T09:59:33.483Z","schemes":["exact"]}