Endpoints

Compte

Lire le solde de crédits, les appartenances aux organisations et le coût des conversations de l'utilisateur de la clé API, ainsi que la version du serveur.

Afficher en Markdown

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

bash
curl -X POST "https://ayeto.ai/api/v3/user_credit/get_self" \
  -H "uni-api-key: $AYETO_API_KEY"
json
{
  "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

bash
curl -X POST "https://ayeto.ai/api/v3/organization/membership/get_self" \
  -H "uni-api-key: $AYETO_API_KEY"
json
[
  {
    "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

bash
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"}'
json
{
  "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

bash
curl -X POST "https://ayeto.ai/api/v3/version"
json
{
  "version": "2.0.0",
  "run_id": "b7c6d5e4-f3a2-4b1c-8d9e-0f1a2b3c4d5e",
  "app_version": "0.20.7",
  "app_deployment": "BLUE"
}