Generate image using flux-2/flex-text-to-image
curl --request POST \
--url https://api.kie.ai/api/v1/jobs/createTask \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"model": "flux-2/flex-text-to-image",
"callBackUrl": "https://your-domain.com/api/callback",
"input": {
"prompt": "A humanoid figure with a vintage television set for a head, featuring a green-tinted screen displaying a `Hello FLUX.2` writing in ASCII font. The figure is wearing a yellow raincoat, and there are various wires and components attached to the television. The background is cloudy and indistinct, suggesting an outdoor setting",
"aspect_ratio": "1:1",
"resolution": "1K"
}
}
'import requests
url = "https://api.kie.ai/api/v1/jobs/createTask"
payload = {
"model": "flux-2/flex-text-to-image",
"callBackUrl": "https://your-domain.com/api/callback",
"input": {
"prompt": "A humanoid figure with a vintage television set for a head, featuring a green-tinted screen displaying a `Hello FLUX.2` writing in ASCII font. The figure is wearing a yellow raincoat, and there are various wires and components attached to the television. The background is cloudy and indistinct, suggesting an outdoor setting",
"aspect_ratio": "1:1",
"resolution": "1K"
}
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
model: 'flux-2/flex-text-to-image',
callBackUrl: 'https://your-domain.com/api/callback',
input: {
prompt: 'A humanoid figure with a vintage television set for a head, featuring a green-tinted screen displaying a `Hello FLUX.2` writing in ASCII font. The figure is wearing a yellow raincoat, and there are various wires and components attached to the television. The background is cloudy and indistinct, suggesting an outdoor setting',
aspect_ratio: '1:1',
resolution: '1K'
}
})
};
fetch('https://api.kie.ai/api/v1/jobs/createTask', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.kie.ai/api/v1/jobs/createTask",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'model' => 'flux-2/flex-text-to-image',
'callBackUrl' => 'https://your-domain.com/api/callback',
'input' => [
'prompt' => 'A humanoid figure with a vintage television set for a head, featuring a green-tinted screen displaying a `Hello FLUX.2` writing in ASCII font. The figure is wearing a yellow raincoat, and there are various wires and components attached to the television. The background is cloudy and indistinct, suggesting an outdoor setting',
'aspect_ratio' => '1:1',
'resolution' => '1K'
]
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.kie.ai/api/v1/jobs/createTask"
payload := strings.NewReader("{\n \"model\": \"flux-2/flex-text-to-image\",\n \"callBackUrl\": \"https://your-domain.com/api/callback\",\n \"input\": {\n \"prompt\": \"A humanoid figure with a vintage television set for a head, featuring a green-tinted screen displaying a `Hello FLUX.2` writing in ASCII font. The figure is wearing a yellow raincoat, and there are various wires and components attached to the television. The background is cloudy and indistinct, suggesting an outdoor setting\",\n \"aspect_ratio\": \"1:1\",\n \"resolution\": \"1K\"\n }\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.kie.ai/api/v1/jobs/createTask")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"model\": \"flux-2/flex-text-to-image\",\n \"callBackUrl\": \"https://your-domain.com/api/callback\",\n \"input\": {\n \"prompt\": \"A humanoid figure with a vintage television set for a head, featuring a green-tinted screen displaying a `Hello FLUX.2` writing in ASCII font. The figure is wearing a yellow raincoat, and there are various wires and components attached to the television. The background is cloudy and indistinct, suggesting an outdoor setting\",\n \"aspect_ratio\": \"1:1\",\n \"resolution\": \"1K\"\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.kie.ai/api/v1/jobs/createTask")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"model\": \"flux-2/flex-text-to-image\",\n \"callBackUrl\": \"https://your-domain.com/api/callback\",\n \"input\": {\n \"prompt\": \"A humanoid figure with a vintage television set for a head, featuring a green-tinted screen displaying a `Hello FLUX.2` writing in ASCII font. The figure is wearing a yellow raincoat, and there are various wires and components attached to the television. The background is cloudy and indistinct, suggesting an outdoor setting\",\n \"aspect_ratio\": \"1:1\",\n \"resolution\": \"1K\"\n }\n}"
response = http.request(request)
puts response.read_body{
"code": 200,
"msg": "success",
"data": {
"taskId": "task_flux-2_1765175490366"
}
}Flux-2
Flux-2 - Text to Image
High-quality photorealistic image generation powered by Flux-2’s advanced AI model
POST
/
api
/
v1
/
jobs
/
createTask
Generate image using flux-2/flex-text-to-image
curl --request POST \
--url https://api.kie.ai/api/v1/jobs/createTask \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"model": "flux-2/flex-text-to-image",
"callBackUrl": "https://your-domain.com/api/callback",
"input": {
"prompt": "A humanoid figure with a vintage television set for a head, featuring a green-tinted screen displaying a `Hello FLUX.2` writing in ASCII font. The figure is wearing a yellow raincoat, and there are various wires and components attached to the television. The background is cloudy and indistinct, suggesting an outdoor setting",
"aspect_ratio": "1:1",
"resolution": "1K"
}
}
'import requests
url = "https://api.kie.ai/api/v1/jobs/createTask"
payload = {
"model": "flux-2/flex-text-to-image",
"callBackUrl": "https://your-domain.com/api/callback",
"input": {
"prompt": "A humanoid figure with a vintage television set for a head, featuring a green-tinted screen displaying a `Hello FLUX.2` writing in ASCII font. The figure is wearing a yellow raincoat, and there are various wires and components attached to the television. The background is cloudy and indistinct, suggesting an outdoor setting",
"aspect_ratio": "1:1",
"resolution": "1K"
}
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
model: 'flux-2/flex-text-to-image',
callBackUrl: 'https://your-domain.com/api/callback',
input: {
prompt: 'A humanoid figure with a vintage television set for a head, featuring a green-tinted screen displaying a `Hello FLUX.2` writing in ASCII font. The figure is wearing a yellow raincoat, and there are various wires and components attached to the television. The background is cloudy and indistinct, suggesting an outdoor setting',
aspect_ratio: '1:1',
resolution: '1K'
}
})
};
fetch('https://api.kie.ai/api/v1/jobs/createTask', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.kie.ai/api/v1/jobs/createTask",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'model' => 'flux-2/flex-text-to-image',
'callBackUrl' => 'https://your-domain.com/api/callback',
'input' => [
'prompt' => 'A humanoid figure with a vintage television set for a head, featuring a green-tinted screen displaying a `Hello FLUX.2` writing in ASCII font. The figure is wearing a yellow raincoat, and there are various wires and components attached to the television. The background is cloudy and indistinct, suggesting an outdoor setting',
'aspect_ratio' => '1:1',
'resolution' => '1K'
]
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.kie.ai/api/v1/jobs/createTask"
payload := strings.NewReader("{\n \"model\": \"flux-2/flex-text-to-image\",\n \"callBackUrl\": \"https://your-domain.com/api/callback\",\n \"input\": {\n \"prompt\": \"A humanoid figure with a vintage television set for a head, featuring a green-tinted screen displaying a `Hello FLUX.2` writing in ASCII font. The figure is wearing a yellow raincoat, and there are various wires and components attached to the television. The background is cloudy and indistinct, suggesting an outdoor setting\",\n \"aspect_ratio\": \"1:1\",\n \"resolution\": \"1K\"\n }\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.kie.ai/api/v1/jobs/createTask")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"model\": \"flux-2/flex-text-to-image\",\n \"callBackUrl\": \"https://your-domain.com/api/callback\",\n \"input\": {\n \"prompt\": \"A humanoid figure with a vintage television set for a head, featuring a green-tinted screen displaying a `Hello FLUX.2` writing in ASCII font. The figure is wearing a yellow raincoat, and there are various wires and components attached to the television. The background is cloudy and indistinct, suggesting an outdoor setting\",\n \"aspect_ratio\": \"1:1\",\n \"resolution\": \"1K\"\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.kie.ai/api/v1/jobs/createTask")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"model\": \"flux-2/flex-text-to-image\",\n \"callBackUrl\": \"https://your-domain.com/api/callback\",\n \"input\": {\n \"prompt\": \"A humanoid figure with a vintage television set for a head, featuring a green-tinted screen displaying a `Hello FLUX.2` writing in ASCII font. The figure is wearing a yellow raincoat, and there are various wires and components attached to the television. The background is cloudy and indistinct, suggesting an outdoor setting\",\n \"aspect_ratio\": \"1:1\",\n \"resolution\": \"1K\"\n }\n}"
response = http.request(request)
puts response.read_body{
"code": 200,
"msg": "success",
"data": {
"taskId": "task_flux-2_1765175490366"
}
}Query Task Status
After submitting a task, use the unified query endpoint to check progress and retrieve results:Get Task Details
Learn how to query task status and retrieve generation results
For production use, we recommend using the
callBackUrl parameter to receive automatic notifications when generation completes, rather than polling the status endpoint.Related Resources
Market Overview
Explore all available models
Common API
Check credits and account usage
Authorizations
All APIs require authentication via Bearer Token.
Get API Key:
- Visit the API Key Management Page to get your API Key
Usage: Add to request headers: Authorization: Bearer YOUR_API_KEY
Notes:
- Keep your API Key secure and do not share it with others
- If you suspect your API Key has been compromised, reset it immediately on the management page
Body
application/json
Model name for the generation task. Required field.
- This endpoint must use the
flux-2/flex-text-to-imagemodel
Available options:
flux-2/flex-text-to-image Example:
"flux-2/flex-text-to-image"
Callback URL to receive notifications when the generation task is completed. Optional configuration, recommended for production environments.
- After the task is generated, the system will POST task status and results to this URL
- The callback content includes the generated resource URL and task-related information
- Your callback endpoint needs to support receiving POST requests with JSON payloads
- Alternatively, you can call the task details endpoint to actively poll task status
- To ensure callback security, see Webhook Verification Guide for signature verification implementation
Example:
"https://your-domain.com/api/callback"
Input parameters for the generation task
Show child attributes
Show child attributes
Response
Request successful
Response status code
- 200: Success - Request has been processed successfully
- 401: Unauthorized - Authentication credentials are missing or invalid
- 402: Insufficient Credits - Account credits are insufficient to perform this operation
- 404: Not Found - The requested resource or endpoint does not exist
- 422: Validation Error - Request parameters failed validation
- 429: Rate Limit - Request frequency limit for this resource has been exceeded
- 455: Service Unavailable - System is under maintenance
- 500: Server Error - An unexpected error occurred while processing the request
- 501: Generation Failed - Content generation task execution failed
- 505: Feature Disabled - The requested feature is currently unavailable
Available options:
200, 401, 402, 404, 422, 429, 455, 500, 501, 505 Response message, error description when request fails
Example:
"success"
Show child attributes
Show child attributes
