Documentation

Générer des images

POST /v1/images/generations

Génère des images. Synchrone par défaut : l’appel attend que l’image soit prête et répond dans la même forme que le point d’accès images/generations d’OpenAI, si bien que le SDK OpenAI et les passerelles de relais fonctionnent sans réglage. Avec async: true vous recevez immédiatement un id de tâche et lisez le résultat via GET /v1/tasks/{id}. Avec n supérieur à 1, n tâches indépendantes sont créées, chacune facturée séparément.

Paramètres

ParamètreTypeDescription
promptstringObligatoire. Ce qu’il faut dessiner
modelstringid de modèle issu de /v1/models. Sinon, modèle par défaut
nintegerNombre d’images, de 1 à 4. Par défaut 1
sizestringFormat 1:1 | 16:9 | 9:16 | 4:3 | 3:4. Par défaut 1:1. Les écritures en pixels comme 1024x1024 ou 1792x1024 sont acceptées et ramenées au format le plus proche
qualitystringQualité 1k | 2k | 4k. Par défaut 1k, remplacée par spec. Les écritures OpenAI sont acceptées : standard / low / auto valent 1k, medium / hd / high valent 2k
specstringClé de palier issue de specs[].key du modèle
reference_imagesstring[]URLs de référence. Ce qui dépasse max_reference_images est ignoré
asyncbooleanfalse par défaut : on attend l’image. true renvoie aussitôt un objet de tâche, à vous d’interroger /v1/tasks/{id}
Une valeur non reconnue ne fait pas échouer la requête : on revient à la valeur par défaut (un size inconnu est simplement rendu en 1:1). Seuls un prompt vide, un contenu bloqué, un quota atteint ou des crédits insuffisants provoquent une erreur. response_format n’est pas pris en charge : les résultats arrivent toujours sous forme d’url.

Requête (synchrone)

bash
curl https://open.pikpikgo.com/v1/images/generations \
  -H "Authorization: Bearer $PIKPIK_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "prompt": "une rue cyberpunk sous la pluie la nuit, reflets de néons",
    "size": "16:9",
    "quality": "2k",
    "n": 1
  }'

Réponse (synchrone)

json
{
  "created": 1786000246,
  "data": [
    { "url": "https://cdn.pikpikgo.com/ai/xxxx.png", "revised_prompt": "une rue cyberpunk sous la pluie la nuit, reflets de néons" }
  ],
  "id": "2608101909450810293847",
  "object": "image.generation",
  "model": "img-std-1",
  "status": "succeeded",
  "n": 1,
  "credits": 10,
  "tasks": [
    {
      "id": "2608101909450810293847",
      "status": "succeeded",
      "data": [{ "url": "https://cdn.pikpikgo.com/ai/xxxx.png", "revised_prompt": "une rue cyberpunk sous la pluie la nuit, reflets de néons" }]
    }
  ]
}
ChampDescription
createdHorodatage de la réponse
dataRésultats, chacun avec url et revised_prompt. Plusieurs entrées si n > 1
idTâche principale (avec n > 1, la première sous-tâche)
statussucceeded — y compris en succès partiel : comparez vous-même la taille de data à n
creditsTotal des crédits débités
tasksToutes les sous-tâches, chacune avec son error et son résultat
Un appel synchrone garde la connexion ouverte, souvent plus de 30 secondes par image : portez le délai d’attente du client à 300 secondes. Au-delà de 300 secondes le serveur renvoie 504 generation_timeout ; la tâche continue et les crédits ne sont pas remboursés, récupérez donc le résultat plus tard via /v1/tasks/{id} avec l’id figurant dans le message. Si toutes les images échouent, vous obtenez 502 generation_failed et les crédits sont remboursés automatiquement.

Mode asynchrone

Pour les lots, une forte concurrence ou des appelants sensibles à la latence : la réponse arrive aussitôt, status vaut queued et data est vide.

bash
curl https://open.pikpikgo.com/v1/images/generations \
  -H "Authorization: Bearer $PIKPIK_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "prompt": "une rue cyberpunk sous la pluie la nuit, reflets de néons",
    "size": "16:9",
    "quality": "2k",
    "n": 1,
    "async": true
  }'
json
{
  "id": "2608101909450810293847",
  "object": "image.generation",
  "created": 1786000185,
  "model": "img-std-1",
  "status": "queued",
  "n": 1,
  "credits": 10,
  "tasks": [
    { "id": "2608101909450810293847", "status": "queued", "data": [] }
  ],
  "data": []
}
Avec n > 1, parcourez tasks. N’interroger que id fait silencieusement perdre les autres images.