Aller au contenu

Créer une image : génération d'images par API

Générez une image à partir d’un template image, en un seul appel synchrone. Vous envoyez du JSON, vous récupérez un PNG, un JPEG ou un WebP : sous forme d’URL signée ou directement en octets.

POST https://api.templatefox.com/v1/image/create

Authentification : clé API dans l’en-tête x-api-key. Crédits : 1 crédit par génération réussie (remboursé automatiquement si le rendu échoue).

La génération d’images fonctionne avec les templates image : un canevas unique de taille fixe (par exemple 1080×1080), conçu dans l’éditeur. Un template PDF renvoie une erreur 400 ; pour les documents, utilisez create-pdf.

Seul template_id est obligatoire. Les éléments à changer passent par modifications, chacun désigné par le nom de calque que vous lui avez donné dans le panneau Layers de l’éditeur :

ChampTypeDescription
template_idstringL’identifiant de 12 caractères de votre template image (à copier depuis la liste des images du tableau de bord).
modificationsarrayLes éléments à changer, chacun désigné par le name de son calque. Voir Modifications.
curl -X POST https://api.templatefox.com/v1/image/create \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
  "template_id": "HMQywVpZxqAM",
  "modifications": [
    { "name": "title", "text": "Summer Sale -50%" },
    { "name": "product_image", "image_url": "https://example.com/photo.jpg" }
  ]
}'

Ou passez par l’un de nos SDK officiels : TypeScript, Python, Go, PHP, Ruby, Java, C#.

ChampTypeObligatoireDéfautDescription
template_idstring✅—Identifiant court du template, 12 caractères.
modificationsarray——Les éléments à changer, désignés par le name de leur calque. Voir Modifications. 100 éléments maximum.
formatstring—"png"Format de sortie : "png" (sans perte, transparence possible), "jpeg" (plus léger, sans transparence) ou "webp" (compression moderne).
widthinteger—largeur du templateLargeur de sortie, en pixels ; la hauteur suit le format du template. Minimum 100, maximum 4000. Par défaut, la largeur native du canevas du template.
qualityinteger—85Qualité de compression pour jpeg et webp (1 à 100). Ignorée pour png.
export_typestring—"url""url" dépose l’image sur notre CDN et renvoie une URL signée. "binary" renvoie directement les octets de l’image.
expirationinteger—86400Durée de validité de l’URL, en secondes. Minimum 60, maximum 604800 (7 jours). S’applique uniquement avec export_type="url".
filenamestring—"document"Nom de fichier personnalisé (sans extension). Lettres, chiffres, _, - et . uniquement. 100 caractères maximum.
store_s3boolean—falseEnvoie le fichier dans votre bucket S3 configuré plutôt que sur notre CDN. Nécessite une intégration S3.
s3_filepathstring——Préfixe de chemin dans votre bucket S3. Remplace default_prefix. 500 caractères maximum.
s3_bucketstring——Remplace le nom de bucket de votre intégration S3 (3 à 63 caractères, en minuscules).
versionstring——Tag de version du template (par exemple "prod") ou numéro de version (par exemple "3"). Sans version, le brouillon en cours est utilisé. 50 caractères maximum.

Le template fixe le format du canevas (par exemple un carré Instagram en 1080×1080, ou une carte Open Graph en 1200×630). width règle la résolution de sortie en pixels ; la hauteur est déduite du template, l’image n’est donc jamais déformée. Sans width, le rendu se fait à la taille native du template ; une valeur plus grande (par exemple 2160) donne un export en plus haute résolution.

Chaque élément de modifications cible un calque par le name que vous avez défini dans le panneau Layers de l’éditeur, puis change une ou plusieurs de ses propriétés :

PropriétéTypeDescription
namestringNom du calque à modifier (obligatoire).
textstringRemplace le texte du calque. Le texte est rendu tel quel : ni le HTML ni les {{ }} ne sont interprétés.
image_urlstringDéfinit l’image du calque : la source pour un calque image, une background-image pour tout autre calque. Doit être une URL http(s).
colorstringCouleur du texte (toute couleur CSS).
backgroundstringCouleur de fond (toute couleur CSS).
hiddenbooleanMasque (true) ou affiche (false) le calque.

Bon à savoir :

  • Nommage. name correspond au nom du calque dans le panneau Layers (à défaut, à l’identifiant de l’élément). Renommez un calque dans le panneau Layers pour lui donner un name stable. Le calque réservé background, le fond de l’image, existe dans tous les templates image.
  • Les noms inconnus sont ignorés. Si un name ne correspond à aucun calque, le rendu réussit quand même et la réponse le signale dans warnings.
  • Un nom partagé s’applique partout. Si plusieurs calques portent le même nom, la modification s’applique à chacun d’eux.

Renvoie un objet JSON avec une URL signée vers l’image générée.

{
"url": "https://cdn.templatefox.com/generated/abc123/social-card.png",
"filename": "social-card.png",
"credits_remaining": 99,
"expires_in": 86400
}
ChampTypeDescription
urlstringURL signée pour télécharger l’image (expire au bout de expires_in secondes).
filenamestringNom de fichier final de l’image générée.
credits_remainingnumberCrédits restants sur le solde de votre équipe après cet appel.
expires_innumberNombre de secondes avant l’expiration de l’URL signée.
warningsarrayPrésent uniquement quand le name d’une modification ne correspond à aucun élément : un message par nom ignoré.

Renvoie l’image brute, en image/png, image/jpeg ou image/webp (selon format). Pratique pour transmettre le fichier directement à un utilisateur ou le stocker vous-même. expiration, filename et les options S3 sont ignorés.

En-têtes de la réponse :

Content-Type: image/png
Content-Disposition: attachment; filename="HMQywVpZxqAM.png"
X-Credits-Remaining: 99

Quand l’envoi vers S3 est demandé, la réponse indique où le fichier a été déposé dans votre bucket, au lieu de renvoyer une URL :

{
"s3_bucket": "my-image-bucket",
"s3_key": "social/2026/01/social-card.png",
"filename": "social-card.png",
"credits_remaining": 99
}

Choisissez format et width selon l’endroit où l’image sera utilisée :

curl -X POST https://api.templatefox.com/v1/image/create \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
  "template_id": "HMQywVpZxqAM",
  "modifications": [{ "name": "title", "text": "Welcome aboard" }],
  "format": "webp",
  "width": 1200,
  "quality": 90
}'

Avec export_type à "binary", vous recevez directement les octets de l’image : pratique pour les transmettre à l’utilisateur ou les enregistrer sur disque, sans passer par le CDN.

curl -X POST https://api.templatefox.com/v1/image/create \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
--output social-card.png \
-d '{
  "template_id": "HMQywVpZxqAM",
  "modifications": [{ "name": "title", "text": "Welcome aboard" }],
  "export_type": "binary"
}'
StatutQuand
400Le template n’est pas un template image (utilisez create-pdf), ou il compte plus d’une page.
401Clé API absente ou invalide.
402Le solde de crédits de votre équipe est à 0.
403Le template n’existe pas ou n’appartient pas à votre équipe.
404La version demandée n’existe pas.
422Un paramètre est manquant ou invalide.
429Limite de requêtes atteinte (voir les en-têtes de la réponse).
500Erreur serveur. Si le rendu lui-même échoue, le crédit est remboursé automatiquement.

La liste complète est dans la vue d’ensemble de la référence API.