SMPTE timecode conversion: drop-frame and non-drop, frames, exact seconds

$0.005 USDC per call · Business, finance and compliance · POST /api/v1/timecode-convert · Id timecode-convert

Converts up to 200 timecodes, frame counts or times between SMPTE HH:MM:SS:FF (non-drop), HH:MM:SS;FF (drop-frame, 29.97 and 59.94), frame numbers and exact rational seconds, for an agent editing video, captions or logs at a stated frame rate. Rates are integers, a rational like 30000/1001, or the named 23.976, 29.97, 59.94, 119.88; any other decimal is rejected, never rounded. Integer arithmetic only; a label that does not exist (00:01:00;00 at 29.97 drop-frame) fails. It does not read media files, detect the rate or handle timecode user bits.

What you get

Off-by-frame errors at drop-frame boundaries ripple into every cut and caption cue; this gives the exact frame number and label.

Call it

Send the JSON body below to https://agents.writerslogic.com/api/v1/timecode-convert. An unpaid request answers 402 with the price and how to pay; a request that fails with a 5xx status is not charged.

curl -i -X POST https://agents.writerslogic.com/api/v1/timecode-convert \
  -H 'content-type: application/json' \
  -d '{"rate":"29.97","items":[{"timecode":"00:01:00;02"},{"frames":1800},{"timecode":"00:01:00;00"}]}'

Input

FieldTypeRequiredDescription
ratestring; length 1..16yes24, 25, 30, 50, 60, 24000/1001, or the names 23.976, 29.97, 59.94, 119.88.
itemsarray<object>; max 200 itemsyes

Example request body

{
  "rate": "29.97",
  "items": [
    {
      "timecode": "00:01:00;02"
    },
    {
      "frames": 1800
    },
    {
      "timecode": "00:01:00;00"
    }
  ]
}

Result

The response is { "data": ..., "_provenance": ... }. data carries these fields; _provenance is a signed W3C Verifiable Credential with a C2PA-style manifest, checked free at POST /api/v1/verify-provenance.

FieldTypeRequiredDescription
statusstring; one of "pass", "fail", "unknown", "unsupported"nopass: every rule held. fail: a rule was violated (see witnesses). unknown: the input lacks the evidence to decide. unsupported: outside what this engine covers. Missing evidence is never a pass.
ratestringnoResolved rational rate.
nominalFpsintegernoTimebase: frames per second counted by the label.
resultsarray<object>no
countsobjectnoItems per status.
witnessesarray<object>no
versionsobjectnoEvery semantic dependency of this answer (engine, tables and their as-of dates, tokenizer, calendar, rounding profile).
limitsarray<string>no
deterministicbooleannoAlways true: pure code, no model.

Pay and connect

Available through: x402 (USDC on Base), MCP. MCP clients reach it through the identifier-text-kit package.

Machine-readable