Aller au contenu principal

Tarifs unitaires des opérations

YODI publie le tarif en crédits de chaque opération facturable activée. Le catalogue permet de consulter le prix configuré et son unité avant d'utiliser un service. Il ne constitue pas un devis pour un parcours complet et n'affiche pas le solde de votre compte.

Le tableau ci-dessous lit le catalogue public actif à l'ouverture de la page. Les tarifs et unités sont configurés par les administrateurs autorisés et ne sont pas figés dans cette documentation. Si le catalogue est indisponible ou invalide, aucun tarif d'exemple n'est affiché.

Chargement du catalogue actif…

Endpoint public​

GET https://api.yodi.tg/v1/billing/pricing

Cet endpoint en lecture seule est public et ne nécessite ni clé API, ni corps de requête, ni paramètre de requête. Il ne retourne aucune donnée liée à un compte. Le catalogue est limité à 60 requêtes par minute et peut être mis en cache pendant 30 secondes.

curl --fail-with-body "https://api.yodi.tg/v1/billing/pricing"

Réponse​

Les réponses réussies utilisent l'enveloppe standard YODI. Le schéma ci-dessous omet volontairement les valeurs commerciales ; récupérez les valeurs actuelles depuis l'endpoint ou le tableau dynamique ci-dessus.

interface PricingCatalog {
version: number;
effectiveAt: string | null;
operations: Array<{
operation: string;
unit: string;
creditsPerUnit: number;
}>;
}
ChampSignification
versionEntier positif identifiant la version tarifaire active.
effectiveAtDate d'activation UTC, ou null si la version active n'a pas de date d'activation.
operationsJusqu'à 12 tarifs d'opérations activées et uniques. Les opérations désactivées sont omises.
operationIdentifiant fermé d'une opération YODI facturable.
unitUnité du tarif. Lisez-la dans la réponse; ne la déduisez pas du nom de l'opération.
creditsPerUnitEntier de 0 à 1 000 000. La valeur 0 signifie explicitement que l'opération est gratuite.

Le catalogue peut inclure les opérations de traduction, assistant, finance, rappels, climat, analyse, synthèse vocale, transcription, SMS, WhatsApp texte ou audio et appel vocal. L'unité dépend de la politique de l'opération : par exemple completed_request, generated_second, artifact, transcription ou accepted_recipient. La synthèse vocale peut être tarifée par artefact ou par seconde générée mesurée, selon la politique active.

Les identifiants d'opération actuels sont module.translate.request, module.assistant.request, module.financial.request, module.reminder.request, module.climate.request, analysis.request, audio.synthesis, audio.transcription, message.sms.recipient, message.whatsapp.text.recipient, message.whatsapp.audio.recipient et message.call.recipient. Les champs operation et unit de la réponse font autorité; ne construisez pas d'identifiants ni d'unités à partir de données fournies par l'utilisateur.

Une opération absente de operations n'a pas de tarif public actif. Son absence ne signifie pas qu'elle est gratuite. L'endpoint ne retourne ni brouillon de politique, ni fournisseur/modèle d'IA sélectionné, ni donnée de compte, ni solde de portefeuille. Le financement est communiqué séparément par l'endpoint authentifié; le backend peut retourner le modèle historique par service ou le portefeuille commun. Ni le catalogue ni un tarif individuel ne prouvent que le portefeuille commun est activé en production.

Erreurs et utilisation sûre​

  • 503 PRICING_UNAVAILABLE : la politique active est indisponible ou ne passe pas les contrôles d'intégrité. Ne la remplacez pas par un tarif codé en dur.
  • 429 : la limite de requêtes de l'endpoint est dépassée; réessayez après le délai fourni par le serveur, le cas échéant.
  • Une réponse mal formée constitue une erreur de contrat. Ne traitez pas une opération ou une unité inconnue comme un tarif valide.

Le prix unitaire retourné n'est pas nécessairement le coût complet d'un parcours. Un parcours peut effectuer plusieurs opérations facturables, et un envoi peut dépendre du nombre de destinataires acceptés. L'audio généré est facturé selon l'unité et la quantité mesurée appliquées par l'API. Consultez le résultat des opérations et l'historique de consommation de votre compte pour comprendre les débits réglés.

Voix de l'agent financier​

Lorsque POST /v1/ai/financial/message demande une synthèse vocale (speak: true), la facturation peut inclure le tarif configuré de module.financial.request pour l'opération financière réussie et celui de audio.synthesis pour l'audio généré. Le backend mesure la durée de l'audio obtenu et arrondit la quantité aux secondes entières supérieures. Le nombre de champs financiers sélectionnés n'est pas l'unité facturée pour l'audio : un contenu parlé plus long peut produire un audio plus long et donc un débit audio mesuré plus élevé. Tout envoi ultérieur par SMS, WhatsApp ou appel vocal est une opération distincte, facturée selon son canal et le nombre de destinataires acceptés. Consultez les tarifs actifs dans le catalogue ; la consommation réglée par le serveur fait autorité.

Les tarifs, soldes de financement, quotas de requêtes et limites de débit sont des contrats distincts. Une réponse de type portefeuille commun rend les fonds dépensables pour plusieurs opérations; le tarif de chaque opération reste indépendant.

Estimation de relance d'un rappel​

Demandez une estimation au serveur avant de confirmer la relance ponctuelle d'un rappel existant :

POST https://api.yodi.tg/v1/ai/reminders/{id}/relaunch/estimate

L'endpoint est authentifié et limité au propriétaire du rappel. Son enveloppe standard contient un estimateToken opaque et de courte durée ainsi qu'un pricingQuote calculé avec le même tarif actif que celui utilisé pour vérifier la capacité de paiement :

interface PricingQuote {
operation: string;
unit: string;
quantity: number;
creditsPerUnit: number;
totalCredits: number;
pricingVersion: number;
}

Le serveur fournit l'opération de canal, la quantité de destinataires, le tarif unitaire, le total et la version tarifaire. Ne calculez pas le total dans le navigateur à partir du catalogue public. Confirmez en envoyant uniquement l'estimateToken retourné à POST /v1/ai/reminders/{id}/relaunch; ne le modifiez, ne le recréez et ne le réutilisez jamais. Un devis absent ou mal formé est une erreur de contrat, pas une raison de remplacer le prix par une valeur fixe. Consultez le guide de financement partagé pour distinguer tarif, solde disponible et fonds réservés.