Scripts, stills and b-roll for UGC ads. Enough for 10 variants: $7.13.
Claude writes the hooks and scripts, GPT Image 2 puts your product in phone-camera scenes from one photo, and Seedance makes vertical b-roll. Add a voice or creator footage and test which hook wins.
Example: 10 ad variants for one product
About $0.71 per variant. Every image and clip bills, including the ones you discard.
| Item | Quantity and price | Cost |
|---|---|---|
| Hooks and scripts (Claude Sonnet 4.6) | 10 × $0.0091 | $0.09 |
| Product stills from your photo (GPT Image 2, 1K, 9:16) | 30 × $0.018 | $0.54 |
| Vertical b-roll clips (Seedance 2.0 Mini, 5 s) | 20 × $0.325 | $6.50 |
| 10 variants | $7.13 |
What APIsRouter makes, and what you add
APIsRouter makes the words and the pictures. The voice and the final cut stay with you.
- From APIsRouter: Hooks and scripts in the voice you ask for
- From APIsRouter: Stills of your product in new scenes, from one photo
- From APIsRouter: Vertical b-roll clips from a description
- From you: A voiceover, or footage of a real creator
- From you: Captions and music
- From you: The final cut in your editor
Hooks first, then the shots
- Write the hooks: Ask Claude Sonnet 4.6 on /v1/chat/completions for hooks, scripts and an opening shot for each.
- Shoot the product: Send one photo of the product to /v1/images/edits with gpt-image-2 and a scene per hook, at $0.018 a still.
- Add b-roll: Turn the other shots into vertical clips on /v1/videos/generations with seedance-2.0-mini, at $0.325 a clip.
import base64, requests
API = "https://api.apisrouter.com/v1"
headers = {"Authorization": "Bearer sk-your-apisrouter-key"}
hooks = requests.post(f"{API}/chat/completions", headers=headers, json={
"model": "claude-sonnet-4-6",
"messages": [{"role": "user", "content": "Write 10 UGC-style ad hooks and short scripts for a reusable water bottle, for TikTok. For each, describe one opening shot."}],
}).json()["choices"][0]["message"]["content"]
print(hooks)
still = requests.post(f"{API}/images/edits", headers=headers,
files={"image": open("bottle.jpg", "rb")},
data={"model": "gpt-image-2", "size": "941x1672",
"prompt": "The same bottle in a gym bag on a locker room bench, phone-camera look, morning light"},
).json()["data"][0]
data = requests.get(still["url"]).content if still.get("url") else base64.b64decode(still["b64_json"])
with open("still_01.png", "wb") as file:
file.write(data)Two ways to pay
Both fill one balance, spent per token, image and clip.
FAQ
How much do AI UGC ads cost?
On APIsRouter, the parts for 10 variants as above cost $7.13, about $0.71 each: a script, 3 product stills at $0.018 and 2 b-roll clips at $0.325.
Can it make talking-avatar UGC videos?
No. APIsRouter has no avatar, lip-sync or text-to-speech model. Use the scripts, stills and clips with your own voiceover or a real creator.
Can the video clips show my product?
No. Video on APIsRouter is text-to-video, so a clip follows your description but cannot copy your product photo. The stills can: they are made from your photo.
Can I try it for free?
Yes. Sign in and claim the $2 trial credit from your dashboard, no card needed. Top up from $10 after that.
Do I need accounts with Anthropic, OpenAI and ByteDance?
No. One APIsRouter key calls Claude, GPT Image 2 and Seedance, all paid from one balance.