Loading...
Generate TikTok-Shop-grade scripts from any backend. Same engine the FlashFlow app runs on — hooks, beats, CTAs, b-roll, overlays. Free tier is rate-limited; paid tiers unlock higher volume + persona targeting.
One endpoint. No auth header required on the free tier — IP-bucketed rate limit applies. Paid usage attaches a session cookie or anx-api-keyheader (issue from your account once the closed beta opens).
curl -X POST https://flashflowai.com/api/public/generate-script \
-H "Content-Type: application/json" \
-d '{
"product_name": "Matcha Energy Powder",
"product_description": "Plant-based caffeine, no jitters",
"platform": "tiktok",
"risk_tier": "BALANCED"
}'Returns a complete script for one of the five supported short- or long-form platforms. Each call returns three hook variants (Safe / Balanced / Spicy) so you can A/B without re-prompting.
product_namestringrequired3-100 chars. The thing the creator is selling or talking about.
product_descriptionstringUp to 500 chars (4000 for youtube_long). Helps the model write specific copy.
platformenumtiktok | reels | youtube_shorts | youtube_long | facebook_reels — defaults to tiktok.
risk_tierenumSAFE | BALANCED | SPICY — controls how punchy / edgy the script gets.
persona_idstringPersona slug (e.g. skeptic, hype, parent). Free tier supports 8; paid tiers all 20+.
const res = await fetch("https://flashflowai.com/api/public/generate-script", {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({
product_name: "Matcha Energy Powder",
product_description: "Plant-based caffeine, no jitters",
platform: "tiktok", // tiktok | reels | youtube_shorts | youtube_long | facebook_reels
risk_tier: "BALANCED", // SAFE | BALANCED | SPICY
persona_id: "skeptic", // optional — see /admin/personas for the full set
}),
});
const { ok, skit } = await res.json();
if (!ok) throw new Error("Generation failed");
console.log(skit.hook_variants[0].spoken);{
"ok": true,
"skit": {
"hook_variants": [
{ "tier": "SAFE", "spoken": "...", "visual": "...", "on_screen": "..." },
{ "tier": "BALANCED", "spoken": "...", "visual": "...", "on_screen": "..." },
{ "tier": "SPICY", "spoken": "...", "visual": "...", "on_screen": "..." }
],
"hook_line": "...",
"beats": [
{ "t": "0:00", "action": "...", "dialogue": "...", "on_screen_text": "..." }
],
"cta_line": "...",
"cta_overlay": "...",
"b_roll": ["..."],
"overlays": ["..."]
}
}JSON body on failure: { "error": "...", "correlation_id": "..." }. Include the correlation_id in any support email.
x-ratelimit-remaining, x-ratelimit-reset.Higher rate limits, persona presets, and direct support are part of the closed-beta API tier. Drop a note and we'll get you set up.
Request API accessThe free script generator on this site uses the same endpoint. Pricing on /pricing.