API to animate old photos: 2026 comparison (REST and MCP)
The APIs to animate old photos in 2026: D-ID, Replicate, fal, Runway, Luma, Veo, Incarn. Primitive or vertical product, pricing, EU hosting, and the no-code MCP route.
AI & Technology Writer, Incarn
In short
Two ways to animate an old photo via API in 2026: generic primitives (Replicate, fal, Runway, Luma, Google Veo) where you handle everything, the prompt, the safety filter that rejects sepia portraits, HD, the queue, or a vertical product that returns the video in a single call. D-ID is great for talking avatars, less so for an old photo that simply breathes. Incarn is built for exactly this case, EU-hosted, prepaid, no surprise bills. Comparison, decision table and quickstart below. No code needed either: the same animation runs from ChatGPT, Claude or any MCP client.
You have an old photo and an app. You want the photo to move, in one HTTP call, without standing up a computer-vision team. In 2026, two families of solutions answer that need, and they don't play the same game.
I put the main ones through an integrator's lens: what you call, what's left to build on your side, how it's billed, and where the data lives. Here's the verdict.
Primitive or product: the real question before you pick
The distinction that matters isn't "which model is best." It's generic primitive versus vertical product.
A primitive is a raw image-to-video model exposed over an API. Powerful and flexible, but it hands you the whole pipeline. A vertical product solves one use case end to end: you send a photo, you get a clean video back. For "animate an old family photo," that difference drives your entire integration cost.
The generic primitives: Replicate, fal, Runway, Luma, Veo
These platforms give you the raw video models, billed by usage. It's the most flexible path, and the most demanding.
Replicate and fal host most of the models on the market (Seedance, Kling, Wan and others) behind a common API, billed per second or per generation. Google Veo is the general-quality benchmark in 2026, with native audio, but the per-generation price climbs fast. Runway targets creative video workflows and motion control. Luma bets on fast generation.
The catch is what isn't on the invoice. With a primitive, it's on you to:
- write and tune the motion prompt for every photo,
- handle the queue and async polling,
- force and verify HD output,
- and above all, absorb the safety-filter refusals. Many recent models reject close-up portraits, and sepia or black-and-white faces even more, which is exactly the heart of an old photo. You hit that wall in production, not in the docs.
If you're building a general-purpose video tool, these primitives are the right call. If you just want "old photo to a video that holds up," you'll end up rewriting a vertical pipeline on top.
D-ID: making a photo talk
D-ID is the API standard when the goal is a photo that speaks: avatar, lip-sync, voice. MyHeritage® launched Deep Nostalgia® in 2021 with technology licensed from D-ID. If you came looking for a Deep Nostalgia API specifically, here is the short answer and what developers use instead.
It's an excellent product for its use case. But "avatar reciting a script" and "a 1953 portrait that hints at a smile and turns its head slightly" are two different intentions.
D-ID's API also has an older Animations endpoint ("Live Portrait") that moves a face with preset driver motions, including a "nostalgia" set close to the Deep Nostalgia® look. As of September 2026, D-ID's API reference marks its create-animation endpoint as deprecated, so check its status with D-ID before you build on it.
The comparison, at a glance
| Option | Type | Specialty | What you build | Billing | Hosting |
|---|---|---|---|---|---|
| Replicate / fal | Primitive (hosted models) | General image to video | Prompt, model choice, filter refusals, HD, queue | Usage-based | US |
| Google Veo | Primitive (model) | Top general quality | Same, with a high per-generation cost | Usage-based | US |
| Runway | Primitive (pro model) | Creative video, motion control | Prompt, editing workflow | Subscription and usage | US |
| Luma | Primitive (model) | Fast generation | Prompt, pipeline | Subscription and usage | US |
| D-ID | Product (avatar) | Talking photo, lip-sync; older preset-motion endpoint (deprecated) | Avatar and voice integration | Credits (subscription and usage) | US / Israel |
| Incarn | Vertical product | Old photo to natural video, REST or MCP | One call, the rest is handled | Prepaid (credit plan or packs) | EU (app in Germany, storage in Western Europe) |
Incarn: the "old photo, one call" vertical
Incarn exposes the exact "animate an old photo" use case behind a single API, and absorbs the pipeline you'd otherwise write yourself.
In practice, one POST with a photo is enough. Behind it, Incarn validates the image, picks the model, automatically falls back to a backup model when the first one refuses an old portrait, generates in HD and notifies you. Animation is powered by Seedance 1.5 Pro, BytePlus's video model, and is ready in under 2 minutes. Over 12,000 photos have already been animated on the platform, across more than 45 countries.
curl -X POST https://api.incarn.co/v1/animations \
-H "Authorization: Bearer ik_live_xxx" \
-H "Content-Type: application/json" \
-d '{"image_url":"https://your-app.com/grandmother.jpg","webhook_url":"https://your-app.com/incarn"}'
You get the result by polling GET /v1/animations/:id, or through a signed webhook (HMAC-SHA256, header X-Incarn-Signature) when the job finishes. No prompt to tune, no filter refusals to catch.
Three things that matter to an integrator, especially in Europe:
- Prepaid, no surprise bills. You spend what you bought upfront: a monthly credit plan (Starter 19, Pro 69, Scale 249 per month, excl. VAT) or on-demand packs. Out of credits, the API returns a
402, never a nasty end-of-month invoice. A bounded auto-recharge is available as an option. - EU hosting. The app and database run in Germany, and videos are stored in Cloudflare's Western Europe region. In full transparency: video generation runs through a non-EU AI partner, where the source photo is sent for processing and then deleted. That's a real argument for a product handling family photos under GDPR.
- One clear pipeline. A single endpoint, idempotency keys for safe retries, per-plan concurrency, and honest HD output with no watermark.
The flip side of simplicity: Incarn does one thing. If you need text-to-video, long cinematic shots or talking avatars, look at Veo, Runway or D-ID instead. For an old photo coming back to life, that's exactly the scope.
How to choose
A simple rule, based on what you're building:
- A general video editor, or you want low-level control over the model and prompt? Take a primitive (fal, Replicate, Veo, Runway). You pay for flexibility in integration time.
- A photo that talks, an avatar that recites? D-ID.
- "My grandmother breathing," embedded in a genealogy, memorial or gifting app, without maintaining a pipeline? A vertical product like Incarn saves you the weeks that filter refusals, HD handling and polling actually cost.
The right choice depends on whether animating old photos is your product or one brick among many. To understand the models under the hood, our Seedance 1.5 Pro vs Kling breakdown goes into the technical detail, and our best AI tools for genealogy roundup covers the consumer side.
No code: ChatGPT, Claude and other MCP clients
Not every team wants to write an integration. Incarn also runs as a remote MCP server at https://api.incarn.co/mcp. MCP (Model Context Protocol) is the open standard that ChatGPT apps and Claude connectors use to call outside tools.
The pipeline is the same as the REST API, and so are the credits. You give the assistant a photo, ask for it to be animated, and the video comes back in the conversation. Three details worth knowing before you try:
- How the photo gets in depends on the app. In ChatGPT on the web, you attach it to your message. In Claude, a connector cannot receive an attached file, so you share a direct link to the image instead.
- Connecting asks for your API key once, on an OAuth consent screen. After that, the assistant works on your account without the key ever appearing in the chat.
- The examples are public. Ask for examples and the assistant points you to a gallery of animated portraits that anyone can open, before you pay for anything.
Step-by-step guides: how to animate an old photo in ChatGPT, and how to animate old photos in Claude and other MCP apps.
Get started
Creating a key takes a minute. You test the API, wire up the webhook, and ship the same day.
- The developer API page covers the offer and plans.
- The integration tutorial goes from the first curl call to a production webhook, in Node.js.
- The documentation walks through authentication, creating an animation, webhooks and error codes.
- The guide to animating an old photo shows the result on the product side, useful for calibrating your rendering expectations.
One old photo, one call, one video. We handle the rest.

AI & Technology Writer, Incarn
Thomas covers AI and machine learning applications for creative tools. Former research engineer with a focus on computer vision and video generation.
Deep Nostalgia® and MyHeritage® are trademarks of MyHeritage Ltd. Incarn is not affiliated with MyHeritage. Comparisons (features, pricing) are provided for information only and reflect publicly available offerings at the time of publication; they are subject to change.