
LinkedIn video uploads but never processes: ProRes fix
LinkedIn says a ProRes file may upload but not process. Probe the codec with Sume video inspect, then re-encode to H.264 MP4 with an exact video trim.
Sume Formats over the API: create and version a Format, call it, run bulk batches, get structured output, take webhooks, and debug failed runs.
Start with: What is a Sume Format? Turn an agent thread into one API call

LinkedIn says a ProRes file may upload but not process. Probe the codec with Sume video inspect, then re-encode to H.264 MP4 with an exact video trim.

LinkedIn Page video accepts 10 to 60 fps. A 120 fps phone clip or an 8 fps timelapse is outside that. Probe the rate, then conform it with Sume trim output.fps.
LinkedIn video ads accept 360 to 1920 pixels on each side. A 3840x2160 master is over the limit. Scale it to 1920x1080 with Sume video trim output, exact mode.

LinkedIn's video ad spec lists AAC or MPEG4 sound at under 64 kHz. Sume video inspect returns the audio codec and sample rate so you can test a file first.

Pinterest video ads need 4 seconds minimum, 15 minutes maximum. Sume trim cuts from 0.2 seconds, so read duration_seconds on the result before you upload.

List a Format's runs newest first with limit 1 to 100 and a cursor. There is no cross-Format list, so one call per Format. Curl loop to page through a batch.

Minimum video length per ad platform, read from each vendor page on 2026-10-08, against the 0.2 second floor of Sume video trim. One cut, one duration check.

The bulk API has no cancel-queue endpoint, and canceling a running child frees its slot for the next item. How to stop a runaway batch, and how to size queues.

A low wallet blocks a Format run at create with 402 insufficient_credits; a spend cap ends a running run as failed. Sizing a cap per item.

Sume's first-party Format catalog answers at the sume handle with 27 slugs, from UGC and product demos to try-on, product splashes and recreate. List and call.

Sume's generation_spend_cap_usd rejects 0 and anything above 500, and null means the $500 maximum. What to send on each item of a holiday bulk queue.

After you cancel a Sume Format run, usage shows the spend. How debited, held, refunded and final differ, and when the number is settled in a holiday batch.

A bulk queue holds 1 to 100 items, so 340 product videos need four queues. Split the list, key each queue, and remember workspace concurrency still applies.

A short Python loop that polls GET /v1/format-run-queues/{id} with backoff, waits for completed, and lists failed or canceled item indexes for a second queue.

When a Sume webhook signature will not verify, compare the 12-character secret fingerprint header before you debug the HMAC. Includes a Python verifier.

A completed bulk queue is not all succeeded. Read counts.failed, pick the failed indexes, and resend them under a new Idempotency-Key. Python, offline.

Bulk-run 200 product videos: two queues of 100 items, 8 runs in flight, 25 rounds. At 15 to 30 minutes a run that is about 6.25 to 12.5 hours.

incomplete_assembly means the run hit its time limit with generation jobs unfinished. Read pending_job_count, then continue with previous_run_id.

A Format run can satisfy your output_schema and still fail because primary_output_key is empty. Here is how to read it and fill the gap.

YouTube's Shorts page names square or vertical videos up to 3 minutes. 4:5 is taller than wide. Sume Timeline renders 1080x1350, so verify it after upload.

Coming from OpenAI json_object? Sume Format runs have no equivalent. strict false relaxes nothing. Bind a schema or take the built-in output shape.

If the wallet runs out during a bulk run, later child runs fail admission and become failed items. Check the balance, then resubmit with a fresh key.

mcp_unavailable means the per-turn tools never attached, so the run stopped before any turn. details.charged is false. Retry with a new Idempotency-Key.

output_extraction_failed has two reasons with opposite handling: reread a completed run, or report a host defect. Here is how to tell them apart.

This Format run error is on Sume's side, not your balance or input. details.retryable is false, so do not re-fire in a loop. Here is the handling.

To keep an ad format steady when the model changes, pin the Format, treat model as the orchestrator only, and log version, model and schema.

Sume lists 27 catalog Formats at the sume handle. An unlisted slug gives 404. Read description and io before you run one, then fork it to change it.

A missing Format is usually the wrong key: a personal key cannot see team Formats, and 403 workspace_key_required means the right team with the wrong key.

Reusing an Idempotency-Key with a changed Sume bulk-run payload returns 409 idempotency_conflict. Send only the edited hook under a new key.

A Format bulk queue holds up to 100 items and runs 1 to 16 at once. If items take equal time, 100 items need ceil(100/16) = 7 rounds at 16 and 25 rounds at 4.

Derive a Format bulk queue Idempotency-Key from a sha256 of its body. The same body replays 202 with the old queue; a changed body gives 409.

With generation_spend_cap_usd of $2 per bulk item, 100 items cap at $200 in total and 16 running items at $32 at once. Caps are ceilings, not prices.

Sume's catalog lists UGC-style Formats such as sume-close-camera-ugc and sume-mobile-app-ugc. Read each Format's io profile, then run it with a spend cap.

Each child in a Sume bulk queue is a run with its own spend cap. 100 items at $3 cap at most $300; the default $400 cap would allow $40,000. Set caps per item.

LinkedIn's image ad page allows GIFs of up to 250 frames. At 25 fps that is 10 seconds. For anything longer, send a video made with Sume trim or Timeline.

LinkedIn lists min and max sizes for 16:9, 1:1, 4:5 and 9:16 video ads. Set Timeline output width and height to a size inside each range: $0.10 per render.

Sume's API has no cancel-queue endpoint. Cancel each child with POST /v1/format-runs/{run_id}/cancel; the item frees its slot, and you pay for what already ran.

Read a reference clip with Sume reference ingest (300 s max, shots, OCR, audio), then start a sume-recreate Format run with your product and a spend cap.

Of the 27 Formats by Sume, 18 declare video output and 9 declare image output. The slug lists, how to read the io profile, and why to check before you call.

Sume bulk Format runs accept concurrency 1 to 16. It limits how many children start at once and does not promise throughput. What 100 ad items really do.

Sume ships 27 ready-made Formats at the sume handle. Which slugs fit which ad type, and how to read one with GET /v1/formats/sume/{slug} before paying.

Google Ads lists 16:9, 9:16 and 1:1 as primary and says ratios in between are allowed; a spec page also names 4:3, 2:3 and 4:5. Exact sizes for Sume Timeline.

Put the hook text in the instruction field, and put product data in input. Rules, limits and errors for varying an ad hook across Sume Format runs.

Instagram's creator page says upload the highest resolution possible but gives no pixel number. Sume Timeline's ceiling is 2160 per edge, so 1214x2160 vertical.

Google lists 720x1280 as the vertical minimum, TikTok in-feed 540x960 and its app bundle 720x1280. One Timeline output size clears them all, with the table.

A bulk queue returns 202 with the first `concurrency` items already running, up to 16. Order your 100 weekly ads so the best hooks are the first ones you see.

In a Sume bulk queue, a failed child reads format_run_failed and a canceled child reads format_run_canceled. The real reason is in the child run receipt.

Run 100 weekly ad proofs at 360p in one Sume bulk queue, approve 20, then queue those at 1080p. Video cost: $22.50 plus $22.50 instead of $112.50.