Portefeuille commun et modèles de financement
YODI facture chaque opération selon son tarif unitaire actif. Le modèle de financement indique de quel solde le débit provient; il ne rend pas les prix des différentes opérations identiques.
Lire le modèle de financement courant
GET https://api.yodi.tg/v1/credits/me/funding
L'endpoint utilise le cookie de session HTTP-only établi lors de la connexion
YODI (JwtCookieAuthGuard), et non un bearer API key. L'API dérive le
propriétaire de la session authentifiée; l'appelant ne peut pas choisir un
utilisateur ou un portefeuille. Le navigateur envoie le cookie automatiquement.
Ne l'exposez et ne le consignez jamais. Les exemples JSON ci-dessous montrent
l'objet data dans l'enveloppe YODI standard; ils ne représentent pas la
réponse HTTP complète. Toutes les valeurs numériques sont illustratives.
L'objet data suit l'une des variantes strictes suivantes.
service_bucket
{
"fundingModel": "service_bucket",
"services": {
"translation": { "quota": 100, "used": 20, "reserved": 5 },
"audio": { "quota": 0, "used": 0, "reserved": 0 },
"sms": { "quota": 0, "used": 0, "reserved": 0 },
"voice_call": { "quota": 0, "used": 0, "reserved": 0 }
},
"expiresAt": null
}
Ce modèle de compatibilité garde les crédits séparés par service. Le solde d'un
service ne peut pas payer une autre catégorie. reserved correspond aux fonds
bloqués pour des opérations en cours; ils ne peuvent pas financer une nouvelle
opération. expiresAt est une date d'expiration UTC ou null si aucune date
n'est définie.
shared_wallet
{
"fundingModel": "shared_wallet",
"availableCredits": 75,
"reservedCredits": 10
}
Ce modèle utilise un solde unique pour les opérations compatibles.
availableCredits est le montant dépensable et exclut déjà les réservations en
cours. reservedCredits représente ces réservations; ne l'ajoutez pas au solde
disponible et ne le dépensez pas une seconde fois. Le portefeuille ne crée pas
d'allocations par module.
Tarifs, réservations et limites
- Consultez les prix et unités actifs dans le catalogue public
GET /v1/billing/pricing. La traduction, l'audio généré, la transcription, les SMS, WhatsApp et les appels peuvent avoir des prix et unités différents. - Un parcours peut effectuer plusieurs opérations facturables. Une réservation est un blocage temporaire; l'API règle la quantité validée avec succès et libère le montant inutilisé selon le résultat de l'opération.
- Les catégories de reporting expliquent les débits; en mode portefeuille commun, elles ne représentent pas des soldes indépendants.
- Les quotas de requêtes par forfait et les limites de requêtes par minute sont distincts des crédits. Un solde ne relève pas ces limites et n'autorise pas l'accès à un module.
Compatibilité et disponibilité
GET /v1/credits/me et /v1/services/{name}/quota exposent les anciennes vues
par service. Elles ne prouvent pas que le portefeuille commun est actif.
Utilisez le fundingModel retourné par /v1/credits/me/funding; ne le déduisez
pas d'un forfait, d'un tarif ou de la réussite d'un autre endpoint.
L'endpoint peut retourner l'un ou l'autre modèle selon la politique active du backend. Si cette politique est indisponible ou échoue à ses contrôles de préparation, l'API échoue de manière fermée avec son enveloppe d'erreur standard. Ne supposez pas qu'un cutover du portefeuille commun est actif dans un environnement sans preuve de déploiement vérifiée séparément.