Skip to main content
AI/MLjeremylongshore

elevenlabs-deploy-integration

'Deploy ElevenLabs TTS applications to Vercel, Fly.io, and Cloud Run.

Stars
2,267
Source
jeremylongshore/claude-code-plugins-plus-skills
Updated
2026-05-31
Slug
jeremylongshore--claude-code-plugins-plus-skills--elevenlabs-deploy-integration
View on GitHubRaw SKILL.md

// install — copy + paste into any project

mkdir -p .claude/skills && curl -fsSL https://raw.githubusercontent.com/jeremylongshore/claude-code-plugins-plus-skills/HEAD/plugins/saas-packs/elevenlabs-pack/skills/elevenlabs-deploy-integration/SKILL.md -o .claude/skills/elevenlabs-deploy-integration.md

Drops the SKILL.md into .claude/skills/elevenlabs-deploy-integration.md. Works with Claude Code, Cursor, and any agent that loads SKILL.md files from .claude/skills/.

ElevenLabs Deploy Integration

Overview

Deploy ElevenLabs TTS/voice applications to Vercel (serverless), Fly.io (containers), or Google Cloud Run with proper secrets management, timeout configuration, and streaming support. Pick the platform that matches your traffic shape, write the platform config + server code, store the API key as a platform secret, then deploy and smoke-test the live endpoint.

Prerequisites

  • ElevenLabs API key for production
  • Platform CLI installed (vercel, fly, or gcloud)
  • Application code tested locally

Instructions

Follow these steps. The lean skeleton is below; the full config files and server code for each platform are in references/implementation.md.

  1. Inspect the repo and pick a platform. Read the existing app code and any current deploy config, then choose from the comparison table below — Vercel for a simple stateless TTS API, Fly.io for streaming/WebSocket, Cloud Run for bursty variable load.

  2. Write the platform config + server code. Use Write/Edit to create the platform files in the repo — vercel.json + the API route for Vercel, fly.toml + Express server for Fly.io, Dockerfile for Cloud Run. Full versions are in references/implementation.md.

  3. Set the API key as a platform secret (never commit it):

    vercel env add ELEVENLABS_API_KEY production   # Vercel
    fly secrets set ELEVENLABS_API_KEY=sk_...       # Fly.io
    echo -n "sk_..." | gcloud secrets create elevenlabs-api-key --data-file=-  # Cloud Run
    
  4. Mind the timeout. Vercel Hobby caps functions at 10s (30s on Pro) — use the eleven_flash_v2_5 model to stay under it. Fly.io and Cloud Run have no such short cap.

  5. Deploy, then smoke-test the live endpoint (see references/examples.md):

    vercel --prod        # Vercel
    fly deploy           # Fly.io
    gcloud run deploy tts-service --source .   # Cloud Run (see full flags in implementation.md)
    

Platform Comparison for ElevenLabs

Feature Vercel Fly.io Cloud Run
Max timeout 30s (Pro) No limit 60min
WebSocket streaming Limited Full support Full support
Cold start ~1-3s ~0.5-2s ~1-5s
Concurrency Per-function Per-VM Per-instance
Best for Simple TTS API Streaming/WebSocket Variable load
Min cost Free tier ~$2/mo Free tier

Output

A working deployment of a validated TTS build produces:

  • A live TTS endpoint returning audio/mpeg (Vercel/Fly.io/Cloud Run URL)
  • ELEVENLABS_API_KEY (and any webhook secret) stored as a platform secret, never in the repo
  • Platform config committed to the repo — vercel.json, fly.toml, or Dockerfile — matching the chosen platform's timeout/concurrency limits
  • A /health endpoint (Fly.io/Cloud Run) reporting live quota via the SDK

Error Handling

Issue Cause Solution
Vercel timeout TTS > 10s on Hobby Upgrade to Pro (30s) or use Flash model
Cold start slow Container initialization Set min_instances=1 (Cloud Run) or min_machines=1 (Fly)
Secret not found Missing platform config Add via platform CLI
Streaming broken Proxy buffering Disable response buffering in nginx/CDN
CORS errors Missing headers Add Access-Control-Allow-Origin to TTS endpoint

Examples

Deploy a simple TTS API to Vercel (Flash model, under the Pro timeout):

vercel env add ELEVENLABS_API_KEY production
vercel --prod

Deploy a streaming service to Fly.io and confirm quota via the health check:

fly secrets set ELEVENLABS_API_KEY=sk_your_prod_key
fly deploy
curl -s https://my-tts-service.fly.dev/health | jq

Full end-to-end flows for all three platforms — secret setup, deploy, and live smoke-test — are in references/examples.md.

Resources

Next Steps

For webhook handling on a deployed service, see the elevenlabs-webhooks-events skill, which covers verifying signatures and handling ElevenLabs event callbacks against the endpoints you just shipped.