Sora 2 Watermark Remover (AI Inpainting) avatar
Sora 2 Watermark Remover (AI Inpainting)
Under maintenance

Pricing

$300.00 / 1,000 results

Go to Apify Store
Sora 2 Watermark Remover (AI Inpainting)

Sora 2 Watermark Remover (AI Inpainting)

Under maintenance

Developed by

Tab Tab Labs

Tab Tab Labs

Maintained by Community

Remove the visible Sora 2 watermark from local or hosted URLs. Motion-aware AI inpainting, batch runs, 4K-safe, and a simple API.

0.0 (0)

Pricing

$300.00 / 1,000 results

0

22

22

Last modified

4 days ago

Sora 2 Watermark Cleaner — Drop‑in Video Watermark Removal API

Clean AI‑generated video watermarks with a single HTTP call. This Actor turns watermark removal into a simple, reliable API you can wire into apps, automations, and agent workflows.

Supports both Sora 2 and Sora 2 Pro videos up to 15s in length.

Generations take between 1 to 2 minutes to complete

Clean a local file

Set once:

export APIFY_TOKEN='YOUR_API_TOKEN'
export ACTOR_SLUG='tabtablabs~sora-2-watermark-remover'
export INPUT_FILE='input_video.mp4'
export OUTPUT='output_video.mp4'
export KEY="$(basename "${INPUT_FILE}")"
  1. Local file → upload to store → binary out
# Create a fresh apify storage (returns id)
export STORE_ID=$(curl -fsS -X POST "https://api.apify.com/v2/key-value-stores?token=${APIFY_TOKEN}" -H 'content-type: application/json' -d '{}' | jq -r '.data.id')
# Upload the video to the newly created storage under ${KEY}
curl -fsS -X PUT "https://api.apify.com/v2/key-value-stores/${STORE_ID}/records/${KEY}?token=${APIFY_TOKEN}" -H 'content-type: video/mp4' --data-binary @"${INPUT_FILE}"
# Run the Actor and get cleaned MP4 output
curl -fsS -X POST "https://api.apify.com/v2/acts/${ACTOR_SLUG}/run-sync?token=${APIFY_TOKEN}" -H 'content-type: application/json' -d "{\"kvFileKey\":\"${KEY}\",\"storeId\":\"${STORE_ID}\"}" -o "${OUTPUT}"

Clean an MP4 URL

You can pass in any hosted MP4 URL.

To find the URL directly from Sora, go to https://sora.chatgpt.com

  • Open the page that plays your video.
  • Open DevTools (Right‑click → Inspect, or Cmd+Opt+I / Ctrl+Shift+I).
  • Elements tab: press Cmd/Ctrl+F and search for “webkit-playsinline”.
  • Then look for the src on the same line.

Example element:

<video playsinline="" webkit-playsinline="" preload="auto" loop="" src="https://videos.openai.com/vg-assets/...=oaivgprodscus" poster="..." style="width: 100%; height: 100%; object-fit: cover;"></video>

Example (truncated/anonymized — copy the full URL you see):

https://videos.openai.com/vg-assets/.../videos/.../md.mp4?...&az=oaivgprodscus
  1. Remote URL → binary out
export VIDEO_URL='https://videos.openai.com/vg-assets/.../videos/.../md.mp4?...&az=oaivgprodscus'
curl -fsSL -X POST \
"https://api.apify.com/v2/acts/${ACTOR_SLUG}/run-sync?token=${APIFY_TOKEN}" \
-H 'content-type: application/json' \
-d "{\"videoUrl\": \"${VIDEO_URL}\"}" \
-o "${OUTPUT}"
  1. JSON workflow → metadata with publicUrl
curl -fsSL -X POST \
"https://api.apify.com/v2/acts/${ACTOR_SLUG}/run-sync-get-dataset-items?token=${APIFY_TOKEN}" \
-H 'content-type: application/json' \
-d '{"videoUrl":"https://videos.openai.com/vg-assets/.../videos/.../md.mp4?...&az=oaivgprodscus"}'

Other Methods

JavaScript (fetch, binary)

const token = process.env.APIFY_TOKEN;
const slug = process.env.ACTOR_SLUG; // e.g., "YOUR_USERNAME~apify"
const resp = await fetch(`https://api.apify.com/v2/acts/${slug}/run-sync?token=${token}`, {
method: 'POST',
headers: { 'content-type': 'application/json' },
body: JSON.stringify({ videoUrl: 'https://example.com/video.mp4' })
});
const buf = Buffer.from(await resp.arrayBuffer());
await fs.promises.writeFile('output_video.mp4', buf);

Python (requests, JSON metadata)

import os, requests
token = os.environ['APIFY_TOKEN']
slug = os.environ['ACTOR_SLUG']
url = f"https://api.apify.com/v2/acts/{slug}/run-sync-get-dataset-items?token={token}"
r = requests.post(url, json={"videoUrl": "https://example.com/video.mp4"})
r.raise_for_status()
items = r.json().get('items', [])
print(items[0]['publicUrl'])

Limitations

  • Videos must be less than 32 MB
  • This algorithm uses contrast detection for the Sora watermark, scenes with low contrast may not be able to detect the watermark properly.