Plan a Black Friday spot free: billable minutes and cost in micros

Sume timeline-1.0 plan compiles a Black Friday spot without a job or a charge and returns segment_count, billable_minutes, and estimated_cost_usd_micros.

4 min readSume
All posts

Before you render a Black Friday spot, send the same body to POST /v1/timeline-1.0/plan. It returns object: timeline_plan with duration_seconds, segment_count, billable_minutes, estimated_cost_usd_micros, and a filtergraph_summary, and it creates no job, reserves no credits, and downloads no media. It needs no Idempotency-Key.

This is the plan section of Timeline 1.0 (read 2026-10-06). A 45-second spot is one billable minute, so expect an estimate for one minute at $0.10, which is 100000 in micros.

What does a plan check, and what does it miss?

A plan runs the schema, the Sume-host URL checks, and the compiler. It cannot predict warnings that depend on the media, such as a short source that is padded or looped.

Plan response fields (read 2026-10-06)
FieldMeaning
duration_secondsOutput length
segment_countVideo slots
billable_minutesRounded up from the spine length
estimated_cost_usd_microsEstimate in millionths of a dollar
filtergraph_summaryA summary of the compiled program

How do I call it?

Use the render body. The example is a 45-second spot with three slots of 15 seconds, so segment_count should be 3.

curl -X POST https://api.sume.com/v1/timeline-1.0/plan \
  -H "Authorization: Bearer $SUME_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "audio": { "url": "https://media.sume.com/artifacts/artf_demo/vo.wav",
               "duration_seconds": 45 },
    "video": [
      { "source_url": "https://media.sume.com/artifacts/artf_demo/a.mp4", "start": 0, "duration": 15 },
      { "source_url": "https://media.sume.com/artifacts/artf_demo/b.mp4", "start": 15, "duration": 15 },
      { "source_url": "https://media.sume.com/artifacts/artf_demo/c.mp4", "start": 30, "duration": 15 }
    ]
  }'

When is it worth doing?

Run it on every spot in a batch. A spine of 61 seconds bills two minutes, so a plan catches a script that ran over a minute before you pay for the render.

  • Confirm the live rate with GET /v1/catalog.
  • The render reserves ceil(audio.duration_seconds / 60) minutes, and a plan's billable_minutes follows the same rule.
  • A passing plan is not a guarantee: read the render's warnings[] as well.

Sources

Related posts

More in Use cases

All Use cases posts

Written by Sume