Skip to main content

What it checks

If media[0].kind === "video" and pinterest.coverImageUrl is missing or empty, preflight fails before any upload work runs.

Why

Pinterest mandates a still-frame URL on every video pin — it’s the poster shown before play. Without one, POST /v5/pins returns a vague 400 (“missing cover_image_url”) with no indication that the failure was preventable. Catching it locally surfaces a clear rule + a pinterest.coverImageUrl field to point at.

Failure response

Remediation

Generate a still frame and host it somewhere publicly reachable. Quick option with ffmpeg:
Then upload the cover via POST /v1/media and reference its public URL — or pass any public CDN URL you already host:
video-pin.json