curl --request POST \
--url https://api.apimart.ai/v1/images/generations \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{
"model": "mai-image-2.6",
"prompt": "Affiche photoréaliste d’un campus universitaire au coucher du soleil, éclairage cinématographique",
"size": "16:9",
"resolution": "2K"
}'
import requests
response = requests.post(
"https://api.apimart.ai/v1/images/generations",
headers={"Authorization": "Bearer <token>"},
json={
"model": "mai-image-2.6",
"prompt": "Affiche photoréaliste d’un campus universitaire au coucher du soleil, éclairage cinématographique",
"size": "16:9",
"resolution": "2K"
}
)
response.raise_for_status()
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: "mai-image-2.6",
prompt: "Affiche photoréaliste d’un campus universitaire au coucher du soleil, éclairage cinématographique",
size: "16:9",
resolution: "2K"
})
});
if (!response.ok) throw new Error(await response.text());
console.log(await response.json());
{
"code": 200,
"data": [
{
"status": "submitted",
"task_id": "task_01K..."
}
]
}
MAI-Image-2.6
MAI-Image-2.6 Génération d’images
Texte-image, retouche d’une image, composition avec jusqu’à 5 images de référence et recherche web. Versions haute qualité et Flash.
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": "mai-image-2.6",
"prompt": "Affiche photoréaliste d’un campus universitaire au coucher du soleil, éclairage cinématographique",
"size": "16:9",
"resolution": "2K"
}'
import requests
response = requests.post(
"https://api.apimart.ai/v1/images/generations",
headers={"Authorization": "Bearer <token>"},
json={
"model": "mai-image-2.6",
"prompt": "Affiche photoréaliste d’un campus universitaire au coucher du soleil, éclairage cinématographique",
"size": "16:9",
"resolution": "2K"
}
)
response.raise_for_status()
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: "mai-image-2.6",
prompt: "Affiche photoréaliste d’un campus universitaire au coucher du soleil, éclairage cinématographique",
size: "16:9",
resolution: "2K"
})
});
if (!response.ok) throw new Error(await response.text());
console.log(await response.json());
{
"code": 200,
"data": [
{
"status": "submitted",
"task_id": "task_01K..."
}
]
}
Choix du modèle
| ID du modèle | Caractéristiques |
|---|---|
mai-image-2.6 | Version haute qualité pour les usages privilégiant le rendu |
mai-image-2.6-flash | Version plus rapide et moins chère, avec une qualité légèrement inférieure |
Cet endpoint est asynchrone. Après soumission, récupérez l’ID dans
data[0].task_id, puis utilisez la consultation des tâches. Interrogez toutes les 3–5 secondes avec un délai d’attente global de 3 minutes. Arrêtez lorsque l’état est completed ou failed.curl --request POST \
--url https://api.apimart.ai/v1/images/generations \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{
"model": "mai-image-2.6",
"prompt": "Affiche photoréaliste d’un campus universitaire au coucher du soleil, éclairage cinématographique",
"size": "16:9",
"resolution": "2K"
}'
import requests
response = requests.post(
"https://api.apimart.ai/v1/images/generations",
headers={"Authorization": "Bearer <token>"},
json={
"model": "mai-image-2.6",
"prompt": "Affiche photoréaliste d’un campus universitaire au coucher du soleil, éclairage cinématographique",
"size": "16:9",
"resolution": "2K"
}
)
response.raise_for_status()
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: "mai-image-2.6",
prompt: "Affiche photoréaliste d’un campus universitaire au coucher du soleil, éclairage cinématographique",
size: "16:9",
resolution: "2K"
})
});
if (!response.ok) throw new Error(await response.text());
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
ID du modèle :
mai-image-2.6 ou mai-image-2.6-flash.string
requis
Description de l’image ou instructions de retouche. Chinois et anglais pris en charge, jusqu’à environ 32 000 tokens (pas des caractères).
string
défaut:"1:1"
Accepte un rapport d’aspect (
16:9), des dimensions en pixels (1536x1024) ou auto.- Rapport d’aspect : tout rapport d’entiers entre
1:4et4:1, avecresolution. - Pixels : formats
largeurxhauteur,largeur*hauteuroulargeur×hauteur. Dans ce cas,resolutionne détermine pas les dimensions. auto: le modèle choisit le rapport d’aspect selon le prompt.
string
défaut:"1K"
Accepte
1K et 2K, y compris en minuscules. Les autres niveaux, comme 4K, renvoient HTTP 400.Détermine le niveau de taille en texte-image avec un rapport d’aspect. N’intervient pas dans le calcul si les pixels sont spécifiés directement. Ne permet pas de définir les dimensions en image-image.integer
Largeur exacte en pixels, à fournir avec
height. Cette paire prime sur size et resolution pour les dimensions en texte-image.Largeur et hauteur doivent être au moins égales à 768, avec au maximum 2 359 296 pixels au total. Utilisez des multiples de 32 ; sinon chaque dimension est arrondie au multiple de 32 inférieur.Ce paramètre ne détermine pas les dimensions en image-image.integer
Hauteur exacte en pixels, à fournir avec
width, selon les contraintes ci-dessus. Ne détermine pas les dimensions en image-image.string[]
Liste de références, jusqu’à 5 images. Omettez pour le texte-image ; fournissez une image pour la retouche, plusieurs pour une composition.Chaque élément accepte une URL HTTP(S) d’image accessible publiquement ou une Data URL Base64 comme
data:image/png;base64,....JPEG et PNG sont acceptés ; WEBP et GIF sont convertis automatiquement en PNG. Les URL doivent être accessibles publiquement, sinon la tâche échoue.En image-image, le modèle détermine les dimensions selon les références, soit environ 1 million de pixels avec un rapport similaire. size, resolution, width et height ne permettent pas de fixer ces dimensions.boolean
défaut:"false"
Avec
true, le modèle choisit le rapport selon le prompt, ce qui équivaut à size: "auto".boolean
défaut:"false"
Avec
true, recherche des informations en temps réel avant la génération, utile pour les personnes, lieux ou événements réels.integer
défaut:"1"
Seule la valeur
1 est acceptée. Soumettez des tâches séparées pour plusieurs images. Une valeur supérieure à 1 renvoie HTTP 400.Dimensions en texte-image
| Besoin | Paramètres |
|---|---|
| Carré par défaut | Omettre les paramètres de taille : 1:1 + 1K, sortie 1024×1024 |
| Résolution + rapport d’aspect | size: "16:9", resolution: "2K" |
| Pixels exacts | size: "1536x1024", ou width: 1536, height: 1024 |
| Rapport automatique | size: "auto" ou auto_aspect_ratio: true |
width / height → size en pixels → size en rapport d’aspect combiné à resolution.
Niveaux et rapports d’aspect
| Rapport d’aspect | 1K | 2K |
|---|---|---|
| 1:1 | 1024×1024 | 1536×1536 |
| 4:3 / 3:4 | 1152×864 / 864×1152 | 1760×1312 / 1312×1760 |
| 3:2 / 2:3 | 1248×832 / 832×1248 | 1856×1248 / 1248×1856 |
| 16:9 / 9:16 | 1344×768 / 768×1344 | 2048×1152 / 1152×2048 |
| 2:1 / 1:2 | 1536×768 / 768×1536 | 2144×1056 / 1056×2144 |
| 21:9 / 9:21 | 1792×768 / 768×1792 | 2336×992 / 992×2336 |
| 4:1 / 1:4 | 3072×768 / 768×3072 | 3072×768 / 768×3072 |
1K. La facturation utilise les tokens correspondant aux pixels réellement produits.
Contraintes des pixels exacts
- Largeur et hauteur : au moins 768 chacune.
- Largeur × hauteur : au maximum 2 359 296 (1536 × 1536).
- Chaque dimension est arrondie au multiple de 32 inférieur. Par exemple,
1000x1000produit992x992. Utilisez des multiples de 32 pour des dimensions exactes.
1536x1024, 2048x1152 et 3072x768 sont acceptés. 512x512 est rejeté car les côtés sont trop petits ; 2048x2048 dépasse la limite totale de pixels.
La limite porte sur le nombre total de pixels, pas sur un maximum de 1536 par côté.
2048x1152 et 3072x768 sont donc valides, mais le niveau 4K n’est pas pris en charge. Ces réglages s’appliquent uniquement au texte-image.Exemples de requêtes
Pixels exacts et recherche web
{
"model": "mai-image-2.6-flash",
"prompt": "La tour Eiffel de nuit avec des feux d’artifice, style affiche de voyage",
"width": 2048,
"height": 1152,
"web_grounding": true
}
Retouche d’une image
{
"model": "mai-image-2.6",
"prompt": "Rendez le vélo bleu et ajoutez un petit chien à côté",
"image_urls": ["https://example.com/bicycle.png"]
}
Composition de plusieurs images
{
"model": "mai-image-2.6-flash",
"prompt": "Combinez les deux images de référence en une photo de produit épurée et futuriste",
"image_urls": [
"https://example.com/first.png",
"https://example.com/second.jpg"
]
}
Paramètres non pris en charge
quality, style, background, output_format, response_format et mask_url ne sont pas pris en charge et sont ignorés. La sortie est toujours en PNG. La retouche par masque n’est pas prise en charge.
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": {
"id": "task_01K...",
"status": "completed",
"progress": 100,
"result": {
"images": [
{
"url": ["https://example.com/generated-image.png"]
}
]
}
}
}
| État | Action |
|---|---|
pending | En attente ; continuer les interrogations |
processing | En cours ; continuer les interrogations |
completed | Succès ; récupérer les liens dans le tableau data.result.images[0].url |
failed | Échec ; consulter data.error.message et arrêter les interrogations. Remboursement intégral |
Facturation
Facturation selon les tokens d’entrée et de sortie réellement utilisés. Voir les tarifs des modèles.- Tokens de sortie image = largeur réelle × hauteur ÷ 1024. 1024×1024 correspond à 1024 tokens, 1536×1536 à 2304 tokens.
- Les tokens d’entrée par référence correspondent approximativement à sa largeur × hauteur ÷ 1024. Les prompts textuels comptent aussi en entrée.
- Un montant selon le niveau est prélevé à la soumission, puis ajusté après succès à la consommation réelle par remboursement ou prélèvement complémentaire.
- Les tâches échouées sont automatiquement remboursées intégralement. Les erreurs de paramètres rejetées à la soumission ne créent aucune tâche et ne sont pas facturées.
Erreurs courantes
| HTTP | Cause et action |
|---|---|
| 400 | resolution non prise en charge, comme 4K ; utiliser 1K ou 2K |
| 400 | Largeur ou hauteur inférieure à 768, ou total supérieur à 2 359 296 pixels |
| 400 | Seul width ou height est fourni ; les deux sont requis ensemble |
| 400 | Rapport hors de la plage 1:4 à 4:1, ou format size non reconnu |
| 400 | n supérieur à 1 ou plus de 5 références |