Image-to-Video: Turn a Nude Still into an NSFW Clip
Upload a nude still and animate it — use it as an identity reference or pin it as the first frame. Learn the mutual-exclusivity rule and when to use each on Nureta.
3 min read
Already have a still you like — a nude you generated or a character portrait — and want it to move? Nureta takes an image as input two different ways, and they are not interchangeable. One uses the image for identity; the other makes it the literal opening frame of the clip.
This guide covers both, the one rule that keeps them from clashing, and when to reach for each. If you need a still first, start with how to generate NSFW images with AI.
Get your image a URL
The API takes images by URL. If yours is already hosted at a public HTTPS URL, use that. If not, upload it: ask the upload endpoint for a short-lived signed URL, PUT the bytes to it, and use the returned assetUrl. Uploading is free — you are billed only when you create a generation. Presigning is capped at 30 requests per minute per key.
# 1. Ask for a signed upload URL.
UPLOAD=$(curl -s -X POST "$TOKENSTORE_URL/api/v3/contents/uploads" \
-H "Authorization: Bearer sk-..." \
-H "Content-Type: application/json" \
-d '{"fileName": "nude.jpg", "contentType": "image/jpeg"}')
ASSET_URL=$(echo "$UPLOAD" | jq -r .assetUrl)
# 2. PUT the bytes to the signed URL (same Content-Type, no auth header).
UPLOAD_URL=$(echo "$UPLOAD" | jq -r .uploadUrl)
curl -s -X PUT "$UPLOAD_URL" -H "Content-Type: image/jpeg" --data-binary @nude.jpg
# ASSET_URL is now usable as an image_url in a generation task.Option A: use it as a reference image
Pass the image as a plain image_url item with no role and it becomes an identity reference: the clip renders a fresh scene and motion, but the person looks like your still. Choose this when you want the character but a new composition. Up to nine reference images per task — stack angles of the same person for stronger identity. Getting identity to hold is covered in reference images for consistent faces.
Option B: pin it as the first frame
Set role: "first_frame" on the image item and the clip literally opens on that still, then animates forward from it. The render is frame-conditioned — the motion grows out of the exact composition in your image. Use role: "last_frame" to pin the closing frame instead, or as well. Frame control is covered in depth in pinning first and last frames.
The one rule: a frame OR references, not both
first_frame or last_frame, the request renders frame-conditioned and any role-less reference images (and preset assets) are ignored. Send a frame or send references — never both in the same task.The practical consequence: if you pin a frame, that frame is the only identity source for the render — your reference images will not apply. So pin a frame that already shows the right person, or drop the frame and let reference images hold identity instead.
Which one to use
- Want the same person in a brand-new shot and motion → reference image.
- Want the clip to start from this exact picture →
first_frame. - Continuing where a previous clip ended → pin that clip's final frame as the next clip's
first_frame. - Have several angles of one character → stack them as reference images for stronger identity.
Full example
Reference-image version — the still supplies identity, the prompt supplies the act:
curl -s -X POST "$TOKENSTORE_URL/api/v3/contents/generations/tasks" \
-H "Authorization: Bearer sk-..." \
-H "Content-Type: application/json" \
-d '{
"model": "seahorse-720p",
"duration": 8,
"content": [
{ "type": "text", "text": "she lies back on the bed and touches herself, slow, nude, soft light" },
{ "type": "image_url", "image_url": { "url": "https://.../nude.jpg" } }
]
}'Swap the plain image_url for one carrying "role": "first_frame" to open on that exact still instead — but then drop any other reference images, per the rule above. Every field is in the generation API docs.