curl --request POST \
--url https://api.apimart.ai/v1/images/generations \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{
"model": "flux-3-image",
"prompt": "Plan cinématographique ultra-large d’une route côtière dans le brouillard à l’aube, une seule voiture ancienne avec les phares allumés",
"aspect_ratio": "21:9",
"resolution": "2k"
}'
import requests
response = requests.post(
"https://api.apimart.ai/v1/images/generations",
headers={"Authorization": "Bearer <token>"},
json={
"model": "flux-3-image",
"prompt": "Plan cinématographique ultra-large d’une route côtière dans le brouillard à l’aube, une seule voiture ancienne avec les phares allumés",
"aspect_ratio": "21:9",
"resolution": "2k"
}
)
print(response.json())
const response = await fetch("https://api.apimart.ai/v1/images/generations", {
method: "POST",
headers: {
Authorization: "Bearer <token>",
"Content-Type": "application/json"
},
body: JSON.stringify({
model: "flux-3-image",
prompt: "Plan cinématographique ultra-large d’une route côtière dans le brouillard à l’aube, une seule voiture ancienne avec les phares allumés",
aspect_ratio: "21:9",
resolution: "2k"
})
});
console.log(await response.json());
{
"code": 200,
"data": [
{
"status": "submitted",
"task_id": "task_01K..."
}
]
}
FLUX 3 Image
FLUX 3 Image Génération d’images
Génération texte-image, retouche d’une image et jusqu’à 10 images de référence, avec plusieurs rapports d’aspect et une résolution jusqu’à 4k.
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": "flux-3-image",
"prompt": "Plan cinématographique ultra-large d’une route côtière dans le brouillard à l’aube, une seule voiture ancienne avec les phares allumés",
"aspect_ratio": "21:9",
"resolution": "2k"
}'
import requests
response = requests.post(
"https://api.apimart.ai/v1/images/generations",
headers={"Authorization": "Bearer <token>"},
json={
"model": "flux-3-image",
"prompt": "Plan cinématographique ultra-large d’une route côtière dans le brouillard à l’aube, une seule voiture ancienne avec les phares allumés",
"aspect_ratio": "21:9",
"resolution": "2k"
}
)
print(response.json())
const response = await fetch("https://api.apimart.ai/v1/images/generations", {
method: "POST",
headers: {
Authorization: "Bearer <token>",
"Content-Type": "application/json"
},
body: JSON.stringify({
model: "flux-3-image",
prompt: "Plan cinématographique ultra-large d’une route côtière dans le brouillard à l’aube, une seule voiture ancienne avec les phares allumés",
aspect_ratio: "21:9",
resolution: "2k"
})
});
console.log(await response.json());
{
"code": 200,
"data": [
{
"status": "submitted",
"task_id": "task_01K..."
}
]
}
Cet endpoint est asynchrone. Une soumission réussie renvoie un
task_id. Utilisez la consultation des tâches pour obtenir l’état et les images. Arrêtez les interrogations lorsque l’état est completed ou failed. La génération en 4k peut prendre plusieurs minutes ; un délai d’attente global de 10 minutes est recommandé.curl --request POST \
--url https://api.apimart.ai/v1/images/generations \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{
"model": "flux-3-image",
"prompt": "Plan cinématographique ultra-large d’une route côtière dans le brouillard à l’aube, une seule voiture ancienne avec les phares allumés",
"aspect_ratio": "21:9",
"resolution": "2k"
}'
import requests
response = requests.post(
"https://api.apimart.ai/v1/images/generations",
headers={"Authorization": "Bearer <token>"},
json={
"model": "flux-3-image",
"prompt": "Plan cinématographique ultra-large d’une route côtière dans le brouillard à l’aube, une seule voiture ancienne avec les phares allumés",
"aspect_ratio": "21:9",
"resolution": "2k"
}
)
print(response.json())
const response = await fetch("https://api.apimart.ai/v1/images/generations", {
method: "POST",
headers: {
Authorization: "Bearer <token>",
"Content-Type": "application/json"
},
body: JSON.stringify({
model: "flux-3-image",
prompt: "Plan cinématographique ultra-large d’une route côtière dans le brouillard à l’aube, une seule voiture ancienne avec les phares allumés",
aspect_ratio: "21:9",
resolution: "2k"
})
});
console.log(await response.json());
{
"code": 200,
"data": [
{
"status": "submitted",
"task_id": "task_01K..."
}
]
}
En-têtes de requête
string
requis
Authentification Bearer au format
Bearer <token>, où <token> est votre APIMart API Key.Paramètres de requête
string
requis
Doit être
flux-3-image.string
requis
Description de la scène pour le texte-image, ou instructions de retouche. Les prompts négatifs ne sont pas pris en charge ; décrivez plutôt le résultat souhaité.Utilisez des balises et du JSON bbox dans
prompt pour définir une disposition ou des zones de retouche locale. Voir les exemples ci-dessous.string[]
Liste des images de référence, jusqu’à 10 images. Accepte les URL HTTP(S) accessibles publiquement ou les données Base64.Omettez ce paramètre pour le texte-image. Fournissez une image pour une retouche simple, ou plusieurs images comme références.
string
défaut:"auto"
Rapport d’aspect de sortie. Valeurs prises en charge :
21:9, 2:1, 16:9, 3:2, 7:5, 4:3, 5:4, 1:1, 4:5, 3:4, 5:7, 2:3, 9:16, 1:2, 9:21 ou auto.Les formats tels que 16x9 sont également acceptés. Avec auto :- Retouche ou références multiples : suit le rapport d’aspect de la première image de référence.
- Texte-image : déterminé par le prompt ; utilise
1:1si aucun rapport n’est déterminé.
string
Paramètre de compatibilité pour le rapport d’aspect. Peut remplacer
aspect_ratio avec les mêmes valeurs. Il est recommandé de n’utiliser qu’un seul de ces champs.Les dimensions en pixels telles que 1024x1024 ne sont pas prises en charge et renvoient HTTP 400. Utilisez resolution pour choisir la résolution de sortie.string
défaut:"1k"
Niveau de résolution. Accepte
768sq, 1k, 1.5k, 2k et 4k, sans distinction de casse. 768 équivaut à 768sq.Ce paramètre détermine le niveau tarifaire. S’il est omis, la génération et la facturation utilisent 1k. Les valeurs non prises en charge, comme 3k, renvoient HTTP 400.integer
défaut:"2"
Tolérance de sécurité du contenu, de 0 à 4. 0 est le niveau le plus strict.
boolean
défaut:"true"
Autorise ou non les recherches web ou d’images avant la génération. Définissez
false pour désactiver.Doit être un booléen, et non les chaînes "false" ou "true".integer
défaut:"1"
Chaque requête génère 1 image ; seule la valeur
1 est acceptée. Pour plusieurs images, soumettez des tâches séparées. Une valeur supérieure à 1 renvoie HTTP 400.Paramètres non pris en charge
Les paramètres suivants renvoient HTTP 400 lorsqu’ils sont fournis ; ils ne sont pas ignorés silencieusement :width,height- Dimensions en pixels dans
size, par exemple1024x1024 seed,steps,guidanceoutput_format,negative_prompt,prompt_upsampling,mask_url
resolution pour une résolution supérieure et aspect_ratio pour un rapport d’aspect précis.
Retoucher une image de référence
{
"model": "flux-3-image",
"prompt": "Rendez la voiture de l’image rouge en conservant la route, l’arrière-plan et l’éclairage d’origine",
"image_urls": ["https://example.com/car.jpg"],
"aspect_ratio": "auto",
"resolution": "2k"
}
image_urls, sans dépasser 10 images au total.
Références multiples
La retouche, la retouche locale et la mise en page utilisent le même endpoint et le même modèle de cette page, avec une facturation selonresolution. Les références sont numérotées dans l’ordre : ref_image_0 pour la première, ref_image_1 pour la deuxième. Vous pouvez aussi écrire Image 1 / Image 2 dans le prompt.
{
"model": "flux-3-image",
"prompt": "Transformez Image 1 dans le style de Image 2.",
"image_urls": [
"https://example.com/subject.jpg",
"https://example.com/style.jpg"
],
"aspect_ratio": "auto"
}
Retouche locale (bounding box)
Commencezprompt par des instructions en langage naturel et désignez les éléments par des <balises>, comme <car_1>. Ajoutez ensuite un tableau JSON dans la même chaîne, avec un objet par cadre. bbox n’est pas un paramètre de requête séparé.
| Champ | Description |
|---|---|
id | Correspond à la balise de l’élément dans le prompt, sans les chevrons. |
from | Source de l’élément, par exemple ref_image_0 ; utilisez null pour les éléments à dessiner ou redessiner. |
src_bbox | Cadre dans l’image source ; vaut aussi null lorsque from vaut null. |
tgt_bbox | Cadre dans l’image de sortie ; identique à src_bbox pour conserver la position, différent pour déplacer l’élément. |
desc | Décrit comment modifier l’élément ou ce qu’il faut conserver. |
src_bbox, tgt_bbox, bbox) utilisent [haut, gauche, bas, droite], soit [y1, x1, y2, x2], sur une grille normalisée de 0 à 1000 : [0,0] en haut à gauche et [1000,1000] en bas à droite. Ce ne sont pas des coordonnées en pixels.
Cet exemple rend la voiture encadrée rouge et décrit l’arrière-plan à conserver. L’URL et les positions des cadres sont illustratives ; adaptez-les à votre image.
{
"model": "flux-3-image",
"prompt": "Dans <ref_image_0>, rendez la voiture <car_1> rouge et conservez l’arrière-plan <background_1>. [{\"id\":\"car_1\",\"from\":null,\"src_bbox\":null,\"tgt_bbox\":[250,300,750,800],\"desc\":\"Une voiture rouge conservant sa forme et son orientation d’origine.\"},{\"id\":\"background_1\",\"from\":\"ref_image_0\",\"src_bbox\":[0,0,1000,1000],\"tgt_bbox\":[0,0,1000,1000],\"desc\":\"Conserver la route, l’arrière-plan et l’éclairage d’origine.\"}]",
"image_urls": [
"https://example.com/car.jpg"
],
"aspect_ratio": "auto",
"resolution": "2k"
}
Déplacer un élément
Placez l’objet suivant dans le tableau bbox à la fin du prompt.from désigne l’image source, src_bbox la position d’origine et tgt_bbox la nouvelle position. Utilisez aussi la balise correspondante <knight_1> dans les instructions en langage naturel.
{
"id": "knight_1",
"from": "ref_image_0",
"src_bbox": [
500,
150,
850,
350
],
"tgt_bbox": [
194,
55,
544,
255
],
"desc": "Une petite figurine de chevalier gris en amigurumi."
}
Mise en page texte-image
La mise en page fonctionne aussi sans image de référence. Chaque cadre utiliseid, bbox et desc. Définissez explicitement aspect_ratio, car la grille de coordonnées s’étire avec le rapport d’aspect.
{
"model": "flux-3-image",
"aspect_ratio": "1:1",
"prompt": "Illustration minimaliste d’une silhouette noire courant <silhouette_1> sur un fond chartreuse uni <background_1>. [{\"id\":\"background_1\",\"bbox\":[0,0,1000,1000],\"desc\":\"Un fond jaune-vert fluorescent avec une légère texture de papier.\"},{\"id\":\"silhouette_1\",\"bbox\":[150,150,850,850],\"desc\":\"Une silhouette noire courant avec une texture pointillée.\"}]"
}
Remarques
-
Le JSON bbox fait partie de la chaîne
prompt. Si vous écrivez le JSON de requête à la main, échappez les guillemets internes avec\". Les SDK ou la sérialisation JSON peuvent le faire automatiquement. -
Énumérez aussi les zones à conserver et décrivez les exigences de préservation dans
desc. -
Les balises des éléments dans le prompt doivent correspondre une à une aux valeurs
iddu JSON. Les identifiants de référence comme<ref_image_0>désignent les images d’entrée. -
Ce modèle n’a pas de paramètre
masket ne prend pas en chargemask_url; fournirmask_urlrenvoie HTTP 400. La retouche bbox n’utilise pas de paramètre d’envoi de masque.
Réponse de soumission
integer
Code de statut de la réponse.
200 indique un succès.array
Consulter les résultats
curl --request GET \
--url https://api.apimart.ai/v1/tasks/task_01K... \
--header 'Authorization: Bearer <token>'
{
"code": 200,
"data": {
"status": "completed",
"result": {
"images": [
{
"url": ["https://example.com/generated-image.jpg"]
}
]
}
}
}
data.result.images[0].url. Si l’état est failed, consultez le message d’erreur renvoyé au lieu de continuer à attendre une image.
Résolution et facturation
Facturation par image. Le prix unitaire dépend uniquement deresolution, pas du rapport d’aspect ni du nombre d’images de référence. Les images de référence n’entraînent aucun supplément.
| Niveau de résolution | Taille de sortie approximative |
|---|---|
768sq | Environ 768×768 |
1k (par défaut) | Environ 1MP |
1.5k | Environ 2MP |
2k | Environ 4MP |
4k | Environ 16MP |
Erreurs de paramètres courantes
| Requête | Résultat et action |
|---|---|
resolution: "3k" | HTTP 400 ; utiliser l’un des 5 niveaux pris en charge |
size: "1024x1024" | HTTP 400 ; utiliser un rapport d’aspect et choisir la résolution avec resolution |
n: 2 | HTTP 400 ; une seule image est générée par requête |
| 11 images de référence | HTTP 400 ; fournir au maximum 10 images |
grounding: "false" | HTTP 400 ; utiliser le booléen false |