Introduction
It takes a single portrait and returns a generated image of the closest celebrity look-alike. There is no prompt and no parameter surface: the photo is the entire input.
The request is one image URL, billed per request. It is built as a one-call feature for entertainment and social products, not as an identification tool.
Key features & highlights
One photo in, one frame back — there is nothing else to send
The whole request is a single image URL. There is no prompt, no seed, no size and no strength, so the picture you upload is the only thing that moves the result. Submit it and poll for the frame, the same shape as every other media call in this catalog, and the per-request price stays the same whoever comes back in the frame.
A generated frame, not a name and not a score
The response carries one image and nothing else: no celebrity name, no ranked list of candidates, no similarity percentage. Whatever sits next to the frame is copy you wrote, not a claim the model made, and that is the safer way round. Build the moment on the frame itself — show it, let people share it, and resist putting a number beside it.
When you decide whether you may use it, treat it as face recognition
The input is always a real person's face, which puts this endpoint under likeness and biometric rules that nothing else in this catalog touches. Biometric data is separately regulated in the European Union and in parts of the United States, and the consent bar there can be high. Send only photos the subject knowingly agreed to — never a public figure's, never images taken from somewhere else — and never use it for identification, verification, surveillance or to build a face database. Nothing that comes back is a factual statement about a real person; uploaded source images are deleted after one day and generated results after 14.
Request parameters
| Parameter | Required | Description |
|---|---|---|
image_url | Yes | One clear, roughly frontal portrait with a single visible face. Group shots, profiles, sunglasses and motion blur are where the match degrades or the call fails. at least 1 characters |
Pricing
$0.05 / request
A match you would not have picked is still a completed request and is charged.
Use cases
One upload, one frame to share
Use this endpoint when the product moment is a single photo upload followed by a generated frame to share. Send the portrait as image_url, poll the task and show the image that comes back; there is no name or score to display beside it.
Entertainment and social features
The 'which celebrity do you look like' interaction, as one API call behind a photo upload. It is a shareable moment inside a consumer app rather than a production tool.
Campaign mechanics
A lightweight interactive step in a marketing flow — upload a selfie, get a frame back to share. One call per participant keeps the cost predictable.
Photo and beauty apps
A novelty feature alongside existing portrait tools. It needs no prompt engineering and no parameter surface, so it drops into an app with a single form field.
Prompt guide & pro tips
Expect an image, not a verdict
The endpoint returns a generated frame, not a name, a ranking or a similarity score. If your product needs a label, you have to present the frame itself — the API gives you nothing else to display.
Send one clear, frontal portrait
A single well-lit face, roughly facing the camera, filling a reasonable part of the frame. Group shots, heavy profiles, sunglasses, motion blur and very small faces are where the match degrades or the call fails outright.
Check the result before iterating
One face per image, roughly frontal and clearly lit. Profile angles, occlusion (sunglasses, hands, hair across the face), motion blur and very small faces degrade the match or fail the call. There is no prompt, no mask, no strength and no seed: if the output is wrong, the only fix is a different photo. The response is an image and nothing else — no name, no ranking, no confidence value.
API quick start
# Generate the idempotency key once; reuse it when retrying after a lost response.
export SPICY_IDEMPOTENCY_KEY="${SPICY_IDEMPOTENCY_KEY:-$(uuidgen)}"
curl -X POST https://api.spicyapi.ai/api/v1/jobs/createTask \
-H "Authorization: Bearer $SPICY_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $SPICY_IDEMPOTENCY_KEY" \
-d '{
"model": "spicyapi/look-alike-v1/edit",
"input": {
"image_url": "https://example.com/reference.png"
}
}'
# Copy data.taskId from the response into TASK_ID, then poll the status.
TASK_ID="TASK_ID_FROM_RESPONSE"
curl "https://api.spicyapi.ai/api/v1/jobs/recordInfo?taskId=$TASK_ID" \
-H "Authorization: Bearer $SPICY_API_KEY"
See the API reference for authentication, the complete schema, polling, and error handling.

