Sora to Sume pull request review: eight lines to check before merge

A reviewer's checklist for a Sora-to-Sume PR: duration and resolution types, status words, the 302 download, the webhook body, idempotency and removed fields.

4 min readSume
All posts

When you review a pull request that moves a service from the OpenAI Videos API to Sume, check eight things: the endpoint, the duration type, the size fields, the status words, the download call, the webhook handling, the Idempotency-Key and the fields that Sume refuses. Each is a place where code that compiles still fails at runtime.

The OpenAI deprecations page, read 2026-10-08, dates the removal of the Videos API to September 24, 2026 and names no replacement, so a reviewer cannot treat this PR as a rename; it is a vendor change.

The checklist

Ask the author to point at the line for each row. If a row has no line, the migration is not finished.

Review checklist, vendor docs read 2026-10-08
CheckOld Sora codeSume code must have
1. EndpointPOST /videosPOST /v1/videos on https://api.sume.com, JSON body
2. Durationseconds as a string, "8"duration as an integer, 8
3. Sizesize "1280x720"resolution and aspect_ratio; no size, since it returns 400
4. Status wordsqueued, in_progress, completed, failedpending, in_progress, completed, failed, cancelled
5. Downloaddownload_content with variantGET /v1/videos/{id}/content?index=0, 302, key sent
6. Webhookvideo.completed, video.failedjob.completed, job.failed, job.canceled; raw body; sume-v1 check
7. Retriesnone shown in the guideIdempotency-Key from your own record id
8. Dead fieldsmodel sora-2, input_referenceno seed, no provider.options; frame_images for a first frame

Why these eight

Rows 2 and 3 are the quiet ones: a string where an integer is wanted, or a size that Sume answers with 400 unsupported_parameter, only shows up when the code path runs. Row 4 matters because a loop that waits for queued will wait forever on pending. Row 5 is where tests that mock the client hide a missing API key on the content request.

Row 6 fails in production only: a framework that parses JSON before your handler runs gives you a body that no longer matches the signature. The signature is HMAC-SHA256 over the timestamp, a dot and the raw bytes, with a five minute tolerance.

Also ask for

Ask for a test that sends one request to Sume with a real key and a short prompt, and for the output of the scan for retired Sora ids attached to the PR. A clean scan plus the table above covers most of what goes wrong.

Do not let the PR also change the model or the prompts unless that is its stated purpose; compare outputs with the scorecard in a separate step so a regression has one cause.

Sources

Related posts

More in Developers

All Developers posts

Written by Sume