Text to Image Endpoint
Overview
Stable Diffusion V3 APIs Text2Image API generates an image from a text prompt.
This endpoint generates and returns an image from a text passed in the request body.

Request
--request POST 'https://modelslab.com/api/v3/text2img' \
Make a POST
request to https://modelslab.com/api/v3/text2img endpoint and pass the required parameters as a request body.
Watch the how-to video to see it in action.
Body Attributes
Parameter | Description |
---|---|
key | Your API Key used for request authorization. |
prompt | Text prompt with description of the things you want in the image to be generated. |
negative_prompt | Items you don't want in the image. |
width | Max Height: Width: 1024x1024. |
height | Max Height: Width: 1024x1024. |
samples | Number of images to be returned in response. The maximum value is 4. |
num_inference_steps | Number of denoising steps. Available values: 21, 31, 41, 51. |
safety_checker | A checker for NSFW images. If such an image is detected, it will be replaced by a blank image. |
enhance_prompt | Enhance prompts for better results; default: yes, options: yes/no. |
seed | Seed is used to reproduce results, same seed will give you same image in return again. Pass null for a random number. |
guidance_scale | Scale for classifier-free guidance (minimum: 1; maximum: 20). |
multi_lingual | Allow multi lingual prompt to generate images. Use "no" for the default English. |
panorama | Set this parameter to "yes" to generate a panorama image. |
self_attention | If you want a high quality image, set this parameter to "yes". In this case the image generation will take more time. |
upscale | Set this parameter to "yes" if you want to upscale the given image resolution two times (2x). If the requested resolution is 512 x 512 px, the generated image will be 1024 x 1024 px. |
webhook | Set an URL to get a POST API call once the image generation is complete. |
track_id | This ID is returned in the response to the webhook API call. This will be used to identify the webhook request. |
Multi_lingual Supported Languages
If you use a language different from English in you text prompts, pass the "multi_lingual" parameter with "yes" value in the request body. This will trigger an automatic language detection and translation during the processing of your request.
The following languages are supported:
Arabic (ar_AR), Czech (cs_CZ), German (de_DE), English (en_XX), Spanish (es_XX), Estonian (et_EE), Finnish (fi_FI), French (fr_XX), Gujarati (gu_IN), Hindi (hi_IN), Italian (it_IT), Japanese (ja_XX), Kazakh (kk_KZ), Korean (ko_KR), Lithuanian (lt_LT), Latvian (lv_LV), Burmese (my_MM), Nepali (ne_NP), Dutch (nl_XX), Romanian (ro_RO), Russian (ru_RU), Sinhala (si_LK), Turkish (tr_TR), Vietnamese (vi_VN), Chinese (zh_CN), Afrikaans (af_ZA), Azerbaijani (az_AZ), Bengali (bn_IN), Persian (fa_IR), Hebrew (he_IL), Croatian (hr_HR), Indonesian (id_ID), Georgian (ka_GE), Khmer (km_KH), Macedonian (mk_MK), Malayalam (ml_IN), Mongolian (mn_MN), Marathi (mr_IN), Polish (pl_PL), Pashto (ps_AF), Portuguese (pt_XX), Swedish (sv_SE), Swahili (sw_KE), Tamil (ta_IN), Telugu (te_IN), Thai (th_TH), Tagalog (tl_XX), Ukrainian (uk_UA), Urdu (ur_PK), Xhosa (xh_ZA), Galician (gl_ES), Slovene (sl_SI)
Example
Body
{
"key": "",
"prompt": "ultra realistic close up portrait ((beautiful pale cyberpunk female with heavy black eyeliner))",
"negative_prompt": null,
"width": "512",
"height": "512",
"samples": "1",
"num_inference_steps": "20",
"safety_checker": "no",
"enhance_prompt": "yes",
"seed": null,
"guidance_scale": 7.5,
"multi_lingual": "no",
"panorama": "no",
"self_attention": "no",
"upscale": "no",
"webhook": null,
"track_id": null
}
Request
- JS
- PHP
- NODE
- PYTHON
- JAVA
var myHeaders = new Headers();
myHeaders.append("Content-Type", "application/json");
var raw = JSON.stringify({
"key": "",
"prompt": "ultra realistic close up portrait ((beautiful pale cyberpunk female with heavy black eyeliner))",
"negative_prompt": null,
"width": "512",
"height": "512",
"samples": "1",
"num_inference_steps": "20",
"seed": null,
"guidance_scale": 7.5,
"safety_checker": "yes",
"multi_lingual": "no",
"panorama": "no",
"self_attention": "no",
"upscale": "no",
"webhook": null,
"track_id": null
});
var requestOptions = {
method: 'POST',
headers: myHeaders,
body: raw,
redirect: 'follow'
};
fetch("https://modelslab.com/api/v3/text2img", requestOptions)
.then(response => response.text())
.then(result => console.log(result))
.catch(error => console.log('error', error));
<?php
$payload = [
"key" => "",
"prompt" => "ultra realistic close up portrait ((beautiful pale cyberpunk female with heavy black eyeliner))",
"negative_prompt" => null,
"width" => "512",
"height" => "512",
"samples" => "1",
"num_inference_steps" => "20",
"seed" => null,
"guidance_scale" => 7.5,
"safety_checker" => "yes",
"multi_lingual" => "no",
"panorama" => "no",
"self_attention" => "no",
"upscale" => "no",
"webhook" => null,
"track_id" => null
];
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => 'https://modelslab.com/api/v3/text2img',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => '',
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 0,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => 'POST',
CURLOPT_POSTFIELDS => json_encode($payload),
CURLOPT_HTTPHEADER => array(
'Content-Type: application/json'
),
));
$response = curl_exec($curl);
curl_close($curl);
echo $response;
var request = require('request');
var options = {
'method': 'POST',
'url': 'https://modelslab.com/api/v3/text2img',
'headers': {
'Content-Type': 'application/json'
},
body: JSON.stringify({
"key": "",
"prompt": "ultra realistic close up portrait ((beautiful pale cyberpunk female with heavy black eyeliner))",
"negative_prompt": null,
"width": "512",
"height": "512",
"samples": "1",
"num_inference_steps": "20",
"seed": null,
"guidance_scale": 7.5,
"safety_checker": "yes",
"multi_lingual": "no",
"panorama": "no",
"self_attention": "no",
"upscale": "no",
"webhook": null,
"track_id": null
})
};
request(options, function (error, response) {
if (error) throw new Error(error);
console.log(response.body);
});
import requests
import json
url = "https://modelslab.com/api/v3/text2img"
payload = json.dumps({
"key": "",
"prompt": "ultra realistic close up portrait ((beautiful pale cyberpunk female with heavy black eyeliner))",
"negative_prompt": None,
"width": "512",
"height": "512",
"samples": "1",
"num_inference_steps": "20",
"seed": None,
"guidance_scale": 7.5,
"safety_checker": "yes",
"multi_lingual": "no",
"panorama": "no",
"self_attention": "no",
"upscale": "no",
"webhook": None,
"track_id": None
})
headers = {
'Content-Type': 'application/json'
}
response = requests.request("POST", url, headers=headers, data=payload)
print(response.text)
OkHttpClient client = new OkHttpClient().newBuilder()
.build();
MediaType mediaType = MediaType.parse("application/json");
RequestBody body = RequestBody.create(mediaType, "{\n \"key\": \"\",\n \"prompt\": \"ultra realistic close up portrait ((beautiful pale cyberpunk female with heavy black eyeliner))\",\n \"negative_prompt\": null,\n \"width\": \"512\",\n \"height\": \"512\",\n \"samples\": \"1\",\n \"num_inference_steps\": \"20\",\n \"seed\": null,\n \"guidance_scale\": 7.5,\n\"safety_checker\":\"yes\",\n \"multi_lingual\":\"no\",\n \"panorama\":\"no\",\n \"self_attention\":\"no\",\n \"upscale\":\"no\",\n \"webhook\": null,\n \"track_id\": null\n}");
Request request = new Request.Builder()
.url("https://modelslab.com/api/v3/text2img")
.method("POST", body)
.addHeader("Content-Type", "application/json")
.build();
Response response = client.newCall(request).execute();
Response
{
"status": "success",
"generationTime": 1.1100268745422363,
"id": 92544837,
"output": [
"https://pub-3626123a908346a7a8be8d9295f44e26.r2.dev/generations/ee028984-5eef-44cd-9ce6-02085eab876b-0.png"
],
"proxy_links": [
"https://cdn2.stablediffusionapi.com/generations/ee028984-5eef-44cd-9ce6-02085eab876b-0.png"
],
"meta": {
"base64": "no",
"enhance_prompt": "no",
"enhance_style": null,
"file_prefix": "ee028984-5eef-44cd-9ce6-02085eab876b",
"guidance_scale": 1,
"height": 512,
"instant_response": "no",
"n_samples": 1,
"negative_prompt": "bad quality",
"outdir": "out",
"prompt": "ultra realistic close up portrait ((beautiful pale cyberpunk female with heavy black eyeliner))",
"safety_checker": "no",
"safety_checker_type": "black",
"seed": 2486957157,
"temp": "no",
"width": 512
}
}