Génération de graphiques
Générer un graphique prêt à publier à partir d'un tableau de données
POST /api/v1/charts/generations accepte multipart/form-data. Scope requis :
charts:generate. Le service lit votre tableau, choisit ou applique les types de graphique
demandés et renvoie une figure PNG finalisée. Aucun flux ni état intermédiaire n'est exposé ;
interrogez le job comme les autres.
Champs du formulaire
| Champ | Type | Requis | Défaut | Règles |
|---|---|---|---|---|
data | file | oui | — | CSV, TSV, TXT, XLSX ou XLS ; 5 Mo maximum ; la première ligne doit contenir des noms de colonnes uniques |
prompt | string | non | — | Ce qu'il faut montrer ou souligner, jusqu'à 8 000 caractères |
chart_types | string | non | automatique | Séparés par des virgules ou répétés ; jusqu'à 4 des types ci-dessous |
journal_style | string | non | default | default, nature, science, cell, plos ou acs |
figure_width | string | non | double | single (une colonne) ou double (deux colonnes) |
color_palette | string | non | okabe_ito | okabe_ito, wong, tol_bright ou tol_muted |
Les fichiers illisibles, trop volumineux ou dont les noms de colonnes sont dupliqués ou vides
renvoient 400 INVALID_REQUEST (HTTP 413 pour les envois trop volumineux).
Types de graphique
bar, line, scatter, boxplot, violin, histogram, heatmap, regression, errorbar, timeseries, volcano, kaplan_meier, forest, dot, radar, upset, dendrogram, qq, ogive, funnel, density, roc, sankey, stem_leaf, correlation, pca, manhattan, bland_altman, waterfall, dose_response, growth_curve, standard_curve, raincloud, beeswarm, ecdf, ma_plot, enrichment, enzyme_kinetics, calendar_heatmap, choropleth, stacked_area, ridgeline, bubble, hexbin, paired_dot, precision_recall, calibration_curve, confusion_matrix.
Crédits
Chaque job de graphique coûte 10 crédits, réservés à l'acceptation et débités uniquement en cas de succès ; un job échoué libère la réservation.
Sortie
result.files contient exactement un PNG à la résolution d'impression, avec width et height.
Les dimensions dépendent du style de revue et de la largeur de colonne, la taille en pixels varie donc.
cURL
curl https://sci-draw.com/api/v1/charts/generations \
-H 'Authorization: Bearer sd_YOUR_KEY' \
-H 'Idempotency-Key: study-12-figure-2' \
-H 'Prefer: wait=30' \
-F 'data=@results.csv;type=text/csv' \
-F 'prompt=Comparer les groupes de traitement et marquer la significativité' \
-F 'chart_types=boxplot' \
-F 'journal_style=nature' \
-F 'figure_width=single'JavaScript
const form = new FormData();
form.set('data', file);
form.set('prompt', 'Comparer les groupes de traitement et marquer la significativité');
form.set('chart_types', 'boxplot');
const response = await fetch('https://sci-draw.com/api/v1/charts/generations', {
method: 'POST',
headers: { Authorization: `Bearer ${apiKey}`, 'Idempotency-Key': crypto.randomUUID() },
body: form,
});Python
with open("results.csv", "rb") as table:
response = requests.post(
"https://sci-draw.com/api/v1/charts/generations",
headers={"Authorization": f"Bearer {api_key}", "Idempotency-Key": str(uuid.uuid4())},
files={"data": ("results.csv", table, "text/csv")},
data={"prompt": "Comparer les groupes de traitement et marquer la significativité", "chart_types": "boxplot"},
)Le tableau envoyé est une entrée privée du job et n'apparaît jamais dans les réponses de job ou de journal. Les sources acceptées sont supprimées après un résultat terminal.

Documentation API