ppl.studio
AI UGC API · REST

The AI UGC API.Creators, product photos, videos and scripts — one key.

Everything the ppl.studio dashboard does, over HTTP. Turn a product page into a finished 9:16 creator video, or call any single step — a photo, a script, a Veo clip, a lip-sync — from your app, your automations or your agent.

terminal — start a video run
curl https://ppl.studio/api/v1/flows \
  -H "Authorization: Bearer $PPL_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "preset": "creator-ugc-video",
    "briefSource": { "mode": "url", "value": "https://yourstore.com/products/glow-serum" },
    "creatorSlug": "mia"
  }'

# → { "ok": true, "data": { "runId": "3f1c9a…" } }

182

REST endpoints

Everything the dashboard does, one key.

14

Ready workflows

Creator video, testimonial, app demo, carousel, photo packs…

$0

Markup on generation

Gemini and Veo bill your own Google key directly.

1080×1920

Finished MP4

Captions burned in, ready for TikTok, Reels and Shorts.

What teams build with it

The same engine the dashboard runs, without anyone clicking through it.

Ad creative at volume

Agencies and performance teams: one brief in, twenty hook variants out, each a finished 9:16 video — then into the ad account.

UGC inside your product

Shopify apps, marketplaces, store builders: turn a merchant's product page into creator photos and a video without leaving your UI.

Automations

n8n, Make, Zapier's HTTP step or a cron job: a new product lands, a photo pack and a TikTok video follow on their own.

AI agents

Give Claude, Cursor or your own agent the whole studio — through the MCP server, or by calling the API from your agent's tools.

Everything the dashboard does

If you can do it in ppl.studio, you can do it with a key. Six areas, 184 endpoints — each in the reference.

Workflows

Start any of the 19 workflows — creator UGC video, testimonial, TikTok & Reels, app demo, product demo, lip-sync, animated story ad, text message video, screen recording video, carousel, product photo packs, and free data carousels from your products, apps and product feeds — follow it, approve its preview, edit its script or a frame.

POST /api/v1/flows

Video steps

Run one engine step on its own: animate a still into a Veo clip, voice a script, lip-sync a photo to a take, join clips with burned captions, upscale to 1080p or 4K.

POST /api/v1/bricks/jobs

Pictures

UGC photos of your creator holding your product, new camera angles, the next moment of a scene, product shots, Amazon and Shopify photo packs, app-screen frames.

POST /api/v1/images/generate

Words

Talking-head and ad scripts on proven structures, hooks, long-form monologues, captions, topic ideas — and a critic that ranks, scores and revises them.

POST /api/v1/scripts/generate

Your library

Creators (generated from a niche or built by hand), products, briefs, saved scripts with their posting results, storyboards, the gallery, uploads up to 512 MB.

POST /api/v1/personas/generate

Distribution

Post a finished video to a Facebook Page, schedule Instagram posts, and read the queue and your plan's limits.

POST /api/v1/social/facebook/share

How a video run works

A UGC video isn't one render. It's a brief, a script, a frame per line, then video — and the video is where the money goes. So a run stops and asks first.

  1. Step 01

    Start a run

    Send a product URL (or a written brief), a creator and a workflow. You get a run id back at once.

    POST /api/v1/flows
  2. Step 02

    It writes and pictures

    The run reads the page into a brief, writes the script and draws a first frame for every line. Seconds to a minute, and cheap.

    GET /api/v1/flows/{id}
  3. Step 03

    You approve the price

    The run stops at the preview: every frame with its line, and what the video will cost. Nothing is rendered until you approve.

    POST /api/v1/flows/{id}/approve
  4. Step 04

    Collect the MP4

    Veo animates the frames, the cut is joined with captions and upscaled. The run's cut.url is your 1080×1920 video.

    cut.url

Quickstart: product page to MP4

Five calls from a fresh key to a finished creator video. Copy them into a terminal, or read the developer guide for a Node client.

  1. 1

    Get a key

    Create one at Account → API keys. It is shown once; only its hash is stored. Send it as Authorization: Bearer … or x-api-key. Then ask the API what your plan allows:

    terminal
    export PPL_API_KEY=ppl_live_…
    
    curl https://ppl.studio/api/v1/account -H "Authorization: Bearer $PPL_API_KEY"
    # → plan, image allowance, gemini.connected, video.allowed (and why not)
  2. 2

    Make a creator

    Generate one from a niche and save it — or list the creators you already have with GET /api/v1/personas.

    terminal
    curl https://ppl.studio/api/v1/personas/generate \
      -H "Authorization: Bearer $PPL_API_KEY" -H "Content-Type: application/json" \
      -d '{ "niche": "skincare for busy moms", "save": true }'
    # → { "draft": { … }, "persona": { "slug": "mia-…", … } }
  3. 3

    Add your product

    Upload the product photo, then save the product with it. Images up to 5 MB go in one request; video and audio up to 512 MB go in parts.

    terminal
    curl https://ppl.studio/api/v1/uploads -H "Authorization: Bearer $PPL_API_KEY" -F file=@serum.png
    # → { "url": "https://…/serum.png", "kind": "image", … }
    
    curl https://ppl.studio/api/v1/props \
      -H "Authorization: Bearer $PPL_API_KEY" -H "Content-Type: application/json" \
      -d '{ "name": "Glow Serum", "category": "handheld", "text": "Vitamin C serum, 30 ml",
            "image_urls": ["https://…/serum.png"] }'
  4. 4

    Start a video run

    Pick a workflow from GET /api/v1/presets — each lists what it needs and an example body. This one reads a product page:

    terminal
    curl https://ppl.studio/api/v1/flows \
      -H "Authorization: Bearer $PPL_API_KEY" -H "Content-Type: application/json" \
      -d '{ "preset": "creator-ugc-video", "creatorSlug": "mia-…",
            "briefSource": { "mode": "url", "value": "https://yourstore.com/products/glow-serum" } }'
    # → { "runId": "3f1c9a…" }
  5. 5

    Approve the preview, download the video

    Poll the run. Its next field says what it waits on and which call moves it on. At the preview, check the frames and the estimate, approve, and poll again until cut.url is set.

    terminal
    curl https://ppl.studio/api/v1/flows/3f1c9a… -H "Authorization: Bearer $PPL_API_KEY"
    # → "awaiting": "gate", "estimate": { "usd": 1.2, "clips": 3 }, "frames": [ … ],
    #   "next": { "action": "approve", "call": { "method": "POST", "path": "/api/v1/flows/3f1c9a…/approve" } }
    
    curl -X POST https://ppl.studio/api/v1/flows/3f1c9a…/approve -H "Authorization: Bearer $PPL_API_KEY"
    # … a few minutes later: "finishedAt": "…", "cut": { "url": "https://…/final.mp4" }

