Référence API
Crédits
L’API utilise vos crédits SciFig : un seul solde pour le site, l’API et MCP.
Consulter le solde#
GET /credits, avec la portée figures:read, renvoie votre solde, les crédits réservés par les tâches en cours, votre offre et ses limites de tâches :
{
"balance": 2950,
"reserved": 100,
"granted_scopes": ["figures:read", "figures:generate"],
"plan": "plus",
"plan_level": 2,
"limits": { "concurrent_tasks": 5, "tasks_per_hour": 200 },
"top_up_url": "https://scifig.ai/pricing?utm_source=api"
}planvautfree,starter,plusoupro. Un compte disposant d’un solde positif de crédits achetés en packs est traité commeprotant que ce solde subsiste.tasks_per_hourvaut 200 pour toutes les offres ;concurrent_tasksdépend de l’offre.top_up_urlcontientutm_source=apipour les requêtes directes à l’API etutm_source=mcppour celles effectuées via le serveur MCP.granted_scopesliste les autorisations des identifiants actuels :figures:readet, si autorisé,figures:generate.
GET /pricing renvoie tous les tarifs sans authentification ; les prix de ces pages proviennent de la même table. Il n’existe pas d’offre API distincte : achetez des crédits ou un abonnement sur la page des tarifs.
Cycle de vie d’une réservation#
- La création d’une tâche réserve son prix de façon atomique ; deux requêtes ne peuvent jamais dépenser les mêmes crédits.
- Si les crédits sont insuffisants, la réponse est
402 INSUFFICIENT_CREDITSavecdetails.top_up_url: rien n’est réservé ni exécuté. La requête refusée reste dansGET /jobscomme tâche échouée avec cette erreur ; répéter sa clé renvoie la même réponse. - Une tâche réussie est facturée exactement une fois à hauteur de sa réservation ; une tâche échouée ou annulée la rend intégralement. Les nouvelles tentatives internes ne réservent rien de plus, et répéter un
Idempotency-Keyréutilise la réservation initiale. - Chaque tâche indique
credits.reserved,credits.chargedetcredits.refunded, lus dans le registre comptable. - Les crédits sont utilisés dans le même ordre que sur le site : ceux qui expirent en premier sont utilisés d’abord, puis les crédits de packs, qui n’expirent pas, en dernier.
cURL#
curl https://scifig.ai/api/v1/credits \
-H "Authorization: Bearer $SCIFIG_API_KEY"JavaScript#
const response = await fetch('https://scifig.ai/api/v1/credits', {
method: 'GET',
headers: {
Authorization: `Bearer ${process.env.SCIFIG_API_KEY}`,
},
});
const result = await response.json();
console.log(response.status, result);Python#
import os
import requests
headers = {
"Authorization": f"Bearer {os.environ['SCIFIG_API_KEY']}",
}
response = requests.get(
"https://scifig.ai/api/v1/credits",
headers=headers,
timeout=60,
)
print(response.status_code, response.json())