GPT IMAGE 2.5 | WAN 3.0 | SEEDANCE 2.5 IS NOW LIVE!

GENERATE YOUR VIDEOS WITH UNLIMITED SEEDANCE 2.5 TODAY.

NO EXTRA SUBSCRIPTION
REVIRAL
Get API key
Browse API docs

Use cases

An AI Photobooth API: Turn a Guest Selfie Into a Styled Portrait

Was this page helpful?

Reviral's photobooth API turns a guest selfie into a styled portrait: upload the photo with POST /api/v1/uploads, send it as a reference image with a style prompt to POST /api/v1/generate-media, then read the picture from GET /api/v1/jobs/{id}. Nano Banana Pro 1 costs 4 credits a picture (about $0.05 at the $4.99 Mini Pack rate).

By  Founder, Reviral Last updated

Models that fit

Every image model in the live catalog that accepts at least one reference picture; each takes the same fields, but sizes and shapes differ per model (GET /api/v1/models).

GPT-Image-2.5

1K · 1:1, 5:4, 4:5, 4:3, 3:4, 16:9, 9:16, 3:2, 2:3, 21:9, 9:21

2 cr · $0.02

GPT-IMAGE-2

1K, 2K, 4K · 1:1, 3:2, 2:3, 4:3, 3:4, 5:4, 4:5, 16:9, 9:16, 2:1, 1:2, 21:9, 9:21

2 cr · $0.02

GPT-Image-2 Standard

1K, 2K, 4K · 1:1, 3:2, 2:3, 4:3, 3:4, 5:4, 4:5, 16:9, 9:16, 2:1, 1:2, 21:9, 9:21

3 cr · $0.04

Nano Banana Pro 1

1K, 2K, 4K · 1:1, 3:2, 2:3, 3:4, 4:3, 4:5, 5:4, 9:16, 16:9, 21:9

4 cr · $0.05

Nano Banana Pro 2

1K, 2K, 4K · 1:1, 3:2, 2:3, 3:4, 4:3, 4:5, 5:4, 9:16, 16:9, 21:9

10 cr · $0.12

Nano Banana

1K · 1:1, 4:3, 3:4, 16:9, 9:16, 3:2, 2:3

3 cr · $0.04

Qwen Image 3.0 Pro

1K, 2K · 1:1, 4:3, 3:4, 16:9, 9:16, 3:2, 2:3

7 cr · $0.09

Qwen Image 3.0

1K, 2K · 1:1, 4:3, 3:4, 16:9, 9:16, 3:2, 2:3

6 cr · $0.07

Image 2 PRO

2K, 4K · 1:1, 4:3, 3:4, 16:9, 9:16, 3:2, 2:3, 21:9, 9:21

4 cr · $0.05

Flux Kontext Pro

Standard · 1:1, 4:3, 3:4, 16:9, 9:16, 3:2, 2:3, 21:9, 9:21

4 cr · $0.05

GPT-Image-2.5 Flare

1K · 1:1, 5:4, 4:5, 4:3, 3:4, 16:9, 9:16, 3:2, 2:3, 21:9, 9:21

2 cr · $0.02

Flux 2.0 Pro

1K, 2K · 1:1, 4:3, 3:4, 16:9, 9:16, 3:2, 2:3

6 cr · $0.07

GPT-Image-2.5 Sunburst

1K · 1:1, 5:4, 4:5, 4:3, 3:4, 16:9, 9:16, 3:2, 2:3, 21:9, 9:21

2 cr · $0.02

Seedream 4.0

1K, 2K, 4K · 1:1, 4:3, 3:4, 16:9, 9:16, 3:2, 2:3, 21:9, 9:21

6 cr · $0.07

Image 2 4K

4K · 1:1, 4:3, 3:4, 16:9, 9:16, 3:2, 2:3, 21:9, 9:21

3 cr · $0.04

Nano Banana 2

