Developers
MakeViral in ChatGPT, Claude and your agents
Your assistant finds the right trend template, takes your photos and makes the video with your MakeViral credits. It can also make any AI image or video from your own idea with the models of MakeViral Create (Nano Banana, GPT Image, Seedance, Kling, Veo and more). Connect it once with the MCP server, or call the REST API from your own code.
Every video or photo uses credits from your MakeViral account, the same as on the website. The price shows before each run. How credits work.
Connect an AI assistant (MCP)
The MakeViral MCP server lives at https://www.makeviral.ai/mcp. Anyone can browse the templates. To make a video, the assistant asks you to sign in with MakeViral and to allow it. You can disconnect it at any time on your Profile page, under Agents and API.
ChatGPT
Look for MakeViral in the ChatGPT app directory and connect it. Until the listing is live, a developer-mode account can add the server by hand: open Settings, turn on developer mode, add a new app or connector with the URL above, and choose OAuth sign-in.
Everything happens in the chat:
- Ask, for example: "What trend video can I make with my cat?" ChatGPT shows matching templates with their example clips and prices.
- Pick one. ChatGPT shows its versions, the price in credits and your balance, and asks for the photos.
- Send the photos in the chat and confirm. ChatGPT starts the run.
- ChatGPT waits for the result and posts the link to the finished video or photo in the chat. A photo is usually ready in under a minute, a video in a few minutes.
Claude
In Claude, open Settings, then Connectors, and add a custom connector with the URL above. Claude cannot hand chat photos to a connector, so it gives you a short upload link where you add the photos on your phone or computer.
Claude Code, Cursor and other MCP clients
Sign in through the browser when the client asks:
claude mcp add --transport http makeviral https://www.makeviral.ai/mcpOr use an API key from your Profile page, for example in Cursor's mcp.json:
{
"mcpServers": {
"makeviral": {
"url": "https://www.makeviral.ai/mcp",
"headers": { "Authorization": "Bearer mv_live_..." }
}
}
}VS Code, Codex, Gemini CLI and Windsurf
Add the server, then sign in through the browser when the client asks.
// VS Code (GitHub Copilot): .vscode/mcp.json
{ "servers": { "makeviral": { "type": "http", "url": "https://www.makeviral.ai/mcp" } } }
# Codex: ~/.codex/config.toml, then run: codex mcp login makeviral
[mcp_servers.makeviral]
url = "https://www.makeviral.ai/mcp"
// Gemini CLI: ~/.gemini/settings.json, then run /mcp auth makeviral
{ "mcpServers": { "makeviral": { "httpUrl": "https://www.makeviral.ai/mcp" } } }
// Windsurf: ~/.codeium/windsurf/mcp_config.json
{ "mcpServers": { "makeviral": { "serverUrl": "https://www.makeviral.ai/mcp" } } }Agents on the OpenAI or Claude API
Give your agent the MCP server as a remote tool, with an API key as the bearer token. For example, with the OpenAI Responses API:
tools: [{
type: "mcp",
server_label: "makeviral",
server_url: "https://www.makeviral.ai/mcp",
authorization: process.env.MAKEVIRAL_API_KEY,
require_approval: "never"
}]The Claude API works the same way through its MCP connector: pass the URL and the API key as the authorization token. Tools that take an OpenAPI file can import https://www.makeviral.ai/api/v1/openapi.json instead.
Get told when a video is ready
- Chat assistants call get_run with
wait, so the link comes in the same answer. - MCP clients that support events (ChatGPT work chats and dots) can subscribe to run.finished. MakeViral sends a signed event (Standard Webhooks) when a run of your account finishes or fails.
- REST: call
GET /runs/{id}?wait=45in a loop until the status is completed or failed.
Tools
- search_templates and get_template: find a trend and see its versions, photos and price.
- run_template: start a run with the photos (chat files, links, or an upload link). It uses credits.
- get_run and list_runs: check a run (or wait for it) and get the finished video or photo.
- create_upload_link: a page where you add photos when the chat cannot pass them.
- get_account: your credit balance. suggest_template: ask us for a trend we do not have yet.
- list_models and get_model: the Create models, what each one takes (photos, start and end frames, clips, sounds, multi-shot, elements) and the price of every size and length.
- create_image and create_video: make an image or a video from your prompt, from text or from your photos and clips. They use credits, the same price as on the Create page.
- get_creation and list_creations: check an image or video (or wait for it) and get the file.
REST API
Make an API key on your Profile page (Agents and API) and send it as a bearer token. Keep it secret: a key can start runs that use your credits. All answers are JSON. Base URL: https://www.makeviral.ai/api/v1. OpenAPI 3.1: openapi.json.
| GET | /templates | Live templates, most popular first. Filters: query, subject (person, pet, couple, group), output (photo, video), season, maxCredits, limit. No key needed. |
| GET | /templates/{slug} | One template: versions, photos each version needs (in order), quality options, optional fields, prices. No key needed. |
| POST | /runs | Start a run: { template, version?, quality?, photos[] or uploadId, fields?, object?, requestId? }. Charges the price once. 402 = not enough credits. |
| GET | /runs/{id} | Run status: processing, completed or failed. resultUrl when done. Add ?wait=45 to hold the answer until the run finishes (up to 45 seconds), then call again. |
| GET | /runs | Your latest runs, newest first (limit up to 50). |
| GET | /models | The Create models (AI image and video), best known first: what each takes and its lowest price. Filter: kind (image, video). No key needed. |
| GET | /models/{id} | One model: shapes, sizes, lengths, inputs and the price of every choice. Add resolution, durationSec, count for the price of one choice. No key needed. |
| POST | /creations | Make AI images or videos: { kind: "image" | "video", model, prompt, photos? / startFrame? / endFrame? / referencePhotos? / referenceClips? / referenceSounds?, shots?, elements?, aspect?, resolution?, durationSec?, count?, requestId? }. 402 = not enough credits. |
| GET | /creations/{id} | An image or video (img_... or vid_...): processing, completed or failed, and its url. ?wait=45 holds the answer until it finishes. |
| GET | /creations | Your latest images and videos, newest first. Filters: kind, limit. |
| POST | /photos | { url } or { base64 } copies a photo into your uploads; { contentType } gives a one-hour PUT link for a file on disk. |
| POST | /uploads | { template, version? } makes a one-hour page where a person adds the photos on any device. Then POST /runs with uploadId. |
| GET | /me | Your credit balance. |
| POST | /template-requests | { idea, link? } asks us to add a trend that has no template yet. |
Example: a knight cat video
# 1. Find the template and the photos it needs
curl "https://www.makeviral.ai/api/v1/templates?query=knight%20cat&subject=pet"
curl "https://www.makeviral.ai/api/v1/templates/knight-cat-ai-video"
# 2. Start the run (charges the price once; the same requestId never charges twice)
curl -X POST "https://www.makeviral.ai/api/v1/runs" \
-H "Authorization: Bearer $MAKEVIRAL_API_KEY" \
-H "Content-Type: application/json" \
-d '{"template":"knight-cat-ai-video","photos":["https://example.com/my-cat.jpg"],"requestId":"cat-2026-10-11-1"}'
# 3. Wait until status is "completed" (each call waits up to 45 s), then download resultUrl
curl -H "Authorization: Bearer $MAKEVIRAL_API_KEY" "https://www.makeviral.ai/api/v1/runs/tr_cat-2026-10-11-1?wait=45"Example: a video from your own prompt
# 1. Pick a model and see its price
curl "https://www.makeviral.ai/api/v1/models?kind=video"
curl "https://www.makeviral.ai/api/v1/models/seedance-2-5?resolution=720p&durationSec=5"
# 2. Make it (a start frame photo is optional; the same requestId never charges twice)
curl -X POST "https://www.makeviral.ai/api/v1/creations" \
-H "Authorization: Bearer $MAKEVIRAL_API_KEY" \
-H "Content-Type: application/json" \
-d '{"kind":"video","model":"seedance-2-5","prompt":"My dog surfs a big wave at sunset","startFrame":"https://example.com/my-dog.jpg","durationSec":5,"requestId":"dog-surf-1"}'
# 3. Wait until status is "completed" (each call waits up to 45 s), then download url
curl -H "Authorization: Bearer $MAKEVIRAL_API_KEY" "https://www.makeviral.ai/api/v1/creations/vid_...?wait=45"Photos from disk
curl -X POST "https://www.makeviral.ai/api/v1/photos" -H "Authorization: Bearer $MAKEVIRAL_API_KEY" \
-H "Content-Type: application/json" -d '{"contentType":"image/jpeg"}'
# -> { "uploadUrl": "...", "photoUrl": "..." }
curl -X PUT -H "Content-Type: image/jpeg" --data-binary @me.jpg "<uploadUrl>"
# then send "photoUrl" in photos[]Errors
Errors look like {"error":{"code":"insufficient_credits","message":"..."}}. 400 invalid input or a bad photo, 401 missing or wrong key, 402 not enough credits, 404 unknown template, model, run or creation, 409 an upload link is not complete yet (or the same request is still starting).
How credits work
- Every template shows its price in credits before you start. The price depends on the version and the quality you pick.
- An image or video from your own prompt costs what the Create page shows: the price depends on the model, the size, the length and how many you make.
- A run takes its credits once, when it starts. If the run fails for any reason, all of its credits come back to your balance.
- Assistants and API keys use the same balance as the MakeViral website. They cannot buy credits for you.
- You get credits with a plan or a credit pack on the MakeViral website. Credits from a pack stay in your balance until you use them; the credits that come with a plan end when the plan ends. See the plans.
Photos, privacy and safety
- Only use photos of yourself, or of people who agreed. Never use photos of public figures.
- In chat apps, templates that need a photo of a child are not offered.
- Your photos and results are stored in your MakeViral account, the same as on the website. Read the Privacy Policy for what we keep and how to delete it.
- Questions or a security report: [email protected].