Developers

MakeYourViral API

The MakeYourViral API turns photos into viral videos programmatically. Authenticate with an API key, create an async render task, poll until it finishes, then download the finished MP4 from a persistent URL.

API calls spend the same credits as the web app. Top up here, then manage your keys on the API keys page.

Quickstart

1. Create an API key

Sign in, open the API keys page and create a key. The plaintext key (mv_live_…) is shown exactly once — store it somewhere safe. Pass it on every request as Authorization: Bearer mv_live_….

2. Create a render task

curl -X POST https://makeyourviral.com/api/v1/videos/meme \
  -H "Authorization: Bearer mv_live_YOUR_KEY" \
  -F "photo=@portrait.jpg" \
  -F "quality=480p"

The task is created asynchronously — credits are charged immediately and refunded automatically if the render fails.

202 Accepted
{
  "id": "3f9d0e2a-6f1c-4b8e-9a7d-2c1b5e8f4a01",
  "product": "meme",
  "status": "queued",
  "credits_charged": 25,
  "credits_balance": 75,
  "estimated_seconds": 150,
  "poll_url": "https://makeyourviral.com/api/v1/videos/3f9d0e2a-…"
}

3. Poll until it finishes

Poll the task endpoint every 5–10 seconds. Status is queued → processing → succeeded or failed.

curl https://makeyourviral.com/api/v1/videos/3f9d0e2a-… \
  -H "Authorization: Bearer mv_live_YOUR_KEY"

4. Download the video

When status is succeeded, the response contains video.url — a persistent URL that does not expire. Download the MP4 (no auth needed) and save it wherever you like.

curl -o video.mp4 "https://makeyourviral.com/api/v1/videos/3f9d0e2a-…/file"

Products

Each viral video is its own endpoint. Credits per render:

ProductEndpointLengthCost (25/50 cr)
ChatGPT Millionaire MemePOST /api/v1/videos/meme12s25 (480p) / 50 (720p)
Balli DancePOST /api/v1/videos/balli14s25 (480p) / 50 (720p)
Baby Wow PerformerPOST /api/v1/videos/babywow7s25 (480p) / 50 (720p)
Tiny Desk ConcertPOST /api/v1/videos/tinydesk15s25 (480p) / 50 (720p)

Authentication

All endpoints (except the final file download) require Authorization: Bearer mv_live_…. Keys are shown once at creation and can be revoked at any time on the API keys page. A revoked key immediately stops working.

Rate limits

12 task creations per hour per API key. Polling is not rate-limited. The create endpoint answers 429 rate_limited with a Retry-After header when the cap is hit.

Errors

Every non-2xx response has the same shape:

{
  "error": {
    "code": "insufficient_credits",
    "message": "Not enough credits",
    "needed": 25,
    "balance": 0
  }
}
HTTPcodeMeaning
400invalid_quality / invalid_subject / invalid_aspect_ratio / missing_photo / too_many_photosBad request parameters
401invalid_api_keyMissing, malformed, unknown or revoked key
402insufficient_creditsBalance too low — top up
404not_found / product_not_foundUnknown task id or product
413file_too_largePhoto over 10 MB
415unsupported_media_typeNot a JPG/PNG/WebP/HEIC image
429rate_limitedHourly creation cap reached
502provider_errorUpstream render failed — credits are refunded automatically

Failed renders & refunds

If a task fails (upstream render error or timeout), its credits are refunded to your balance automatically — no action needed. The poll response reports status: "failed" with an error message.

Idempotent retries

If you retry a create call while an identical product task is still in flight (within 30 minutes), the API returns the same task id with resumed: true and does not charge credits again. Safe to retry on network errors.