Référence API
Conversion d’images
Vectorisez une image en SVG ou exportez en PNG, PDF, TIFF et PPTX, y compris les diagrammes de flux.
Corps JSON#
POST /images/conversions. Portée requise : figures:generate.
| Champ | Type | Obligatoire | Valeur par défaut | Règles |
|---|---|---|---|---|
| image | string | oui | — | Un file_id de PNG ou JPEG ou le résultat SVG d’un diagramme de flux, jusqu’à 20 MB ; svg accepte aussi WebP |
| format | string | oui | — | svg, png, pdf, tiff ou pptx |
| vector_mode | string | non | editable_text | Uniquement pour svg : editable_text ou full_vector |
| dpi | integer | non | 300 | Pas pour svg : 300, 600 ou 1000 |
| width | integer | non | 2048 | Uniquement pour les sources SVG de diagrammes de flux : grand côté en pixels, 256–4096, au plus 8,388,608 pixels au total |
Vectorisation SVG#
- Coûte 150 crédits et exige une offre payante ; utilise le même outil de vectorisation que la modification dans le canevas du site. La source est une image PNG, JPEG ou WebP.
editable_textconserve le texte sous forme de texte SVG modifiable ;full_vectortrace tous les éléments, texte compris, sous forme de chemins.- La vectorisation s’exécute comme une tâche. Les crédits ne sont réservés qu’une fois l’exécution acceptée, et les
creditsde la tâche sont relus dans le registre comptable. Une vectorisation échouée est remboursée et renvoieTASK_FAILEDpour cette clé. - Convertir une image déjà vectorisée renvoie le SVG précédent, sans frais pour cette tâche.
- Si l’outil de vectorisation est temporairement indisponible avant le démarrage, la réponse est
503 SERVICE_UNAVAILABLEavecRetry-After: réessayez avec la même clé.
PNG, PDF, TIFF et PPTX#
- Gratuit, jusqu’à 200 conversions par compte et par jour. Elles se terminent immédiatement : la réponse est une tâche
succeeded. - Une conversion ne compte dans le quota quotidien qu’après validation de toutes ses entrées, et une fois par Idempotency-Key : répéter la même clé ne compte pas à nouveau. Au-delà du quota, la réponse est
429 RATE_LIMITEDavecdetails.reason = DAILY_CONVERSION_LIMITetRetry-Afterjusqu’à la réinitialisation de la fenêtre quotidienne. - La source est une image PNG ou JPEG ou le résultat SVG d’un diagramme de flux ; WebP n’est pas accepté :
UNSUPPORTED_SOURCE_FORMAT. - Un fichier dont le résultat encodé dépasserait 24 MiB est refusé avec
400 INVALID_REQUESTetOUTPUT_TOO_LARGE; convertissez une image plus petite. dpiest inscrit dans le fichier et définit la taille physique des pages PDF et PPTX ; les pixels ne sont pas rééchantillonnés. Pour obtenir plus de pixels, agrandissez d’abord l’image.- PNG et TIFF exigent une source PNG ; PDF et PPTX acceptent aussi JPEG. TIFF utilise la compression Deflate sans perte.
- Le PPTX contient une diapositive avec l’image, pas des formes modifiables.
Exportation de diagrammes de flux#
Le résultat SVG d’un diagramme de flux peut être converti en PNG, PDF, TIFF ou PPTX. Le serveur le rend avec les polices Arial et Noto, avec width pixels sur le grand côté : 2048 par défaut, au plus 4096 et 8,388,608 pixels au total ; un graphique carré ne peut donc dépasser 2896 px. Une demande plus grande renvoie 400 INVALID_REQUEST avec RENDER_TOO_LARGE. Les textes que les polices ne peuvent pas afficher sont refusés avec 400 INVALID_REQUEST et SVG_NOT_RENDERABLE, plutôt que dessinés sous forme de cases vides. Si le moteur de rendu échoue, la réponse est 503 SERVICE_UNAVAILABLE avec SVG_RENDERER_UNAVAILABLE et Retry-After : réessayez avec la même clé. Les autres fichiers SVG ne peuvent pas servir d’entrées.
cURL#
curl -X POST https://scifig.ai/api/v1/images/conversions \
-H "Authorization: Bearer $SCIFIG_API_KEY" \
-H "Idempotency-Key: $(uuidgen)" \
-H "Prefer: wait=25" \
-H "Content-Type: application/json" \
-d '{
"image": "<file_id>",
"format": "pdf",
"dpi": 600
}'JavaScript#
const response = await fetch('https://scifig.ai/api/v1/images/conversions', {
method: 'POST',
headers: {
Authorization: `Bearer ${process.env.SCIFIG_API_KEY}`,
'Idempotency-Key': crypto.randomUUID(),
Prefer: 'wait=25',
'Content-Type': 'application/json',
},
body: JSON.stringify({
"image": "<file_id>",
"format": "pdf",
"dpi": 600
}),
});
const result = await response.json();
console.log(response.status, result);Python#
import os
import uuid
import requests
headers = {
"Authorization": f"Bearer {os.environ['SCIFIG_API_KEY']}",
"Idempotency-Key": str(uuid.uuid4()),
"Prefer": "wait=25",
}
response = requests.post(
"https://scifig.ai/api/v1/images/conversions",
headers=headers,
json={
"image": "<file_id>",
"format": "pdf",
"dpi": 600
},
timeout=60,
)
print(response.status_code, response.json())