Verified 2026-07-21 while planning a Vine-archive revival for an old Tumblr blog:
vine.co and vine.co/v/<id> both return HTTP 200 but send x-frame-options: SAMEORIGIN. Every historical Vine embed (<iframe src="https://vine.co/v/<id>/embed/simple"> + platform.vine.co/static/scripts/embed.js) therefore renders a blank frame — the request succeeds, the browser refuses to frame it. Nothing you host can fix these: the iframe URL points at a domain you don't control, so the embedding posts themselves must be edited.video-player fields (visible via the keyless v1 API <blog>/api/read/json). Editing via the NPF edit route (PUT /v2/blog/{blog}/posts/{id} after GET ...?npf=true) converts legacy→NPF permanently (one-way). Reblog trail items are frozen — a broken embed inside a reblog's trail cannot be repaired via API at all; only originals are fixable. Video uploads are capped at ~20/day and are rejected entirely in reblog content (403.8008).