Skip to main content

Puppetry for AI Agents

Machine-readable capabilities and API integration guide

Studio checkout returns you to API key settings after payment.

What Puppetry Can Do

🎬 Text → Video

Provide a portrait image + text script → get a talking head video with AI-generated speech

🎙️ Audio → Video

Provide a portrait image + audio file → get a lip-synced talking head video

🎥 Video → Video

Provide a portrait image + driving video → transfer motion to the portrait

🗣️ 500+ AI Voices

65+ languages including Arabic, Hindi, Spanish, French, Japanese, Korean, and more

Machine-Readable Resources

ResourceURLFormat
OpenAPI Spec/openapi.jsonOpenAPI 3.1
AI Plugin Manifest/.well-known/ai-plugin.jsonJSON manifest for voice, TTS, and hosted audio uploads
LLMs.txt/llms.txtPlain text
LLMs Full/llms-full.txtPlain text
MCP server setup#mcp-server-setupAgent tool config
Robots.txt/robots.txtPlain text

MCP server setup

Agents can call Puppetry through the official MCP server. It uses the same Studio API key and quota as the hosted Developer API beta.

Tools exposed to MCP clients

  • puppetry_list_voices
  • puppetry_create_video_from_text
  • puppetry_create_video_from_audio
  • puppetry_lipsync
  • puppetry_get_job_status
  • puppetry_get_quota

Claude Desktop / Cursor config

{
  "mcpServers": {
    "puppetry": {
      "command": "npx",
      "args": ["@puppetry/mcp-server"],
      "env": {
        "PUPPETRY_API_KEY": "YOUR_API_KEY"
      }
    }
  }
}

Create the key at API key settings, then paste it into PUPPETRY_API_KEY. The server returns clear authentication errors for bad keys and upstream validation outages.

Puppetry Voice API for Agents

Studio includes a Developer API beta for Puppetry voices, hosted audio uploads, and signed asset URLs. The Puppetry Voice API uses Puppetry voices only and does not include ElevenLabs or OpenAI voices. Voice list responses include preview_url audio links for every Puppetry API voice.

Agent checkout handoff

Send users to the Studio checkout URL when they ask to enable Puppetry Voice API access. The URL preserves the current Studio beta promo and the agent return context.

https://www.puppetry.com/pricing?source=developer_api&utm_source=site&utm_medium=developer_api_checkout&utm_campaign=developer_api_beta&plan=studio&interval=yearly&autoCheckout=true&promo=PUPPETRY2026&ref=agent-voice-api

After payment

Send signed-in users to API Keys to create their key and copy integration examples.

https://www.puppetry.com/studio/settings/api-keys?intent=voice-api&source=developer_api&utm_source=studio&utm_medium=api_key_settings&utm_campaign=developer_api_activation&cta=api-keys-settings

Hosted audio upload

Use the signed upload URL endpoint for user-owned audio files before creating API workflows.

POST /api/v1/uploads/audio-url

Body fields: mime_type and content_length.

Conservative beta limits

  • 1 active API key per account
  • 10 requests per minute
  • 2 concurrent API jobs
  • 100k Puppetry Voice characters per month
  • 2GB hosted API audio storage
  • 250 audio uploads per month
  • 50MB max per uploaded audio file

Puppetry voices

Preview API voices

These playable previews use the same preview_url values returned by GET /api/v1/voices/puppetry, with a localized sample line for each language.

Open the full 45-voice catalog
Voices
12
Languages
9
Format
WAV

List voices

GET /api/v1/voices/puppetry

Response is object: "list" with data[] voice objects.

Voice object

{
  "id": "puppetry-af_heart",
  "object": "voice",
  "name": "Heart",
  "provider": "puppetry",
  "language": "English",
  "language_code": "en",
  "gender": "Female",
  "preview_url": "/api/voices/puppetry-preview?voice=af_heart&language=en"
}

Generate speech

POST /api/v1/tts/puppetry
{
  "voice_id": "puppetry-af_heart",
  "text": "This is a free voice preview in Puppetry.",
  "speed": 1
}

Showing 6 recommended starters

Heart

English (US)Female
voice_id
puppetry-af_heart
language_code
en
preview_url
/api/voices/puppetry-preview?voice=af_heart&language=en

Emma (British)

English (UK)Female
voice_id
puppetry-bf_emma
language_code
en-gb
preview_url
/api/voices/puppetry-preview?voice=bf_emma&language=en-gb

Dora (Spanish)

SpanishFemale
voice_id
puppetry-ef_dora
language_code
es
preview_url
/api/voices/puppetry-preview?voice=ef_dora&language=es

