Get an API key

API and Claude connector

Give your Claude a Risovator key and it will create images and short videos with sound for you: it picks the model, writes the prompt, and pays from your balance. Or call the same thing over plain HTTP.

1. Get a key

Log in at risovator.com/app, top up the balance, find the Claude and API block and press Create key. The key starts with rz_ and is shown once. You can set a daily spending limit per key and delete a key at any time.

2. Connect Claude

The short way: one message to Claude

  1. Open risovator.com/app, find the Claude and API block and press Create key.
  2. Under Connect to Claude: one message press Copy. The message already has your real key inside.
  3. Send it to Claude as an ordinary message. Claude saves the key, reads these docs and from then on makes images and videos itself over the HTTP API.

Nothing to install and no connector to set up. Works in Claude Code everywhere: the Code tab of the Claude app, the terminal and the browser. Copy the message from your account as it is – a placeholder such as <your key> instead of the real key only gives errors.

The message looks like this, with your key instead of rz_YOUR_KEY:

Connect Risovator so you can make images and videos for me. My API key: rz_YOUR_KEY. Save it to ~/.risovator-key readable only by me and never show it anywhere else. Read the docs at https://risovator.com/api-docs/ (HTTP API section). From now on, when I ask for an image or a video, make it yourself through this API: send requests with the Authorization: Bearer header and the key from the file, save the results to a risovator folder next to the project and show them to me. Check the connection by requesting my balance.

Other ways: the MCP connector

Only if you want the Risovator tools inside a plain Claude chat without the Code tab, or in another MCP client.

Claude on the web, desktop or mobile app

  1. Open Settings → Connectors → Add custom connector.
  2. Name: Risovator. URL: https://risovator.com/mcp/rz_YOUR_KEY (the cabinet gives you this link ready to copy).
  3. In a chat, turn the Risovator connector on and ask: “Make a square banner for a coffee shop that says 20% OFF”.

The key is part of this URL, so treat the URL like a password.

Claude Code

claude mcp add --transport http --scope user risovator https://risovator.com/mcp \
  --header "Authorization: Bearer rz_YOUR_KEY"

Then ask Claude Code for an image. It can save files to your project with the download link it gets back.

Any other MCP client

Streamable HTTP endpoint https://risovator.com/mcp with header Authorization: Bearer rz_..., or https://risovator.com/mcp/rz_... without a header. Stateless, JSON responses, no SSE stream.

Tools Claude gets

ToolWhat it does
list_modelsModels, prices in ₽, formats, which ones accept an input photo
get_balanceBalance in ₽ and the top-up link
generate_imageOne image from a prompt, optionally from a photo (photo_url, photo_base64 or photo_id). Waits and returns a download link valid 24 hours; small images are also shown to Claude directly
generate_videoA 4, 6 or 8 second video with sound, from a prompt or by animating a photo. Returns an id
get_generationStatus by id, waits up to 50 s for a video; returns the link when done
list_generationsRecent work with ids, prompts and prices

3. HTTP API

Base URL https://risovator.com/v1. Send the key as Authorization: Bearer rz_.... Requests and responses are JSON. Errors look like {"ok":false,"error":{"code":"NO_BALANCE","message":"..."}}.

Create an image

curl https://risovator.com/v1/generations \
  -H "Authorization: Bearer $RISOVATOR_KEY" \
  -H "Content-Type: application/json" \
  -d '{"model":"gpt-image-2-medium","aspect":"16:9",
       "prompt":"Coffee shop banner, cappuccino on a wooden table, big text \"20% OFF\""}'
{"ok":true,"id":"75bb0794-…","type":"image","status":"done","model":"gpt-image-2-medium",
 "price_rub":11,"balance_rub":489,"mime":"image/png","width":1536,"height":1024,
 "url":"https://…","url_expires_in_sec":86400}

Edit a photo

Pass a public link, base64, or the id of an upload or of your earlier image (to keep editing it):

curl https://risovator.com/v1/generations -H "Authorization: Bearer $RISOVATOR_KEY" \
  -H "Content-Type: application/json" \
  -d '{"model":"gemini-2.5-flash-image","prompt":"Replace the background with a sunny beach, keep the face unchanged",
       "photo_url":"https://example.com/me.jpg"}'

Upload a local file first and use the returned photo_id:

curl https://risovator.com/v1/uploads -H "Authorization: Bearer $RISOVATOR_KEY" \
  -H "Content-Type: image/jpeg" --data-binary @me.jpg
# {"ok":true,"photo_id":"ec2fb398-…"}

Create a video

curl https://risovator.com/v1/generations -H "Authorization: Bearer $RISOVATOR_KEY" \
  -H "Content-Type: application/json" \
  -d '{"model":"veo-fast","aspect":"9:16","seconds":6,"prompt":"Steam rising from a cup of coffee, soft morning light, cafe ambience"}'
# {"ok":true,"id":"31ca79eb-…","type":"video","status":"processing",...}

curl "https://risovator.com/v1/generations/31ca79eb-…?wait=50" -H "Authorization: Bearer $RISOVATOR_KEY"
# repeat until "status":"done", then:
curl -o video.mp4 https://risovator.com/v1/generations/31ca79eb-…/file -H "Authorization: Bearer $RISOVATOR_KEY"

Endpoints

RequestDescription
GET /v1/modelsModels and prices, no key needed
GET /v1/balanceBalance in ₽
POST /v1/uploadsRaw image body (JPG, PNG, WEBP up to 10 MB) or JSON {photo_url} / {photo_base64}. Returns photo_id
POST /v1/generationsmodel, prompt, optional aspect (1:1, 16:9, 9:16; video: 16:9, 9:16), seconds (video: 4, 6, 8), one of photo_id / photo_url / photo_base64. Images answer when ready (5–40 s, up to 2 min for GPT Image 2 High)
GET /v1/generations/{id}Status and link. ?wait=N waits up to N seconds (max 50) while a video is processing
GET /v1/generations/{id}/fileThe file itself
GET /v1/generationsRecent work, ?limit= up to 100, ?offset=

Models and prices, ₽ per result

Loading…

Errors

HTTPcodeMeaning
401BAD_API_KEYNo key, wrong key or deleted key
402NO_BALANCENot enough money; the answer has balance_rub and price_rub
402KEY_DAILY_LIMITThe daily limit set for this key is reached
400BAD_MODEL, BAD_ASPECT, BAD_DURATION, EMPTY_PROMPT, MODEL_NO_PHOTO, BAD_PHOTO_URLFix the request
422PROVIDER_REJECTEDThe model refused the prompt. Nothing charged
429RATE_LIMITMore than 20 generations a minute
502GENERATION_FAILEDProvider error. Nothing charged, try again
503PAUSEDGeneration paused for now

Money and limits