curl --request POST \
--url https://app.dafty.ai/api/v1/images/generate \
--header 'Content-Type: application/json' \
--header 'x-api-key: <api-key>' \
--data '
{
"prompt": "A minimalist logo of a mountain at sunrise, flat vector style",
"aspectRatio": "1:1",
"quality": "high",
"resolution": "2K",
"variations": 2
}
'import requests
url = "https://app.dafty.ai/api/v1/images/generate"
payload = {
"prompt": "A minimalist logo of a mountain at sunrise, flat vector style",
"aspectRatio": "1:1",
"quality": "high",
"resolution": "2K",
"variations": 2
}
headers = {
"x-api-key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'x-api-key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
prompt: 'A minimalist logo of a mountain at sunrise, flat vector style',
aspectRatio: '1:1',
quality: 'high',
resolution: '2K',
variations: 2
})
};
fetch('https://app.dafty.ai/api/v1/images/generate', 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://app.dafty.ai/api/v1/images/generate",
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([
'prompt' => 'A minimalist logo of a mountain at sunrise, flat vector style',
'aspectRatio' => '1:1',
'quality' => 'high',
'resolution' => '2K',
'variations' => 2
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"x-api-key: <api-key>"
],
]);
$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://app.dafty.ai/api/v1/images/generate"
payload := strings.NewReader("{\n \"prompt\": \"A minimalist logo of a mountain at sunrise, flat vector style\",\n \"aspectRatio\": \"1:1\",\n \"quality\": \"high\",\n \"resolution\": \"2K\",\n \"variations\": 2\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("x-api-key", "<api-key>")
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://app.dafty.ai/api/v1/images/generate")
.header("x-api-key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"prompt\": \"A minimalist logo of a mountain at sunrise, flat vector style\",\n \"aspectRatio\": \"1:1\",\n \"quality\": \"high\",\n \"resolution\": \"2K\",\n \"variations\": 2\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://app.dafty.ai/api/v1/images/generate")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["x-api-key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"prompt\": \"A minimalist logo of a mountain at sunrise, flat vector style\",\n \"aspectRatio\": \"1:1\",\n \"quality\": \"high\",\n \"resolution\": \"2K\",\n \"variations\": 2\n}"
response = http.request(request)
puts response.read_body{
"data": {
"id": "3f9a4c2e-7b1d-4e8a-9c3f-2a1b0c9d8e7f",
"type": "image.generate",
"status": "pending",
"createdAt": "2026-06-16T10:00:00.000Z"
}
}{
"error": {
"message": "<string>",
"code": "<string>",
"details": {}
}
}{
"error": {
"message": "<string>",
"code": "<string>",
"details": {}
}
}{
"error": {
"message": "<string>",
"code": "<string>",
"details": {}
}
}{
"error": {
"message": "<string>",
"code": "<string>",
"details": {}
}
}Generate a new image
curl --request POST \
--url https://app.dafty.ai/api/v1/images/generate \
--header 'Content-Type: application/json' \
--header 'x-api-key: <api-key>' \
--data '
{
"prompt": "A minimalist logo of a mountain at sunrise, flat vector style",
"aspectRatio": "1:1",
"quality": "high",
"resolution": "2K",
"variations": 2
}
'import requests
url = "https://app.dafty.ai/api/v1/images/generate"
payload = {
"prompt": "A minimalist logo of a mountain at sunrise, flat vector style",
"aspectRatio": "1:1",
"quality": "high",
"resolution": "2K",
"variations": 2
}
headers = {
"x-api-key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'x-api-key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
prompt: 'A minimalist logo of a mountain at sunrise, flat vector style',
aspectRatio: '1:1',
quality: 'high',
resolution: '2K',
variations: 2
})
};
fetch('https://app.dafty.ai/api/v1/images/generate', 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://app.dafty.ai/api/v1/images/generate",
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([
'prompt' => 'A minimalist logo of a mountain at sunrise, flat vector style',
'aspectRatio' => '1:1',
'quality' => 'high',
'resolution' => '2K',
'variations' => 2
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"x-api-key: <api-key>"
],
]);
$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://app.dafty.ai/api/v1/images/generate"
payload := strings.NewReader("{\n \"prompt\": \"A minimalist logo of a mountain at sunrise, flat vector style\",\n \"aspectRatio\": \"1:1\",\n \"quality\": \"high\",\n \"resolution\": \"2K\",\n \"variations\": 2\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("x-api-key", "<api-key>")
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://app.dafty.ai/api/v1/images/generate")
.header("x-api-key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"prompt\": \"A minimalist logo of a mountain at sunrise, flat vector style\",\n \"aspectRatio\": \"1:1\",\n \"quality\": \"high\",\n \"resolution\": \"2K\",\n \"variations\": 2\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://app.dafty.ai/api/v1/images/generate")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["x-api-key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"prompt\": \"A minimalist logo of a mountain at sunrise, flat vector style\",\n \"aspectRatio\": \"1:1\",\n \"quality\": \"high\",\n \"resolution\": \"2K\",\n \"variations\": 2\n}"
response = http.request(request)
puts response.read_body{
"data": {
"id": "3f9a4c2e-7b1d-4e8a-9c3f-2a1b0c9d8e7f",
"type": "image.generate",
"status": "pending",
"createdAt": "2026-06-16T10:00:00.000Z"
}
}{
"error": {
"message": "<string>",
"code": "<string>",
"details": {}
}
}{
"error": {
"message": "<string>",
"code": "<string>",
"details": {}
}
}{
"error": {
"message": "<string>",
"code": "<string>",
"details": {}
}
}{
"error": {
"message": "<string>",
"code": "<string>",
"details": {}
}
}Authorizations
Headers
Optional unique key (≤255 chars) that makes this create idempotent: a retry with the same key returns the original job rather than starting a new one. Scoped to your API key; retained ~24h.
255Body
The text prompt. Up to 2000 characters.
1 - 2000Aspect ratio of the generated image.
1:1, 3:2, 2:3, 4:3, 3:4, 4:5, 5:4, 16:9, 9:16 Output quality tier. Higher quality costs more credits and takes longer.
low, medium, high Output resolution. Higher resolutions cost more credits.
1K, 2K, 4K Apply one of your saved styles (brand colours, type, logo) to the generation.
^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$Up to 4 reference images to guide the generation.
4A reference image: either an https URL we ingest (SSRF-guarded, then re-hosted) or the id/url of one of your uploads or prior generations. Resolved server-side to our storage.
1 - 2048How many variations to generate from this single request (1-4). All are returned in result.images; each carries an id you can edit/resize/upscale independently.
1 <= x <= 4Response
Accepted
Show child attributes
Show child attributes

