{"openapi":"3.1.0","info":{"title":"Video & Timecode Calc","version":"1.0.0","description":"SMPTE timecode including drop-frame, shutter angle, slow motion, 2:3 pulldown, frame rates, resolution and bitrate maths. One call, one computed answer, no accounts or API keys. Machine-payable over x402.","x-guidance":"Video & Timecode Calc: SMPTE timecode including drop-frame, shutter angle, slow motion, 2:3 pulldown, frame rates, resolution and bitrate maths. Use /timecode-convert to turn frames and timecode into each other (drop-frame aware), /timecode-math to add or subtract timecodes, /shutter-angle for angle and shutter speed, /slow-motion for capture vs playback rate, /frame-rate-info for exact rates and PAL speed-up, /pulldown-32 for telecine cadence, /resolution-info for aspect ratio and raw data rate and /video-bitrate-size for file size and bits per pixel. Each paid GET returns a computed verdict with the reasons, the source and what was NOT checked. A verdict of UNVERIFIED means a lookup failed: treat it as unknown. No account or key: pay per call in USDC over x402."},"servers":[{"url":"https://video-calc.x402tookit.com"}],"paths":{"/frame-rate-info":{"get":{"operationId":"frame_rate_info","summary":"Exact fraction and frame duration of 23.976 to 60 fps, and the speed-up and runtime change when converting to another rate.","description":"Exact fraction and frame duration of 23.976 to 60 fps, and the speed-up and runtime change when converting to another rate.","tags":["frame-rate","ntsc","pal","video"],"parameters":[{"name":"fps","in":"query","required":true,"description":"23.976, 24, 25, 29.97, 30, 48, 50, 59.94 or 60","schema":{"type":"string"}},{"name":"toFps","in":"query","required":false,"description":"Target rate for a straight frame-for-frame conversion (for example 25 for PAL speed-up)","schema":{"type":"string"}},{"name":"runtimeMinutes","in":"query","required":false,"description":"Runtime of the source in minutes, to get the converted runtime","schema":{"type":"number"}}],"responses":{"200":{"description":"The answer.","content":{"application/json":{"schema":{"type":"object","properties":{"verdict":{"type":["null","string"]},"summary":{"type":["null","string"]},"reasons":{"type":["array","null"],"items":{"type":"string"}},"fps":{"type":["null","string"]},"exactFraction":{"type":["null","string"]},"exactFps":{"type":["null","number"]},"frameDurationMs":{"type":["null","number"]},"nominalTimecodeRate":{"type":["null","number"]},"isNtscFraction":{"type":["boolean","null"]},"toFps":{"type":["null","string"]},"speedFactor":{"type":["null","number"]},"speedChangePercent":{"type":["null","number"]},"pitchChangeSemitones":{"type":["null","number"]},"sourceRuntimeMinutes":{"type":["null","number"]},"convertedRuntimeMinutes":{"type":["null","number"]},"runtimeDifferenceSeconds":{"type":["null","number"]},"degraded":{"type":["boolean","null"]},"notChecked":{"type":["array","null"],"items":{"type":"string"}},"source":{"type":["null","string"]},"asOf":{"type":["null","string"]},"disclaimer":{"type":["null","string"]}}},"example":{"verdict":"COMPUTED","summary":"24 fps is exactly 24/1 = 24 frames per second, 41.6667 ms per frame. Played frame-for-frame at 25: 4.167% faster, 100 min becomes 96 min.","reasons":["Frame-for-frame conversion changes speed and pitch by the ratio of the two rates."],"fps":"24","exactFraction":"24/1","exactFps":24,"frameDurationMs":41.66667,"nominalTimecodeRate":24,"isNtscFraction":false,"toFps":"25","speedFactor":1.041667,"speedChangePercent":4.1667,"pitchChangeSemitones":0.707,"sourceRuntimeMinutes":100,"convertedRuntimeMinutes":96,"runtimeDifferenceSeconds":-240,"degraded":false,"notChecked":["motion-compensated or pulled-down conversions (see /pulldown-32)","audio pitch correction after a speed change","…1 more"],"source":"computed locally (exact rationals)","asOf":"2026-10-12T00:51:07.435Z","disclaimer":"Screening signal computed from the named public source. Not financial, legal or investment advice; provided as is. Verify at the source before acting."}}}},"400":{"description":"A parameter was missing or out of range."},"402":{"description":"Payment Required"},"502":{"description":"The upstream source failed or timed out."}},"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.0200"},"protocols":[{"x402":{"network":"eip155:8453","scheme":"exact","currency":"USDC","endpoint":"https://video-calc.x402tookit.com/frame-rate-info"}},{"x402":{"network":"solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp","scheme":"exact","currency":"USDC","endpoint":"https://video-calc.x402tookit.com/frame-rate-info"}},{"x402":{"network":"eip155:137","scheme":"exact","currency":"USDC","endpoint":"https://video-calc.x402tookit.com/frame-rate-info"}},{"x402":{"network":"eip155:42161","scheme":"exact","currency":"USDC","endpoint":"https://video-calc.x402tookit.com/frame-rate-info"}}]}}},"/pulldown-32":{"get":{"operationId":"pulldown_32","summary":"2:3 pulldown cadence: which film frames land in which video fields and frames when 24 fps film is telecined.","description":"2:3 pulldown cadence: which film frames land in which video fields and frames when 24 fps film is telecined.","tags":["pulldown","telecine","film","ntsc"],"parameters":[{"name":"filmFrames","in":"query","required":true,"description":"Number of film frames to map, 1 to 240","schema":{"type":"integer"}},{"name":"startPhase","in":"query","required":false,"description":"0 (default) starts on a 2-field frame; 1 starts on a 3-field frame","schema":{"type":"integer"}}],"responses":{"200":{"description":"The answer.","content":{"application/json":{"schema":{"type":"object","properties":{"verdict":{"type":["null","string"]},"summary":{"type":["null","string"]},"reasons":{"type":["array","null"],"items":{"type":"string"}},"startPhase":{"type":["null","number"]},"fieldSequence":{"type":["null","string"]},"videoFrames":{"type":["array","null"],"items":{"type":"string"}},"filmFrames":{"type":["null","number"]},"fields":{"type":["null","number"]},"videoFrameCount":{"type":["null","number"]},"mixedFrameCount":{"type":["null","number"]},"filmFpsAfterSlowdown":{"type":["null","number"]},"videoFpsAfterSlowdown":{"type":["null","number"]},"degraded":{"type":["boolean","null"]},"notChecked":{"type":["array","null"],"items":{"type":"string"}},"source":{"type":["null","string"]},"asOf":{"type":["null","string"]},"disclaimer":{"type":["null","string"]}}},"example":{"verdict":"MAPPED","summary":"4 film frame(s) become 10 fields = 5 video frame(s); every 4 film frames make 5 video frames, 2 frame(s) here mix two film frames.","reasons":["Film frames alternate 2 fields, 3 fields, 2, 3, so 24 film fps becomes 60 fields per second, then 59.94 after the 0.1% NTSC slowdown (24 fps becomes 23.976)."],"startPhase":0,"fieldSequence":"AABBBCCDDD","videoFrames":["AA","BB","…3 more"],"filmFrames":4,"fields":10,"videoFrameCount":5,"mixedFrameCount":2,"filmFpsAfterSlowdown":23.976,"videoFpsAfterSlowdown":29.97,"degraded":false,"notChecked":["field dominance (upper or lower field first)","reverse telecine of real video","…1 more"],"source":"computed locally (2:3 cadence)","asOf":"2026-10-12T00:51:07.691Z","disclaimer":"Screening signal computed from the named public source. Not financial, legal or investment advice; provided as is. Verify at the source before acting."}}}},"400":{"description":"A parameter was missing or out of range."},"402":{"description":"Payment Required"},"502":{"description":"The upstream source failed or timed out."}},"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.0200"},"protocols":[{"x402":{"network":"eip155:8453","scheme":"exact","currency":"USDC","endpoint":"https://video-calc.x402tookit.com/pulldown-32"}},{"x402":{"network":"solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp","scheme":"exact","currency":"USDC","endpoint":"https://video-calc.x402tookit.com/pulldown-32"}},{"x402":{"network":"eip155:137","scheme":"exact","currency":"USDC","endpoint":"https://video-calc.x402tookit.com/pulldown-32"}},{"x402":{"network":"eip155:42161","scheme":"exact","currency":"USDC","endpoint":"https://video-calc.x402tookit.com/pulldown-32"}}]}}},"/resolution-info":{"get":{"operationId":"resolution_info","summary":"Aspect ratio, megapixels, common name and uncompressed data rate for a video frame size, chroma subsampling and fps.","description":"Aspect ratio, megapixels, common name and uncompressed data rate for a video frame size, chroma subsampling and fps.","tags":["resolution","aspect-ratio","video","data-rate"],"parameters":[{"name":"width","in":"query","required":true,"description":"Frame width in pixels","schema":{"type":"integer"}},{"name":"height","in":"query","required":true,"description":"Frame height in pixels","schema":{"type":"integer"}},{"name":"fps","in":"query","required":false,"description":"Frames per second for the data rate (default 24)","schema":{"type":"number"}},{"name":"bitDepth","in":"query","required":false,"description":"Bits per sample: 8 (default), 10, 12 or 16","schema":{"type":"integer"}},{"name":"chroma","in":"query","required":false,"description":"444, 422 or 420 (default 420)","schema":{"type":"string"}}],"responses":{"200":{"description":"The answer.","content":{"application/json":{"schema":{"type":"object","properties":{"verdict":{"type":["null","string"]},"summary":{"type":["null","string"]},"reasons":{"type":["array","null"],"items":{"type":"string"}},"width":{"type":["null","number"]},"height":{"type":["null","number"]},"aspectRatio":{"type":["null","string"]},"aspectDecimal":{"type":["null","number"]},"pixels":{"type":["null","number"]},"megapixels":{"type":["null","number"]},"commonName":{"type":["null","string"]},"bitsPerPixel":{"type":["null","number"]},"rawBitsPerFrame":{"type":["null","number"]},"rawMegabitsPerSecond":{"type":["null","number"]},"rawMegabytesPerSecond":{"type":["null","number"]},"rawGigabytesPerHour":{"type":["null","number"]},"fps":{"type":["null","number"]},"degraded":{"type":["boolean","null"]},"notChecked":{"type":["array","null"],"items":{"type":"string"}},"source":{"type":["null","string"]},"asOf":{"type":["null","string"]},"disclaimer":{"type":["null","string"]}}},"example":{"verdict":"COMPUTED","summary":"1920x1080 is 16:9 (1.7778:1), 2.0736 megapixels, Full HD 1080p; raw 597.2 Mbit/s at 24 fps.","reasons":["420 at 8-bit is 12 bits per pixel."],"width":1920,"height":1080,"aspectRatio":"16:9","aspectDecimal":1.77778,"pixels":2073600,"megapixels":2.0736,"commonName":"Full HD 1080p","bitsPerPixel":12,"rawBitsPerFrame":24883200,"rawMegabitsPerSecond":597.2,"rawMegabytesPerSecond":74.65,"rawGigabytesPerHour":268.7,"fps":24,"degraded":false,"notChecked":["compression (this is the raw, uncompressed rate)","alpha channels and audio","…1 more"],"source":"computed locally (pixel arithmetic)","asOf":"2026-10-12T00:51:07.955Z","disclaimer":"Screening signal computed from the named public source. Not financial, legal or investment advice; provided as is. Verify at the source before acting."}}}},"400":{"description":"A parameter was missing or out of range."},"402":{"description":"Payment Required"},"502":{"description":"The upstream source failed or timed out."}},"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.0200"},"protocols":[{"x402":{"network":"eip155:8453","scheme":"exact","currency":"USDC","endpoint":"https://video-calc.x402tookit.com/resolution-info"}},{"x402":{"network":"solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp","scheme":"exact","currency":"USDC","endpoint":"https://video-calc.x402tookit.com/resolution-info"}},{"x402":{"network":"eip155:137","scheme":"exact","currency":"USDC","endpoint":"https://video-calc.x402tookit.com/resolution-info"}},{"x402":{"network":"eip155:42161","scheme":"exact","currency":"USDC","endpoint":"https://video-calc.x402tookit.com/resolution-info"}}]}}},"/shutter-angle":{"get":{"operationId":"shutter_angle","summary":"Convert shutter angle to exposure time (and back) at a frame rate, plus the angle that avoids 50 or 60 Hz flicker.","description":"Convert shutter angle to exposure time (and back) at a frame rate, plus the angle that avoids 50 or 60 Hz flicker.","tags":["shutter-angle","exposure","cinema","frame-rate"],"parameters":[{"name":"fps","in":"query","required":false,"description":"Frame rate: 23.976, 24, 25, 29.97, 30, 48, 50, 59.94 or 60 (default 24)","schema":{"type":"string"}},{"name":"angle","in":"query","required":false,"description":"Shutter angle in degrees, above 0 to 360 (use this or shutterDenominator)","schema":{"type":"number"}},{"name":"shutterDenominator","in":"query","required":false,"description":"Shutter speed as 1/N seconds, give N (for example 48 for 1/48 s)","schema":{"type":"number"}}],"responses":{"200":{"description":"The answer.","content":{"application/json":{"schema":{"type":"object","properties":{"verdict":{"type":["null","string"]},"summary":{"type":["null","string"]},"reasons":{"type":["array","null"],"items":{"type":"string"}},"fps":{"type":["null","string"]},"angleDegrees":{"type":["null","number"]},"shutterSeconds":{"type":["null","number"]},"shutterDenominator":{"type":["null","number"]},"shutterMilliseconds":{"type":["null","number"]},"frameDurationMs":{"type":["null","number"]},"flickerSafe50Hz":{"type":["null","object"],"properties":{"hz":{"type":["null","number"]},"shutterSecondsNearest":{"type":["null","number"]},"shutterDenominatorNearest":{"type":["null","number"]},"angleNearest":{"type":["null","number"]}}},"flickerSafe60Hz":{"type":["null","object"],"properties":{"hz":{"type":["null","number"]},"shutterSecondsNearest":{"type":["null","number"]},"shutterDenominatorNearest":{"type":["null","number"]},"angleNearest":{"type":["null","number"]}}},"degraded":{"type":["boolean","null"]},"notChecked":{"type":["array","null"],"items":{"type":"string"}},"source":{"type":["null","string"]},"asOf":{"type":["null","string"]},"disclaimer":{"type":["null","string"]}}},"example":{"verdict":"COMPUTED","summary":"At 24 fps, 180 degrees = 1/48 s (20.833 ms).","reasons":["180 degrees is the classic cinema look: exposure of half the frame time."],"fps":"24","angleDegrees":180,"shutterSeconds":0.020833,"shutterDenominator":48,"shutterMilliseconds":20.8333,"frameDurationMs":41.6667,"flickerSafe50Hz":{"hz":50,"shutterSecondsNearest":0.02,"shutterDenominatorNearest":50,"angleNearest":172.8},"flickerSafe60Hz":{"hz":60,"shutterSecondsNearest":0.025,"shutterDenominatorNearest":40,"angleNearest":216},"degraded":false,"notChecked":["electronic-shutter and rolling-shutter artifacts","the camera's real available shutter steps","…1 more"],"source":"computed locally (angle / 360 / fps)","asOf":"2026-10-12T00:51:08.219Z","disclaimer":"Screening signal computed from the named public source. Not financial, legal or investment advice; provided as is. Verify at the source before acting."}}}},"400":{"description":"A parameter was missing or out of range."},"402":{"description":"Payment Required"},"502":{"description":"The upstream source failed or timed out."}},"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.0200"},"protocols":[{"x402":{"network":"eip155:8453","scheme":"exact","currency":"USDC","endpoint":"https://video-calc.x402tookit.com/shutter-angle"}},{"x402":{"network":"solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp","scheme":"exact","currency":"USDC","endpoint":"https://video-calc.x402tookit.com/shutter-angle"}},{"x402":{"network":"eip155:137","scheme":"exact","currency":"USDC","endpoint":"https://video-calc.x402tookit.com/shutter-angle"}},{"x402":{"network":"eip155:42161","scheme":"exact","currency":"USDC","endpoint":"https://video-calc.x402tookit.com/shutter-angle"}}]}}},"/slow-motion":{"get":{"operationId":"slow_motion","summary":"Slow-motion factor from capture and playback fps, output duration for real seconds, and capture fps needed.","description":"Slow-motion factor from capture and playback fps, output duration for real seconds, and capture fps needed.","tags":["slow-motion","frame-rate","overcranking","video"],"parameters":[{"name":"captureFps","in":"query","required":true,"description":"Frame rate the camera records at","schema":{"type":"number"}},{"name":"playbackFps","in":"query","required":false,"description":"Timeline or playback frame rate (default 24)","schema":{"type":"number"}},{"name":"realSeconds","in":"query","required":false,"description":"Seconds of real action recorded, to get the playback length","schema":{"type":"number"}},{"name":"wantedSlowFactor","in":"query","required":false,"description":"Instead: the slow factor you want (for example 4), to get the fps to shoot","schema":{"type":"number"}}],"responses":{"200":{"description":"The answer.","content":{"application/json":{"schema":{"type":"object","properties":{"verdict":{"type":["null","string"]},"summary":{"type":["null","string"]},"reasons":{"type":["array","null"],"items":{"type":"string"}},"captureFps":{"type":["null","number"]},"playbackFps":{"type":["null","number"]},"slowFactor":{"type":["null","number"]},"speedPercent":{"type":["null","number"]},"realSeconds":{"type":["null","number"]},"playbackSeconds":{"type":["null","number"]},"framesRecorded":{"type":["null","number"]},"degraded":{"type":["boolean","null"]},"notChecked":{"type":["array","null"],"items":{"type":"string"}},"source":{"type":["null","string"]},"asOf":{"type":["null","string"]},"disclaimer":{"type":["null","string"]}}},"example":{"verdict":"SLOW_MOTION","summary":"120 fps played at 24 fps is 5x slow motion (overcranked); 2 s of action lasts 10 s.","reasons":["Slow factor = capture fps / playback fps = 5."],"captureFps":120,"playbackFps":24,"slowFactor":5,"speedPercent":20,"realSeconds":2,"playbackSeconds":10,"framesRecorded":240,"degraded":false,"notChecked":["whether the camera can record at that rate at your resolution","motion-blur and shutter settings (see /shutter-angle)","…1 more"],"source":"computed locally (ratio of frame rates)","asOf":"2026-10-12T00:51:08.483Z","disclaimer":"Screening signal computed from the named public source. Not financial, legal or investment advice; provided as is. Verify at the source before acting."}}}},"400":{"description":"A parameter was missing or out of range."},"402":{"description":"Payment Required"},"502":{"description":"The upstream source failed or timed out."}},"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.0200"},"protocols":[{"x402":{"network":"eip155:8453","scheme":"exact","currency":"USDC","endpoint":"https://video-calc.x402tookit.com/slow-motion"}},{"x402":{"network":"solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp","scheme":"exact","currency":"USDC","endpoint":"https://video-calc.x402tookit.com/slow-motion"}},{"x402":{"network":"eip155:137","scheme":"exact","currency":"USDC","endpoint":"https://video-calc.x402tookit.com/slow-motion"}},{"x402":{"network":"eip155:42161","scheme":"exact","currency":"USDC","endpoint":"https://video-calc.x402tookit.com/slow-motion"}}]}}},"/timecode-convert":{"get":{"operationId":"timecode_convert","summary":"Convert frame counts to SMPTE timecode and back at 23.976 to 60 fps, with 29.97 and 59.94 drop-frame handled correctly.","description":"Convert frame counts to SMPTE timecode and back at 23.976 to 60 fps, with 29.97 and 59.94 drop-frame handled correctly.","tags":["timecode","smpte","drop-frame","video"],"parameters":[{"name":"fps","in":"query","required":false,"description":"23.976, 24, 25, 29.97, 30, 48, 50, 59.94 or 60 (default 24)","schema":{"type":"string"}},{"name":"frames","in":"query","required":false,"description":"A frame count to turn into timecode (use this or timecode)","schema":{"type":"integer"}},{"name":"timecode","in":"query","required":false,"description":"HH:MM:SS:FF, or HH:MM:SS;FF for drop-frame, to turn into a frame count","schema":{"type":"string"}},{"name":"dropFrame","in":"query","required":false,"description":"true for drop-frame counting (29.97 and 59.94 only); a ; before the frames also selects it","schema":{"type":"string"}}],"responses":{"200":{"description":"The answer.","content":{"application/json":{"schema":{"type":"object","properties":{"verdict":{"type":["null","string"]},"summary":{"type":["null","string"]},"reasons":{"type":["array","null"],"items":{"type":"string"}},"fps":{"type":["null","string"]},"exactFps":{"type":["null","string"]},"dropFrame":{"type":["boolean","null"]},"frames":{"type":["null","number"]},"timecode":{"type":["null","string"]},"realSeconds":{"type":["null","number"]},"timecodeSeconds":{"type":["null","number"]},"driftSecondsVsWallClock":{"type":["null","number"]},"degraded":{"type":["boolean","null"]},"notChecked":{"type":["array","null"],"items":{"type":"string"}},"source":{"type":["null","string"]},"asOf":{"type":["null","string"]},"disclaimer":{"type":["null","string"]}}},"example":{"verdict":"CONVERTED","summary":"17982 frames = 00:10:00;00 at 29.97 fps drop-frame; real time 599.999 s.","reasons":["Drop-frame: frame numbers (not real frames) are skipped at the start of each minute except every tenth, so the clock tracks real time."],"fps":"29.97","exactFps":"30000/1001","dropFrame":true,"frames":17982,"timecode":"00:10:00;00","realSeconds":599.9994,"timecodeSeconds":600,"driftSecondsVsWallClock":0.0006,"degraded":false,"notChecked":["the project's own start timecode offset","audio sample alignment","…1 more"],"source":"computed locally (SMPTE ST 12-1 drop-frame rule)","asOf":"2026-10-12T00:51:08.746Z","disclaimer":"Screening signal computed from the named public source. Not financial, legal or investment advice; provided as is. Verify at the source before acting."}}}},"400":{"description":"A parameter was missing or out of range."},"402":{"description":"Payment Required"},"502":{"description":"The upstream source failed or timed out."}},"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.0200"},"protocols":[{"x402":{"network":"eip155:8453","scheme":"exact","currency":"USDC","endpoint":"https://video-calc.x402tookit.com/timecode-convert"}},{"x402":{"network":"solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp","scheme":"exact","currency":"USDC","endpoint":"https://video-calc.x402tookit.com/timecode-convert"}},{"x402":{"network":"eip155:137","scheme":"exact","currency":"USDC","endpoint":"https://video-calc.x402tookit.com/timecode-convert"}},{"x402":{"network":"eip155:42161","scheme":"exact","currency":"USDC","endpoint":"https://video-calc.x402tookit.com/timecode-convert"}}]}}},"/timecode-math":{"get":{"operationId":"timecode_math","summary":"Add or subtract two SMPTE timecodes at a given frame rate, drop-frame aware, with the result in frames and seconds.","description":"Add or subtract two SMPTE timecodes at a given frame rate, drop-frame aware, with the result in frames and seconds.","tags":["timecode","smpte","edit","video"],"parameters":[{"name":"a","in":"query","required":true,"description":"First timecode, HH:MM:SS:FF (or ; before frames for drop-frame)","schema":{"type":"string"}},{"name":"b","in":"query","required":true,"description":"Second timecode","schema":{"type":"string"}},{"name":"op","in":"query","required":false,"description":"add (default) or subtract","schema":{"type":"string"}},{"name":"fps","in":"query","required":false,"description":"23.976, 24, 25, 29.97, 30, 48, 50, 59.94 or 60 (default 24)","schema":{"type":"string"}},{"name":"dropFrame","in":"query","required":false,"description":"true for drop-frame (29.97 and 59.94 only)","schema":{"type":"string"}}],"responses":{"200":{"description":"The answer.","content":{"application/json":{"schema":{"type":"object","properties":{"verdict":{"type":["null","string"]},"summary":{"type":["null","string"]},"reasons":{"type":["array","null"],"items":{"type":"string"}},"fps":{"type":["null","string"]},"dropFrame":{"type":["boolean","null"]},"aFrames":{"type":["null","number"]},"bFrames":{"type":["null","number"]},"resultFrames":{"type":["null","number"]},"result":{"type":["null","string"]},"realSeconds":{"type":["null","number"]},"degraded":{"type":["boolean","null"]},"notChecked":{"type":["array","null"],"items":{"type":"string"}},"source":{"type":["null","string"]},"asOf":{"type":["null","string"]},"disclaimer":{"type":["null","string"]}}},"example":{"verdict":"COMPUTED","summary":"01:00:00:00 + 00:00:30:12 = 01:00:30:12 (90762 frames) at 25 fps.","reasons":["Computed on plain frame counts."],"fps":"25","dropFrame":false,"aFrames":90000,"bFrames":762,"resultFrames":90762,"result":"01:00:30:12","realSeconds":3630.48,"degraded":false,"notChecked":["start-of-program offsets","negative timecodes (a negative result is refused)","…1 more"],"source":"computed locally (frame arithmetic)","asOf":"2026-10-12T00:51:09.010Z","disclaimer":"Screening signal computed from the named public source. Not financial, legal or investment advice; provided as is. Verify at the source before acting."}}}},"400":{"description":"A parameter was missing or out of range."},"402":{"description":"Payment Required"},"502":{"description":"The upstream source failed or timed out."}},"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.0200"},"protocols":[{"x402":{"network":"eip155:8453","scheme":"exact","currency":"USDC","endpoint":"https://video-calc.x402tookit.com/timecode-math"}},{"x402":{"network":"solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp","scheme":"exact","currency":"USDC","endpoint":"https://video-calc.x402tookit.com/timecode-math"}},{"x402":{"network":"eip155:137","scheme":"exact","currency":"USDC","endpoint":"https://video-calc.x402tookit.com/timecode-math"}},{"x402":{"network":"eip155:42161","scheme":"exact","currency":"USDC","endpoint":"https://video-calc.x402tookit.com/timecode-math"}}]}}},"/video-bitrate-size":{"get":{"operationId":"video_bitrate_size","summary":"File size from video bitrate and duration (MB, GB, GiB), bits per pixel, or the bitrate that hits a target size.","description":"File size from video bitrate and duration (MB, GB, GiB), bits per pixel, or the bitrate that hits a target size.","tags":["bitrate","file-size","encoding","video"],"parameters":[{"name":"seconds","in":"query","required":true,"description":"Duration in seconds","schema":{"type":"number"}},{"name":"bitrateMbps","in":"query","required":false,"description":"Total bitrate in megabits per second (use this or targetSizeMB)","schema":{"type":"number"}},{"name":"targetSizeMB","in":"query","required":false,"description":"Target file size in decimal megabytes, to get the bitrate","schema":{"type":"number"}},{"name":"width","in":"query","required":false,"description":"Frame width, with height and fps to compute bits per pixel","schema":{"type":"integer"}},{"name":"height","in":"query","required":false,"description":"Frame height","schema":{"type":"integer"}},{"name":"fps","in":"query","required":false,"description":"Frames per second","schema":{"type":"number"}},{"name":"audioKbps","in":"query","required":false,"description":"Audio bitrate in kbps when solving for target size (default 0)","schema":{"type":"number"}}],"responses":{"200":{"description":"The answer.","content":{"application/json":{"schema":{"type":"object","properties":{"verdict":{"type":["null","string"]},"summary":{"type":["null","string"]},"reasons":{"type":["array","null"],"items":{"type":"string"}},"seconds":{"type":["null","number"]},"totalBitrateMbps":{"type":["null","number"]},"sizeMB":{"type":["null","number"]},"sizeGB":{"type":["null","number"]},"sizeMiB":{"type":["null","number"]},"sizeGiB":{"type":["null","number"]},"sizePerMinuteMB":{"type":["null","number"]},"bitsPerPixel":{"type":["null","number"]},"degraded":{"type":["boolean","null"]},"notChecked":{"type":["array","null"],"items":{"type":"string"}},"source":{"type":["null","string"]},"asOf":{"type":["null","string"]},"disclaimer":{"type":["null","string"]}}},"example":{"verdict":"COMPUTED","summary":"10 Mbit/s for 3600 s is 4500 MB (4.5 GB, 4.191 GiB).","reasons":["0.201 bits per pixel at 1920x1080 and 24 fps."],"seconds":3600,"totalBitrateMbps":10,"sizeMB":4500,"sizeGB":4.5,"sizeMiB":4291.53,"sizeGiB":4.191,"sizePerMinuteMB":75,"bitsPerPixel":0.2009,"degraded":false,"notChecked":["container overhead (typically 1 to 3%)","variable-bitrate peaks","…1 more"],"source":"computed locally (bitrate x time / 8)","asOf":"2026-10-12T00:51:09.272Z","disclaimer":"Screening signal computed from the named public source. Not financial, legal or investment advice; provided as is. Verify at the source before acting."}}}},"400":{"description":"A parameter was missing or out of range."},"402":{"description":"Payment Required"},"502":{"description":"The upstream source failed or timed out."}},"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.0200"},"protocols":[{"x402":{"network":"eip155:8453","scheme":"exact","currency":"USDC","endpoint":"https://video-calc.x402tookit.com/video-bitrate-size"}},{"x402":{"network":"solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp","scheme":"exact","currency":"USDC","endpoint":"https://video-calc.x402tookit.com/video-bitrate-size"}},{"x402":{"network":"eip155:137","scheme":"exact","currency":"USDC","endpoint":"https://video-calc.x402tookit.com/video-bitrate-size"}},{"x402":{"network":"eip155:42161","scheme":"exact","currency":"USDC","endpoint":"https://video-calc.x402tookit.com/video-bitrate-size"}}]}}}}}