1K, 2K, 4K · 1:1, 3:2, 2:3, 3:4, 4:3, 4:5, 5:4, 9:16, 16:9, 21:9, 4:1, 8:1

6 cr · $0.07

Image 2 High

2K · 1:1, 4:3, 3:4, 16:9, 9:16, 3:2, 2:3, 21:9, 9:21

4 cr · $0.05

Seedream 5.0

2K, 3K · 1:1, 4:3, 3:4, 16:9, 9:16, 3:2, 2:3, 21:9, 9:21

6 cr · $0.07

Seedream 4.5

2K, 4K · 1:1, 4:3, 3:4, 16:9, 9:16, 3:2, 2:3, 21:9, 9:21

7 cr · $0.09

Flux Kontext Max

Standard · 1:1, 4:3, 3:4, 16:9, 9:16, 3:2, 2:3, 21:9, 9:21

8 cr · $0.10

Seedream 5.0 Pro

1K, 2K · 1:1, 4:3, 3:4, 16:9, 9:16, 3:2, 2:3, 21:9, 9:21

8 cr · $0.10

Flux 2.0 Flex

1K, 2K · 1:1, 4:3, 3:4, 16:9, 9:16, 3:2, 2:3

12 cr · $0.15

Try it

This request uses the public GenerateMediaRequest schema with a reference photo. Replace the referenceImageUrls placeholder with the url POST /api/v1/uploads returns for your photo.

curl -X POST "https://reviral.ai/api/v1/generate-media" \
  -H "Authorization: Bearer $REVIRAL_API_KEY" \
  -H "Idempotency-Key: first-generation" \
  -H "Content-Type: application/json" \
  --data '{"model":"nano-banana-pro-fast","prompt":"Generate a single image: a studio portrait of the person in the provided photo, head and shoulders, against a plain warm-grey backdrop. One large softbox to the left lights the face evenly and leaves a soft shadow on the right cheek. Preserve exactly: the person's face, hairline, skin tone and expression from the provided photo.","size":"1K","aspectRatio":"4:5","count":1,"referenceImageUrls":["UPLOAD_URL_FROM_POST_/api/v1/uploads"],"maxCredits":4}'

The three calls, copy-paste

Upload the guest photo, restyle it, then read the picture. The field names are the live API's.

Limits per key: generate-media 10 requests a minute and 1,000 a day; uploads 10 a minute and 500 a day; job status 120 requests a minute. A repeated Idempotency-Key with the same body returns the original job instead of a second charge.

# 1) Upload the guest photo as a file (JPG, PNG or WebP, up to 4 MB)
curl -X POST "https://reviral.ai/api/v1/uploads" \
  -H "Authorization: Bearer $REVIRAL_API_KEY" \
  -F "file=@guest.jpg"
# → 201 {"data":{"url":"https://…", …}}  keep data.url

# 2) Restyle it (4 credits on Nano Banana Pro 1; maxCredits locks the price)
curl -X POST "https://reviral.ai/api/v1/generate-media" \
  -H "Authorization: Bearer $REVIRAL_API_KEY" \
  -H "Idempotency-Key: booth-guest-0001" \
  -H "Content-Type: application/json" \
  --data '{"model":"nano-banana-pro-fast","prompt":"Generate a single image: a studio portrait of the person in the provided photo, head and shoulders, against a plain warm-grey backdrop. One large softbox to the left lights the face evenly. Preserve exactly: the person'"'"'s face, hairline, skin tone and expression from the provided photo.","size":"1K","aspectRatio":"4:5","referenceImageUrls":["PASTE_data.url_HERE"],"maxCredits":4}'
# → 202 {"data":{"jobId":"…","status":"queued","statusUrl":"/api/v1/jobs/…","creditsCharged":4,…}}

# 3) Read the picture
curl "https://reviral.ai/api/v1/jobs/$JOB_ID" -H "Authorization: Bearer $REVIRAL_API_KEY"
# → {"data":{"status":"ready","outputUrls":["https://…"],…}}   (status: queued | running | ready | failed)