Built to run unattended

No surprise spend

Video is the only expensive step, and every run stops before it with a price the server works out from the frames it has. Skip the stop per run with straightThrough — only when you mean it.

Jobs, not timeouts

Anything that takes minutes is a run or a job you poll. A run's next field tells your code what to do; a failed step says why and can be retried on its own.

Bring your own media

Upload product photos, reference images, clips and voice-overs. Anything that takes a URL takes one you uploaded — up to 512 MB in 8 MB parts.

Your account, your keys

A key acts as you and sees only your creators, products and runs. Everything it makes lands in your gallery. Revoke a key any time; only its hash is stored.

Retry-safe where it costs

Photo packs and bulk shots take an Idempotency-Key: the same key and body replays the first result instead of paying twice.

Documented, and machine-readable

Every endpoint is in the reference with its body and response, and in an OpenAPI 3.1 spec you can generate a client from.

Priced like the app — because it is the app

The API is included in every plan. Generation runs on your own Google Gemini key, so you pay Google's price with nothing added — and every run shows the video's cost before it renders.

See plans
Free
10 hosted photos
No card. Try the API end to end.
$1.99 / week
Unlimited generation
All workflows, video, the whole API.
A UGC photo
≈ $0.045
Gemini image, billed to your key.
An 8-second clip
≈ $0.40
Veo Lite at 720p, billed to your key.

API or MCP server?

The API — for code

Your app, your backend, your automations. Plain HTTPS and JSON, any language, every endpoint.

API reference

The MCP server — for AI assistants

claude.ai, ChatGPT, Claude Code, Cursor and other MCP clients. Add one URL and sign in — or run it locally to save results to a folder on your machine.

AI UGC MCP server

Questions

What is the ppl.studio API?

A REST API over everything the ppl.studio dashboard does: AI creators, product photos, UGC videos, scripts, carousels, storyboards and social posting. One per-user API key authorizes all 184 endpoints under /api/v1, and everything it makes shows up in your ppl.studio account.

How much does the API cost?

The API is included in your plan: free with 10 hosted photos, or $1.99 a week for unlimited generation. Generation itself runs on your own Google Gemini key and is billed by Google with no markup — about $0.045 a photo, and about $0.05 per second of Veo Lite video at 720p (an 8-second clip is about $0.40). A run shows the video's price before anything is rendered.

Can I make a UGC video from a product URL?

Yes. POST /api/v1/flows with a workflow (for example creator-ugc-video), a creator and briefSource { mode: "url", value: your product page }. The run reads the page into a brief, writes the script, draws the frames and stops at a priced preview; approve it and the finished 1080×1920 MP4 appears at cut.url.

What does video need?

Video steps need the paid plan and your own Gemini API key connected in the app, because Veo renders on your Google account. GET /api/v1/account says whether video is allowed for your key and, if not, why.

Do you have webhooks?

Clip assembly and upscale jobs accept a callbackUrl. Workflow runs and engine jobs are polled: GET the run or job, and its next field says what it is waiting on. A run takes minutes, so polling every 15–30 seconds is plenty.

Are there rate limits?

Yes, per user: text generation (scripts, hooks, captions) and some image tools have limits, and a refusal comes back as HTTP 429 with a Retry-After header. Veo renders one clip at a time per user; further clips wait their turn.

Is there an OpenAPI spec?

Yes — https://ppl.studio/openapi.yaml (OpenAPI 3.1) describes every /api/v1 endpoint, and the reference at /docs/api has each one's body and response with examples.

Can an AI assistant use the API?

Yes. The ppl.studio MCP server wraps the whole API as tools for AI assistants: add https://ppl.studio/mcp as a connector in claude.ai, ChatGPT, Claude Code or Cursor and sign in, or run it locally with one npx command to save results to your disk. A Claude skill teaches the workflows.

Your first video is five calls away

Make a key, generate a creator, point a run at your product page. 10 free photos to start, no card.