I Built an AI Photobooth with OpenRouter + Claude Code
Try OpenRouter : https://openrouter.plug.dev/ztxFLgN Four webcam photos, one sentence spoken out loud, and this comes back: the whole strip restyled, animated, and narrated by an AI announcer — five different AI models, one API key, one bill from openrouter.ai This is a full openrouter tutorial and build for a browser AI photobooth: speech-to-text → an LLM writing the creative brief → an image model editing your actual photo → Veo 3.1 animating it → text-to-speech narrating the reveal. I show you how to use openrouter to reach all five endpoints, what broke the first time I ran it against a real photo, and how I fixed it — including a video model that flat-out refused the job, and a text-to-speech gotcha that silently produces a broken audio file if you don't know about it. Built live in Claude Code (Fable 5.1) and deployed to Railway at the end, with the app flipping from local polling to a real webhook the moment it gets a public URL. 📧 FREE Weekly AI Automation Newsletter: Get weekly tutorials, free workflow templates, and the latest AI news straight to your inbox 👉 https://aifornoncoders.com/newsletter 🤝 Join the AI Automation Engineering Community: Go deeper — interact with me and the community, get feedback on your builds, and stay ahead of the curve 👉 https://www.skool.com/ai-automation-engineering-3014 TIMESTAMPS 0:00 Building an AI-Powered Photo Booth 1:00 How the Multimodal Chain Operates 2:16 Selecting the Right Models for the Job 4:14 Exploring the Open Router Catalog 7:04 Putting the Build into Action WHAT YOU'LL LEARN • How to use the OpenRouter API across five modalities — speech-to-text, chat completions, image editing, async video generation, and text-to-speech — on one key • How to get an OpenRouter API key and set up your first models • Why bytedance/seedance-2.0-fast rejected a real photo of a person, and how google/veo-3.1-lite fixed it • Why the TTS endpoint returning "pcm" instead of mp3 will silently break your downloaded audio file, and how to catch it • Webhooks vs. polling for async video generation, and why the fix is a public URL, not more code • How Claude Code was used to build against five unfamiliar API endpoints in one session Thank you to OpenRouter for supporting this video. If this was useful, a like helps it reach the next person building on these endpoints, and subscribe for more builds like this one.