Use cases
An AI Photobooth API: Turn a Guest Selfie Into a Styled Portrait
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 Wilson Sik 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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 picture | Price | Reference pictures |
|---|---|---|---|
GPT-Image-2.5 gpt-image-2.5 | 2 | $0.02 | up to 9 |
Nano Banana Pro 1 nano-banana-pro-fast | 4 | $0.05 | up to 9 |
Seedream 5.0 seedream-5 | 6 | $0.07 | up to 10 |
Nano Banana Pro 2 nano-banana-pro | 10 | $0.12 | up 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.
Consent
Only restyle guests who have agreed to it. Reviral's acceptable use rules forbid face-swaps or likenesses of real people without their explicit consent.
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.