Create images with AI models
June 3, 2025 (October 3, 2025)
Table of contents
This endpoint creates new images using FLUX.1 Kontext, FLUX.1 Kontext Max, or Nano Banana / Gemini 2.5 Flash Image from text prompts with optional reference images.
Model Capabilities
Parameter | FLUX.1 Kontextflux (default) | FLUX.1 Kontext Maxflux-premium | Nano Banana / Gemini 2.5 Flash Imagenano-banana |
---|---|---|---|
referenceAssetId | ✓ | ✗ | ✗ |
reference_strength | ✓ | ✗ | ✗ |
style | ✓ | ✗ | ✗ |
https://api.useapi.net/v1/ltxstudio/images/create
Request Headers
Authorization: Bearer {API token}
Content-Type: application/json
# Alternatively you can use multipart/form-data
# Content-Type: multipart/form-data
API token
is required, see Setup useapi.net for details.
Request Body
{
"prompt": "A serene mountain landscape at sunset",
"aspectRatio": "16:9",
"style": "cinematic",
"shotType": "wide shot",
"shotAngle": "eye-level",
"seed": 123456
}
email
is optional when only one account configured. However, if you have multiple accounts configured, this parameter becomes required.prompt
is required, text description for image generation (max 2000 characters)location
is optional, location description for the image (max 2000 characters).weather
is optional, weather conditions description (max 2000 characters).lighting
is optional, lighting description (max 2000 characters).aspectRatio
is optional, output image aspect ratio.
Supported values:16:9
,9:16
,1:1
.
Default:16:9
.referenceAssetId
is optional, asset ID for reference image to influence generation (see model capabilities table above). Use fieldfileId
from POST assets/?type=reference-image or GET assets/?filter=images.reference_strength
is optional, strength of reference image influence 0-100 (see model capabilities table above).
Default:50
.style
is optional, image style to apply (see model capabilities table above).
Supported values:cinematic
,vintage
,low_key
,indy
,y2k
,pop
,grunge
,dreamy
,hand_drawn
,2d_novel
,boost
,scribble
,film_noir
,anime
,3d_cartoon
,colored
.
Default:base
(no style).shotType
is optional, type of shot for the image (e.g., “wide shot”, “close-up”, “medium shot”).shotAngle
is optional, camera angle for the shot.
Supported values:eye-level
,low-angle
,over-the-shoulder
,overhead
,birds-eye-view
.seed
is optional, random seed for reproducible results.model
is optional, the AI model to use for image generation.
Supported values:flux
,flux-premium
,nano-banana
.
Default:flux
.pollForResult
is optional, number of polling attempts to wait for completion (each attempt waits 3 seconds, up to 60 seconds total max) before sending job to the scheduler. For example,pollForResult: 5
will poll every 3 seconds for up to 15 seconds total. Supported values:1
-20
. Default: immediate return withjobId
.maxJobs
is optional, override the default maximum number of concurrent jobs.replyUrl
is optional, webhook URL for job completion notifications.
See GET assets/jobId
for response model.replyRef
is optional, custom reference for webhook identification.
Responses
-
{ "jobId": "email:[email protected]:7a34b821-9fd0-205e-d21b-4abc6f7839e7-type:image", "generationId": "gen_abc123def456" }
-
200 OK (pollForResult completed)
{ "status": { "type": "completed", "progress": 100, "artifact": { "assetUrl": "https://storage.googleapis.com/lt-infinity-prd/artifacts/vertex-ai/…", "expirationDateString": "1748919477350", "asset": { "type": "artifact", "fileId": "asset:3b18…-type:image/png", "mimeType": "image/png", "artifactSubtype": "vertex-ai" } } }, "jobId": "email:[email protected]:7a34b821-9fd0-205e-d21b-4abc6f7839e7-type:image", "replyRef": "custom-reference-123", "replyUrl": "https://webhook.example.com/ltx-callback", "code": 200 }
-
{ "error": "Error message", "code": 400 }
-
{ "error": "Unauthorized", "code": 401 }
-
{ "error": "Insufficient credits", "code": 402 }
Model
Use GET assets/jobId
to retrieve job status and results if they were not provided with the response.
{ // TypeScript, all fields are optional
status: {
type: 'active' | 'completed' | 'failed'
progress?: number
message?: string
artifact?: {
assetUrl: string
expirationDateString: string
asset: {
type: string
fileId: string
mimeType: string
artifactSubtype: string
}
}
}
jobId?: string
generationId?: string
replyRef?: string
replyUrl?: string
code?: number
}
Examples
-
curl "https://api.useapi.net/v1/ltxstudio/images/create" \ -H "Authorization: Bearer …" \ -H "Content-Type: application/json" \ -d '{ "prompt": "A serene mountain landscape at sunset", "aspectRatio": "16:9", "style": "cinematic", "shotType": "wide shot", "shotAngle": "eye-level", "pollForResult": 10 }'
-
const token = "API token"; const apiUrl = "https://api.useapi.net/v1/ltxstudio/images/create"; const response = await fetch(apiUrl, { method: "POST", headers: { "Authorization": `Bearer ${token}`, "Content-Type": "application/json", }, body: JSON.stringify({ "prompt": "A serene mountain landscape at sunset", "aspectRatio": "16:9", "style": "cinematic", "shotType": "wide shot", "shotAngle": "eye-level", "pollForResult": 10 }) }); const result = await response.json(); console.log("response", {response, result});
-
import requests token = "API token" apiUrl = "https://api.useapi.net/v1/ltxstudio/images/create" headers = { "Authorization" : f"Bearer {token}", "Content-Type": "application/json" } data = { "prompt": "A serene mountain landscape at sunset", "aspectRatio": "16:9", "style": "cinematic", "shotType": "wide shot", "shotAngle": "eye-level", "pollForResult": 10 } response = requests.post(apiUrl, headers=headers, json=data) print(response, response.json())