Sara (Italian)

ItalianFemale
voice_id
puppetry-if_sara
language_code
it
preview_url
/api/voices/puppetry-preview?voice=if_sara&language=it

Xiaobei (Chinese)

ChineseFemale
voice_id
puppetry-zf_xiaobei
language_code
zh
preview_url
/api/voices/puppetry-preview?voice=zf_xiaobei&language=zh

Siwis (French)

FrenchFemale
voice_id
puppetry-ff_siwis
language_code
fr
preview_url
/api/voices/puppetry-preview?voice=ff_siwis&language=fr

Quick Start

# 1. List public Puppetry voices (GET /api/v1/voices/puppetry)
curl https://www.puppetry.com/api/v1/voices/puppetry \
  -H "Authorization: Bearer YOUR_API_KEY"

# Response item: { "id": "puppetry-af_heart", "name": "Heart", "language_code": "en", "preview_url": "/api/voices/puppetry-preview?voice=af_heart&language=en" }

# 2. Generate speech with a Puppetry voice (POST /api/v1/tts/puppetry)
curl -X POST https://www.puppetry.com/api/v1/tts/puppetry \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "voice_id": "puppetry-af_heart",
    "text": "Hello! Welcome to my channel.",
    "speed": 1
  }'

# Response: { "audio_url": "https://...", "usage": { "voice_characters": { ... } } }

AUDIO_FILE="./audio.mp3"
CONTENT_LENGTH=$(wc -c < "$AUDIO_FILE" | tr -d ' ')

# 3. Create a hosted upload URL for existing audio (POST /api/v1/uploads/audio-url)
UPLOAD_BODY=$(node -e "console.log(JSON.stringify({mime_type: 'audio/mpeg', content_length: Number(process.argv[1])}))" "$CONTENT_LENGTH")
UPLOAD_JSON=$(curl -sS -X POST https://www.puppetry.com/api/v1/uploads/audio-url \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d "$UPLOAD_BODY")

UPLOAD_URL=$(node -e "const r=JSON.parse(process.argv[1]); console.log(r.upload_url)" "$UPLOAD_JSON")
READ_URL=$(node -e "const r=JSON.parse(process.argv[1]); console.log(r.read_url)" "$UPLOAD_JSON")

curl -sS -X PUT "$UPLOAD_URL" \
  -H "Content-Type: audio/mpeg" \
  -H "Content-Length: $CONTENT_LENGTH" \
  --upload-file "$AUDIO_FILE"

printf "\nSigned read URL:\n%s\n" "$READ_URL"

Integration Ideas

  • 📚 Education platforms: Auto-generate instructor videos from course scripts
  • 📧 Email marketing: Personalized video messages at scale
  • 🛒 E-commerce: Product demo videos from product descriptions
  • 📰 News/content: Convert articles into video summaries
  • 💬 Customer support: Video responses to common questions
  • 🎮 Game dev: NPC dialogue videos from character portraits
  • 🌐 Localization: Translate and re-voice videos in 65+ languages

Frequently Asked Questions

What is Puppetry?

Puppetry is an AI video creation platform that turns any photo into a talking head video. Upload a portrait, type a script or upload audio, and get a realistic lip-synced video in minutes.

How much does Puppetry cost?

Plans start at $3/month (Starter). Creator is $15/month with 100 videos and all features. Studio is $30/month with voice cloning, priority rendering, and 300 videos/month.

Can I use my own voice?

Yes. You can upload any audio file up to 5 minutes, or clone your voice with just 30 seconds of sample audio.

What languages does Puppetry support?

Puppetry supports 65+ language codes including Arabic, Hindi, Spanish, French, Japanese, Korean, Mandarin, and many more. We offer 500+ AI voices across these languages.

Can I use Puppetry videos commercially?

Yes, all paid plans (Starter, Creator, Studio) include full commercial licensing rights.

Does Puppetry have an API?

Yes. Studio includes the Developer API beta for Puppetry Voice API access, hosted audio uploads, signed asset URLs, and browser-readable rate limits.

How long does it take to generate a video?

Most videos render in under 10 minutes depending on length and complexity.

Can I add captions to my videos?

Yes. Caption Studio provides automatic speech-to-text transcription, multiple caption styles, word-level highlighting, and exports with burned-in captions or SRT/VTT files.

Limits & Pricing

Free tier includes limited video generations. Paid plans offer higher quotas and no watermarks. Studio includes the Developer API beta for Puppetry Voice API and hosted audio uploads. See pricing for details.

For enterprise API access or custom integrations, contact support@puppetry.com