Ces endpoints décrivent le compte derrière la clé API : combien de crédits il possède, à quelles organisations il appartient et ce qu'une conversation a coûté. L'endpoint de version vous indique quelle release d'AYETO le serveur exécute.
Crédits
Tout ce qui utilise un modèle d'IA (chat, génération d'images, voix, conversion de documents) se paie en crédits. Le prix de chaque appel découle du modèle utilisé et de la quantité d'entrée et de sortie traitée ; voir modèles pour une indication de prix relative.
Il existe deux types de solde :
- Les crédits personnels appartiennent à l'utilisateur. Ils paient tout ce qui est fait en dehors d'une organisation. Lisez-les avec obtenir le solde de crédits.
- Les crédits d'organisation paient le travail effectué dans une organisation, par exemple une
requête de chat avec un
organization_id. Selon la configuration de l'organisation, un membre puise soit dans le solde partagé de l'organisation, soit dans un budget individuel au sein de celle-ci. Lisez-les avec lister les appartenances aux organisations.
Une requête est refusée lorsque le solde sur lequel elle puiserait est épuisé. La vérification a lieu
avant le début du travail, et le coût réel est débité une fois le travail terminé ; un
solde peut donc finir légèrement en dessous de zéro. Lorsqu'un solde est épuisé, la requête échoue avec
422 et le détail not enough user credit ou not enough organization credit.
Les crédits s'ajoutent dans l'application AYETO.
Obtenir le solde de crédits
| Endpoint | POST /api/v3/user_credit/get_self |
| Portée | n'importe quelle clé API |
| Limite de débit | par défaut |
Renvoie le solde de crédits personnel de l'utilisateur de la clé API. Les soldes d'organisation sont renvoyés par lister les appartenances aux organisations.
GET /api/v3/user_credit/get_self fonctionne toujours et renvoie la même chose ; les deux méthodes partagent
un même compteur de limite de débit.
Requête
Aucun corps ni aucun paramètre n'est nécessaire. Un corps JSON, si vous en envoyez un, est ignoré.
Réponse
200 OK avec :
| Champ | Type | Description |
|---|---|---|
credits |
nombre | Solde de crédits personnel. Peut être légèrement négatif, voir crédits. |
Erreurs
Cet endpoint n'a pas d'erreurs spécifiques. Les erreurs d'authentification, de limite de débit et du serveur sont décrites dans les conventions.
Exemple
curl -X POST "https://ayeto.ai/api/v3/user_credit/get_self" \
-H "uni-api-key: $AYETO_API_KEY"
{
"credits": 1843.27
}
Lister les appartenances aux organisations
| Endpoint | POST /api/v3/organization/membership/get_self |
| Portée | n'importe quelle clé API |
| Limite de débit | par défaut |
Renvoie les organisations dont l'utilisateur de la clé API est membre, avec le rôle de l'utilisateur et
les crédits dont il dispose dans chacune. Utilisez l'organization_id renvoyé ici comme
organization_id d'une requête de chat pour travailler, et payer, au sein de cette organisation.
Requête
Aucun corps n'est nécessaire.
Réponse
200 OK avec un tableau d'appartenances, vide lorsque l'utilisateur n'est membre d'aucune
organisation :
| Champ | Type | Description |
|---|---|---|
organization_id |
UUID | L'organisation. |
organization_name |
chaîne | Nom de l'organisation. |
user_id |
UUID | L'utilisateur de la clé API. |
role |
chaîne | Le rôle de l'utilisateur : ayeto-org-admin (administrateur), ayeto-org-member (membre) ou ayeto-org-guest (invité). |
individual_budget |
booléen | true lorsque l'utilisateur dispose d'un budget individuel dans l'organisation ; false lorsqu'il puise dans le solde partagé de l'organisation. |
credits |
nombre | Crédits dont dispose l'utilisateur dans cette organisation : le budget individuel lorsque individual_budget vaut true, sinon le solde partagé de l'organisation. |
is_partner_admin |
booléen | true pour une appartenance d'administrateur détenue pour le compte du partenaire qui gère l'organisation. |
has_logo |
booléen | Indique si l'organisation a un logo. |
logo_id |
UUID ou null | Identifiant du fichier du logo. |
logo_url |
chaîne | URL publique du logo, vide s'il n'y en a pas. |
Erreurs
Cet endpoint n'a pas d'erreurs spécifiques. Les erreurs d'authentification, de limite de débit et du serveur sont décrites dans les conventions.
Exemple
curl -X POST "https://ayeto.ai/api/v3/organization/membership/get_self" \
-H "uni-api-key: $AYETO_API_KEY"
[
{
"organization_id": "a1b2c3d4-e5f6-4a7b-8c9d-0e1f2a3b4c5d",
"organization_name": "Northwind Trading",
"user_id": "6c5b4a39-2817-4f6e-9d5c-4b3a29180f7e",
"role": "ayeto-org-member",
"individual_budget": false,
"credits": 25210.5,
"is_partner_admin": false,
"has_logo": true,
"logo_id": "0f9e8d7c-6b5a-4938-8271-605f4e3d2c1b",
"logo_url": "https://ayeto.ai/api/v1/public/file/read?id=0f9e8d7c-6b5a-4938-8271-605f4e3d2c1b&secret=3b8f1c2d9e7a4b6c"
}
]
Obtenir le coût d'une conversation
| Endpoint | POST /api/v3/usage/cost/conversation |
| Portée | ayeto.conversation |
| Limite de débit | par défaut |
Renvoie les crédits que l'utilisateur de la clé API a dépensés dans une conversation : les appels de modèle de tous ses messages, y compris les outils qui ont utilisé des modèles d'IA (génération d'images, lecture de documents, voix). Seules les dépenses de l'utilisateur lui-même sont comptées ; dans une conversation à laquelle d'autres personnes ont aussi participé, leur consommation est exclue.
Le coût est la somme des crédits enregistrés pour chaque appel de modèle au moment où il a été facturé ; il correspond donc à ce que l'utilisateur a payé, même si le prix d'un modèle a changé ou si le modèle a été supprimé depuis.
Une conversation qui n'existe pas, ou dans laquelle l'utilisateur n'a rien dépensé, renvoie 0.
Requête
| Champ | Type | Obligatoire | Description |
|---|---|---|---|
conversation_id |
UUID | Oui | La conversation. |
Réponse
200 OK avec :
| Champ | Type | Description |
|---|---|---|
conversation_id |
UUID | La conversation indiquée dans la requête. |
total_cost |
nombre | Crédits dépensés par l'utilisateur dans la conversation. |
Erreurs
| Statut | detail |
Cause |
|---|---|---|
401 |
API key is invalid |
La clé n'a pas la portée ayeto.conversation (et n'est pas une clé « toutes les portées »), ou n'est pas valide. |
403 |
permission denied |
Le compte de l'utilisateur n'est pas autorisé à lire les données de consommation. |
422 |
erreur de validation | conversation_id est absent ou n'est pas un UUID. |
Les erreurs d'authentification, de limite de débit et du serveur sont décrites dans les conventions.
Exemple
curl -X POST "https://ayeto.ai/api/v3/usage/cost/conversation" \
-H "uni-api-key: $AYETO_API_KEY" \
-H "Content-Type: application/json" \
-d '{"conversation_id": "5e4d3c2b-1a09-4f8e-b7d6-c5b4a3928170"}'
{
"conversation_id": "5e4d3c2b-1a09-4f8e-b7d6-c5b4a3928170",
"total_cost": 12.4816
}
Obtenir la version du serveur
| Endpoint | POST /api/v3/version |
| Portée | aucune, pas de clé API nécessaire |
| Limite de débit | statique |
Renvoie la version de la release d'AYETO que le serveur exécute. Utilisez-la pour le diagnostic et pour vérifier que le serveur est joignable.
GET /api/v3/version fonctionne toujours et renvoie la même chose ; les deux méthodes partagent un même compteur
de limite de débit (1 200 requêtes par minute et par adresse IP), ce qui suffit pour les contrôles de santé.
Chaque réponse de l'API indique aussi la release dans l'en-tête de réponse app-version.
Requête
Aucun corps ni aucun paramètre n'est nécessaire. Un corps JSON, si vous en envoyez un, est ignoré.
L'en-tête uni-api-key n'est pas nécessaire.
Réponse
200 OK avec :
| Champ | Type | Description |
|---|---|---|
app_version |
chaîne | La release d'AYETO, par exemple 0.20.7. C'est la version à indiquer dans les demandes d'assistance. |
version |
chaîne | Version du framework du serveur. |
run_id |
chaîne | Identifiant du processus serveur en cours d'exécution. Il change à chaque redémarrage et diffère entre les instances du serveur. |
app_deployment |
chaîne | Libellé de l'emplacement de déploiement qui a répondu (par exemple BLUE ou GREEN), UNKNOWN s'il n'est pas défini. |
Exemple
curl -X POST "https://ayeto.ai/api/v3/version"
{
"version": "2.0.0",
"run_id": "b7c6d5e4-f3a2-4b1c-8d9e-0f1a2b3c4d5e",
"app_version": "0.20.7",
"app_deployment": "BLUE"
}