Check a BFCM ad for price typos: pull frames at the price-card times

Before upload, pull stills at each price-card time with Sume video-frames (up to 24 per call) and compare them with your price sheet. Limits and failure modes.

4 min readSume
All posts

Before you upload a sale ad, extract a still at the time each price card is on screen and compare it with your price sheet. Sume's video frames takes up to 24 times in at[] for one clip of up to 300 seconds and returns durable images at source size, so a typo that a tired editor missed becomes visible. Black Friday is 2026-11-27 and Cyber Monday is 2026-11-30, and a wrong number on a sale ad is the sort of mistake you do not want to find on those days.

The call does not read text for you. It gives you the frames; a person, or your own OCR, does the comparing.

Pick the times

Take the middle of each price card, not its edge, so a fade does not leave the text half there. If a card runs from 3.0 to 5.5 seconds, ask for 4.2. Add the first frame and the last frame to catch a stray title or a missing end card. Each value must be at least 0 and below the duration, or the worker fails with frame_time_out_of_range.

A price-card check plan (read 2026-10-04)
CardOn screenFrame time
Hook0.0 to 2.5 s1.2 s
Offer3.0 to 5.5 s4.2 s
Bundle6.0 to 9.0 s7.5 s
End card10.0 to 12.0 s11.0 s

Run it

Use format: png for lossless stills if text is small, since the default is jpeg. Send an Idempotency-Key. The submit always returns 202 and you poll GET /v1/video-frames/:id until resource_status is ready.

curl -X POST https://api.sume.com/v1/video-frames \
  -H "Authorization: Bearer $SUME_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: bfcm-ad12-price-check-v1" \
  -d '{
    "video_url": "https://media.sume.com/artifacts/artf_demo/talk.mp4",
    "at": [1.2, 4.2, 7.5, 11.0],
    "format": "png"
  }'

Read it like a proofreader

Open each frame next to the price sheet row and compare three things: the number, the currency symbol and the end date. If one instant fails to extract, that frame's url is null while the job is still successful, so scan the whole frames[] list for nulls. The cost is the job's Modal compute, which the docs say is never more than the hold, and for four stills it is small.

If a typo is found, fix it at the source rather than patching around it. For a text overlay, re-burn it with caption cues for $0.20 on a clean master; for a baked-in price, re-edit the master. Then check again, because a fix can create a new mistake.

Keep the frames with the ad's file. When a customer disputes a price, a still from the exact upload is useful evidence.

  • Mid-card times, plus first and last frame.
  • Use png for small text.
  • Re-check after every fix.

Make it part of your release

Treat the frame check as a gate in your release checklist, not a favor. The steps are: finish the edit, export, import to Sume, run the frame call at the card times, compare against the price sheet, then upload. The gate is only worth having if the person who compares is not the person who typed the numbers.

For a big batch, generate the at[] list from the same sheet that holds the card times, so the check is derived from the data and not from memory. One call per ad keeps the count under the 24 frame limit; if an ad has more than 24 moments you care about, split it into two calls.

Also use the check after a re-burn. A midweek price change is a likely moment for a mistake, because the work is rushed. Re-run the same frame plan on the new version, and keep both sets of stills, one per version, with the ad's name and date.

Related posts

More in Use cases

All Use cases posts

Written by Sume