curl --request POST \
--url https://api.apimart.ai/v1/images/generations \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{
"model": "qwen-image-3.0",
"prompt": "A cafe poster with the title Autumn Limited, warm tones, refined layout",
"size": "16:9",
"resolution": "1K"
}'
import requests
url = "https://api.apimart.ai/v1/images/generations"
payload = {
"model": "qwen-image-3.0",
"prompt": "A cafe poster with the title Autumn Limited, warm tones, refined layout",
"size": "16:9",
"resolution": "1K",
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json",
}
response = requests.post(url, json=payload, headers=headers)
print(response.json())
const url = "https://api.apimart.ai/v1/images/generations";
const payload = {
model: "qwen-image-3.0",
prompt: "A cafe poster with the title Autumn Limited, warm tones, refined layout",
size: "16:9",
resolution: "1K",
};
const headers = {
Authorization: "Bearer <token>",
"Content-Type": "application/json",
};
fetch(url, {
method: "POST",
headers: headers,
body: JSON.stringify(payload),
})
.then((response) => response.json())
.then((data) => console.log(data))
.catch((error) => console.error("Error:", error));
{
"code": 200,
"data": [
{
"status": "submitted",
"task_id": "task_01JGXYZ1234567890ABCDEF"
}
]
}
{
"error": {
"code": 400,
"message": "Invalid request parameters",
"type": "invalid_request_error"
}
}
{
"error": {
"code": 401,
"message": "Authentication failed, please check your API key",
"type": "authentication_error"
}
}
{
"error": {
"code": 402,
"message": "Insufficient account balance, please top up and try again",
"type": "payment_required"
}
}
{
"error": {
"code": 429,
"message": "Too many requests, please try again later",
"type": "rate_limit_error"
}
}
Qwen Image 3.0
Génération d'images Qwen Image 3.0
- Mode de traitement asynchrone, retourne un identifiant de tâche pour les requêtes ultérieures
- Prend en charge texte-vers-image et image-vers-image (1 à 3 images de référence pour l’édition)
- Prend en charge les résolutions 1K / 2K, jusqu’à 6 images par requête
- Variantes Standard et Pro (Pro est plus performant pour les mises en page denses et le texte)
POST
/
v1
/
images
/
generations
curl --request POST \
--url https://api.apimart.ai/v1/images/generations \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{
"model": "qwen-image-3.0",
"prompt": "A cafe poster with the title Autumn Limited, warm tones, refined layout",
"size": "16:9",
"resolution": "1K"
}'
import requests
url = "https://api.apimart.ai/v1/images/generations"
payload = {
"model": "qwen-image-3.0",
"prompt": "A cafe poster with the title Autumn Limited, warm tones, refined layout",
"size": "16:9",
"resolution": "1K",
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json",
}
response = requests.post(url, json=payload, headers=headers)
print(response.json())
const url = "https://api.apimart.ai/v1/images/generations";
const payload = {
model: "qwen-image-3.0",
prompt: "A cafe poster with the title Autumn Limited, warm tones, refined layout",
size: "16:9",
resolution: "1K",
};
const headers = {
Authorization: "Bearer <token>",
"Content-Type": "application/json",
};
fetch(url, {
method: "POST",
headers: headers,
body: JSON.stringify(payload),
})
.then((response) => response.json())
.then((data) => console.log(data))
.catch((error) => console.error("Error:", error));
{
"code": 200,
"data": [
{
"status": "submitted",
"task_id": "task_01JGXYZ1234567890ABCDEF"
}
]
}
{
"error": {
"code": 400,
"message": "Invalid request parameters",
"type": "invalid_request_error"
}
}
{
"error": {
"code": 401,
"message": "Authentication failed, please check your API key",
"type": "authentication_error"
}
}
{
"error": {
"code": 402,
"message": "Insufficient account balance, please top up and try again",
"type": "payment_required"
}
}
{
"error": {
"code": 429,
"message": "Too many requests, please try again later",
"type": "rate_limit_error"
}
}
curl --request POST \
--url https://api.apimart.ai/v1/images/generations \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{
"model": "qwen-image-3.0",
"prompt": "A cafe poster with the title Autumn Limited, warm tones, refined layout",
"size": "16:9",
"resolution": "1K"
}'
import requests
url = "https://api.apimart.ai/v1/images/generations"
payload = {
"model": "qwen-image-3.0",
"prompt": "A cafe poster with the title Autumn Limited, warm tones, refined layout",
"size": "16:9",
"resolution": "1K",
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json",
}
response = requests.post(url, json=payload, headers=headers)
print(response.json())
const url = "https://api.apimart.ai/v1/images/generations";
const payload = {
model: "qwen-image-3.0",
prompt: "A cafe poster with the title Autumn Limited, warm tones, refined layout",
size: "16:9",
resolution: "1K",
};
const headers = {
Authorization: "Bearer <token>",
"Content-Type": "application/json",
};
fetch(url, {
method: "POST",
headers: headers,
body: JSON.stringify(payload),
})
.then((response) => response.json())
.then((data) => console.log(data))
.catch((error) => console.error("Error:", error));
{
"code": 200,
"data": [
{
"status": "submitted",
"task_id": "task_01JGXYZ1234567890ABCDEF"
}
]
}
{
"error": {
"code": 400,
"message": "Invalid request parameters",
"type": "invalid_request_error"
}
}
{
"error": {
"code": 401,
"message": "Authentication failed, please check your API key",
"type": "authentication_error"
}
}
{
"error": {
"code": 402,
"message": "Insufficient account balance, please top up and try again",
"type": "payment_required"
}
}
{
"error": {
"code": 429,
"message": "Too many requests, please try again later",
"type": "rate_limit_error"
}
}
Modèles pris en charge
| Modèle | Description | Images max | Résolution |
|---|---|---|---|
qwen-image-3.0 | Suivi d’instructions clair, rendu de texte stable ; meilleur rapport qualité-prix pour un usage général | 6 | 1K / 2K |
qwen-image-3.0-pro | Contenu plus riche ; idéal pour journaux, storyboards, menus, examens, mises en page denses | 6 | 1K / 2K |
Préférez
-pro pour le texte/mise en page dense. Utilisez qwen-image-3.0 pour les images générales. Prompt max ~4.5k tokens. Les noms de modèles ne sont pas interchangeables avec la série 2.0.Autorisations
string
requis
Tous les points de terminaison nécessitent une authentification Bearer TokenObtenez votre clé API depuis la page de gestion des clés API :
Authorization: Bearer YOUR_API_KEY
Body
string
requis
Nom du modèle
qwen-image-3.0- Standardqwen-image-3.0-pro- Pro (texte / mise en page dense)
boolean
défaut:"false"
Indique s’il faut modérer le contenu avant d’envoyer la tâche d’image.
true: vérifier les prompts et les images d’entrée avecomni-moderation-latestfalseou omis : ne pas envoyer de requête de modération, sans coût ni latence de modération supplémentaires (par défaut)
string
requis
Description textuelle pour la génération d’images, max ~4.5k tokens
string[]
Tableau d’URL d’images de référence (image-vers-image / édition), 1-3 images
- URL publique
http(s)://oudata:image/png;base64,...(le base64 est d’abord re-téléversé) - Formats : JPG / JPEG / PNG / BMP / TIFF / WEBP / GIF
- Par fichier ≤ 10MB ; largeur/hauteur recommandées 384-2048 px
string
défaut:"1K"
Niveau de résolution (affecte le palier de facturation)
1K(par défaut ; minuscules acceptées)2K
size (ex. 1600x900). Avec des pixels bruts, une surface > 2,25M pixels est facturée en 2K.string
défaut:"1:1"
Rapport d’aspect, ou taille en pixels expliciteRapports pris en charge :
1:1(par défaut)4:3/3:416:9/9:163:2/2:3
16x9, ou des pixels comme 1024x1024. Pour des pixels personnalisés, chaque côté (largeur et hauteur) doit être 512–2048, ratio d’aspect 1:8 ~ 8:1.Si ni size ni resolution n’est défini, la sortie est fixée à 1024×1024.integer
défaut:"1"
Nombre d’images, 1-6. Les valeurs supérieures à 6 sont plafonnées à 6.
string
Prompt négatif : contenu à éviter
boolean
défaut:"false"
Réécriture intelligente du promptDésactivé par défaut pour des résultats prévisibles. Passez à
true pour activer la réécriture intelligente.string
Mode de réécriture (série 3.0 uniquement ; nécessite
prompt_extend: true)direct- fonctionne pour texte-vers-image et image-vers-imageagent- texte-vers-image uniquement, réécriture plus agressive
Tableau de référence des tailles
Combinezresolution (palier) + size (rapport) :
| Résolution | 1:1 | 4:3 | 3:4 | 16:9 | 9:16 | 3:2 | 2:3 |
|---|---|---|---|---|---|---|---|
| 1K | 1024×1024 | 1152×864 | 864×1152 | 1280×720 | 720×1280 | 1248×832 | 832×1248 |
| 2K | 2048×2048 | 2048×1536 | 1536×2048 | 2048×1152 | 1152×2048 | 2048×1360 | 1360×2048 |
Cas d’usage
Texte-vers-image (multiple)
{
"model": "qwen-image-3.0",
"prompt": "Flat illustration of a city skyline at dusk, warm orange tones",
"size": "16:9",
"resolution": "1K",
"n": 4
}
Mise en page dense avec réécriture
{
"model": "qwen-image-3.0-pro",
"prompt": "A Western restaurant menu with appetizers, mains, and desserts columns, five dishes each with prices, serif font, cream background",
"size": "3:4",
"resolution": "2K",
"prompt_extend": true,
"prompt_extend_mode": "agent"
}
Image-vers-image (édition)
{
"model": "qwen-image-3.0-pro",
"prompt": "Change the sign text to Open, keep everything else the same",
"image_urls": ["https://example.com/shop.jpg"],
"size": "1:1"
}
Prompt négatif
{
"model": "qwen-image-3.0",
"prompt": "Photorealistic mountain cabin in morning mist",
"negative_prompt": "text, watermark, people, low resolution",
"size": "3:2"
}
Limites
| Élément | Limite |
|---|---|
| Prompt | ≤ 4.5k tokens |
| Taille de sortie | Pixels personnalisés : chaque côté 512–2048 ; aspect 1:8 ~ 8:1 |
| Nombre d’images | 1-6 (excédent plafonné) |
| Images de référence | 1-3 |
| Formats de référence | JPG / JPEG / PNG / BMP / TIFF / WEBP / GIF |
| Taille de référence | ≤ 10MB ; largeur/hauteur recommandées 384-2048 px |
Response
integer
Code de statut ; 200 en cas de succès
array
Différences par rapport à 2.0
| Série 2.0 | Série 3.0 | |
|---|---|---|
| Longueur du prompt | Plus courte | ~4.5k tokens |
prompt_extend_mode | Non pris en charge | direct / agent |
| Résolution | 1K / 2K | 1K / 2K (Pro 2K coûte plus cher) |
| Images de référence | Pris en charge | 1-3 images |
Remarques
- Asynchrone : la soumission renvoie un
task_id. Interrogez Obtenir le statut d’une tâche toutes les 3~5 secondes ; timeout client ~3 minutes (2K + multi-images est plus lent). - Stockage : les images sont mises en miroir sur le CDN de la plateforme pour un accès à long terme.
- Facturation : par image livrée × palier de résolution selon la surface en pixels réelle (> 2,25M pixels = 2K).
qwen-image-3.0facture le même prix pour 1K/2K ;-pro2K est 2× 1K. Les échecs sont entièrement remboursés ; les images de référence sont gratuites. - Erreurs : taille/ratio invalide,
agentsur image-vers-image, références inaccessibles/trop volumineuses → 400 ; limite de débit → 429.
Consulter les résultatsUtilisez Obtenir le statut d’une tâche pour la progression et
result.images.