Next Image
Developer Documentation

API Reference

Integrate powerful AI image and video generation into your applications

API Tools

Select a tool to view detailed API documentation and code examples

Text to Image

Generate images from text prompts.

POST
/v1/tools/text-to-image

Parameters

Name Type Required Description Default
prompt string Yes Natural language prompt used for generation. -
model string No Generation model wavespeed-ai/z-image/turbo
size string No Image size in width*height format, e.g. 1024*1024. 1024*1024
output_format string No Output image format: jpeg, png, or webp. png
count integer No Number of images (1-2) 1
seed integer No Random seed. Use -1 for random behavior. -1

Code Example

import requests

response = requests.post(
    "https://nextimage.ai/v1/tools/text-to-image",
    headers={
        "Authorization": "Bearer <YOUR_API_KEY>",
        "Content-Type": "application/json",
    },
    json={
        "prompt": "a beautiful sunset over mountains",
        "model": "wavespeed-ai/z-image/turbo",
        "size": "1024*1024",
        "output_format": "png",
    },
)
print(response.json())
const response = await fetch("https://nextimage.ai/v1/tools/text-to-image", {
  method: "POST",
  headers: {
    "Authorization": "Bearer <YOUR_API_KEY>",
    "Content-Type": "application/json",
  },
  body: JSON.stringify({
    prompt: "a beautiful sunset over mountains",
    model: "wavespeed-ai/z-image/turbo",
    size: "1024*1024",
    output_format: "png",
  }),
});
const data = await response.json();
console.log(data);
curl -X POST "https://nextimage.ai/v1/tools/text-to-image" \
  -H "Authorization: Bearer <YOUR_API_KEY>" \
  -H "Content-Type: application/json" \
  -d '{"prompt": "a beautiful sunset over mountains", "model": "wavespeed-ai/z-image/turbo", "size": "1024*1024"}'

Image to Image

Upload an input image and generate a transformed output image.

POST
/v1/tools/image-to-image

Parameters

Name Type Required Description Default
image file Yes Source image file for transformation. -
prompt string Yes Prompt describing target style or edits. -
model string No Edit model wavespeed-ai/flux-2-klein-9b/edit
size string No Target image size in width*height format. 1024*1024
strength number No Transformation strength value. 0.6

Code Example

import requests

with open("source.png", "rb") as image_file:
    response = requests.post(
        "https://nextimage.ai/v1/tools/image-to-image",
        headers={"Authorization": "Bearer <YOUR_API_KEY>"},
        files={"image": image_file},
        data={
            "prompt": "anime style portrait",
            "model": "wavespeed-ai/flux-2-klein-9b/edit",
            "strength": 0.6,
        },
    )
print(response.json())
const formData = new FormData();
formData.append("image", imageFile);
formData.append("prompt", "anime style portrait");
formData.append("model", "wavespeed-ai/flux-2-klein-9b/edit");

const response = await fetch("https://nextimage.ai/v1/tools/image-to-image", {
  method: "POST",
  headers: { "Authorization": "Bearer <YOUR_API_KEY>" },
  body: formData,
});
const data = await response.json();
curl -X POST "https://nextimage.ai/v1/tools/image-to-image" \
  -H "Authorization: Bearer <YOUR_API_KEY>" \
  -F "image=@source.png" \
  -F "prompt=anime style portrait" \
  -F "model=wavespeed-ai/flux-2-klein-9b/edit"

Face Swap

Replace face identity using source and face reference images.

POST
/v1/tools/face-swap

Parameters

Name Type Required Description Default
image file Yes Base image file to be edited. -
face_image file Yes Face reference image file. -
output_format string No Output image format. If omitted, server default is used. png

Code Example

import requests

with open("base.png", "rb") as img, open("face.png", "rb") as face:
    response = requests.post(
        "https://nextimage.ai/v1/tools/face-swap",
        headers={"Authorization": "Bearer <YOUR_API_KEY>"},
        files={"image": img, "face_image": face},
        data={"output_format": "png"},
    )
print(response.json())
const formData = new FormData();
formData.append("image", baseImageFile);
formData.append("face_image", faceImageFile);

const response = await fetch("https://nextimage.ai/v1/tools/face-swap", {
  method: "POST",
  headers: { "Authorization": "Bearer <YOUR_API_KEY>" },
  body: formData,
});
curl -X POST "https://nextimage.ai/v1/tools/face-swap" \
  -H "Authorization: Bearer <YOUR_API_KEY>" \
  -F "image=@base.png" \
  -F "face_image=@face.png"

Image to Video

Animate a still image into a short video clip.

POST
/v1/tools/image-to-video

Parameters

Name Type Required Description Default
image file Yes Input image file. -
prompt string Yes Motion and scene prompt. -
model string No Video model wavespeed-ai/wan-2.2/i2v-480p-ultra-fast
duration integer No Video duration in seconds. 5
seed integer No Random seed. Use -1 for random behavior. -1

Code Example

import requests

with open("frame.png", "rb") as image_file:
    response = requests.post(
        "https://nextimage.ai/v1/tools/image-to-video",
        headers={"Authorization": "Bearer <YOUR_API_KEY>"},
        files={"image": image_file},
        data={
            "prompt": "camera slowly pushes in",
            "model": "wavespeed-ai/wan-2.2/i2v-480p-ultra-fast",
            "duration": 5,
        },
    )
print(response.json())
const formData = new FormData();
formData.append("image", frameFile);
formData.append("prompt", "camera slowly pushes in");
formData.append("model", "wavespeed-ai/wan-2.2/i2v-480p-ultra-fast");

const response = await fetch("https://nextimage.ai/v1/tools/image-to-video", {
  method: "POST",
  headers: { "Authorization": "Bearer <YOUR_API_KEY>" },
  body: formData,
});
curl -X POST "https://nextimage.ai/v1/tools/image-to-video" \
  -H "Authorization: Bearer <YOUR_API_KEY>" \
  -F "image=@frame.png" \
  -F "prompt=camera slowly pushes in" \
  -F "duration=5"

Action Transfer

Transfer motion from a reference video to the target image subject.

POST
/v1/tools/action-transfer

Parameters

Name Type Required Description Default
image file Yes Target image file. -
video file Yes Reference motion video file. -
prompt string No Optional prompt for style or constraints. -
mode string No Transfer mode, default is replace. replace
resolution string No Output resolution, default is 480p. 480p
duration integer No Optional duration field accepted by endpoint. 5

Code Example

import requests

with open("target.png", "rb") as img, open("motion.mp4", "rb") as vid:
    response = requests.post(
        "https://nextimage.ai/v1/tools/action-transfer",
        headers={"Authorization": "Bearer <YOUR_API_KEY>"},
        files={"image": img, "video": vid},
        data={
            "prompt": "keep identity stable",
            "mode": "replace",
            "resolution": "480p",
        },
    )
print(response.json())
const formData = new FormData();
formData.append("image", targetImageFile);
formData.append("video", motionVideoFile);
formData.append("prompt", "keep identity stable");

const response = await fetch("https://nextimage.ai/v1/tools/action-transfer", {
  method: "POST",
  headers: { "Authorization": "Bearer <YOUR_API_KEY>" },
  body: formData,
});
curl -X POST "https://nextimage.ai/v1/tools/action-transfer" \
  -H "Authorization: Bearer <YOUR_API_KEY>" \
  -F "image=@target.png" \
  -F "video=@motion.mp4" \
  -F "prompt=keep identity stable"

Response Status Codes

Status Code Type Description
200 Success Success
400 Error Bad Request
401 Error Unauthorized
402 Error Insufficient Credits
500 Error Server Error