Six style prompts

Swap the prompt; on Nano Banana Pro 1 (nano-banana-pro-fast, 4 credits, the model the sample uses) the upload and the rest of the call stay the same. The shape in brackets goes in aspectRatio. Other models take other sizes and shapes: Seedream 5.0 has only 2K and 3K sizes and no 4:5 shape, so this sample sent to it unchanged returns a 400; read a model's sizes and shapes from GET /api/v1/models and change size and aspectRatio before you switch.

  1. Studio headshot (4:5): Generate a single image: a studio portrait of the person in the provided photo, head and shoulders, against a plain warm-grey backdrop. One large softbox to the left lights the face evenly and leaves a soft shadow on the right cheek. Preserve exactly: the person's face, hairline, skin tone and expression from the provided photo.
  2. Black-and-white film portrait (4:5): Generate a single image: a black-and-white portrait of the person in the provided photo, chest up, lit by one hard light high on the right, so half the face falls into shadow, against a dark plain wall. Visible film grain from high-speed black-and-white film. Preserve exactly: the person's face, hairline and expression from the provided photo.
  3. Comic-book panel (2:3): Generate a single image: the person in the provided photo drawn as a comic-book hero in bold ink lines and flat colours, standing on a rooftop at night with a city skyline behind, a yellow moon lighting their outline. Preserve exactly: the person's face shape, hairstyle and skin tone from the provided photo.
  4. Watercolour painting (4:5): Generate a single image: a watercolour painting of the person in the provided photo, head and shoulders, on textured white paper, soft washes of blue and ochre, paint pooling darker at the edges where it dried. Preserve exactly: the person's face, hairline and expression from the provided photo.
  5. Retro travel poster (2:3): Generate a single image: a 1930s-style travel poster with the person in the provided photo in the foreground looking at a mountain lake, flat screen-printed colours in teal, orange and cream, and the words "SUMMER GALA" in tall cream letters at the top. These are the only added words. Preserve exactly: the person's face and hairstyle from the provided photo.
  6. Neon arcade (4:5): Generate a single image: the person in the provided photo in a retro arcade at night, lit pink on one side and blue on the other by the glowing cabinet screens beside them, reflections of the neon on their skin. Preserve exactly: the person's face, hairline, skin tone and expression from the provided photo.

Price per portrait

Live prices from GET /api/v1/models, one picture at each model's default size. A failed picture's credits are returned automatically.

Model (API id)Credits a picturePriceReference pictures
GPT-Image-2.5 gpt-image-2.52$0.02up to 9
Nano Banana Pro 1 nano-banana-pro-fast4$0.05up to 9
Seedream 5.0 seedream-56$0.07up to 10
Nano Banana Pro 2 nano-banana-pro10$0.12up to 14

Speed

Measured, not promised: two timed runs of GPT Image 2.5 Flare in the Reviral studio on 24 September 2026 took 69 seconds and 124 seconds. Poll GET /api/v1/jobs/{id} or pass a webhookUrl instead of waiting on the request.

Frequently asked questions

How much does one photobooth portrait cost?
It depends on the model: 2 credits on GPT Image 2.5, 4 on Nano Banana Pro 1, 6 on Seedream 5.0 and 10 on Nano Banana Pro 2, per picture, checked 26 September 2026. GET /api/v1/models returns the live price, and maxCredits locks it on your call.
How fast is a portrait?
In two timed runs in the Reviral studio on 24 September 2026, GPT Image 2.5 Flare returned a picture in 69 and 124 seconds. Poll GET /api/v1/jobs/{id} or pass a webhookUrl instead of waiting on the request.
Do I need a subscription for the photobooth API?
No. One-time credit packs from $4.99 cover API calls and never expire, and a new account gets 100 free credits with no card.