Aller à l'article
Aniq-UI

Food StudioRéférence de l'API

Référence de l'API

Chaque route servie par l'API, qui peut l'appeler, et comment fonctionnent la connexion, les permissions, les erreurs, les listes et les limites.

Pour le pack Full Stack

URL de base et format des réponses

Chaque route est servie sous le préfixe /api. En local, l'URL de base est http://localhost:8000/api. Sur un serveur, c'est l'adresse de votre API suivie de /api, la même valeur que les deux frontends lisent dans NEXT_PUBLIC_API_BASE_URL (Variables d'environnement).

L'API sert deux publics qui ne partagent jamais de jeton : les clients, qui utilisent les routes du site, et le personnel, qui utilise celles du tableau de bord. Les corps de requête sont en JSON, sauf pour les envois de fichiers. Chaque réponse arrive dans la même enveloppe :

Enveloppe
{
  "success": true,
  "data": { },
  "message": ""
}

data contient le résultat. message est une courte phrase que certaines écritures remplissent, dans la langue de la requête, et qui est vide sinon. Les montants sont en dollars décimaux dans le JSON, par exemple 14.99, et chaque total est calculé par l'API : rien de ce qu'un client envoie au sujet d'un montant n'est pris pour argent comptant.

La vérification de santé ne demande aucun jeton :

Terminal
curl http://localhost:8000/api/health
Réponse
{"success":true,"data":{"status":"ok","database":"up"},"message":""}

Quand la base de données ne peut pas être lue, elle répond quand même 200, avec "status":"degraded" et "database":"down". La vérification de santé de l'image Docker lit ce champ.

Erreurs

Un échec garde l'enveloppe, avec success: false et le statut HTTP :

Erreur
{
  "success": false,
  "data": null,
  "message": "errors.kitchen_closed",
  "errors": { "email": ["…"] },
  "code": "…"
}
  • Les erreurs qu'un client voit sont des clés comme errors.kitchen_closed, errors.outside_area ou errors.rate_limited, que le site traduit lui-même. Les autres messages sont des phrases dans la langue de la requête.
  • errors apparaît en cas d'échec de validation, avec les problèmes par champ.
  • code porte une raison lisible par une machine quand il en existe une, comme changes avec une liste changes quand un prix a changé avant qu'une commande soit passée.
  • Une route protégée sans jeton répond 401 ; un jeton sans la permission répond 403.

Listes et pagination

Les routes de liste acceptent page et limit (page_count est accepté à la place de limit). limit est plafonné à 100. Sauf si l'appelant trie, les lignes arrivent de la plus récemment modifiée à la plus ancienne, avec l'id pour départager, donc la pagination est stable.

Menu et commandes
{ "items": [ ], "total": 64, "page": 1, "limit": 12, "totalPages": 6 }

Les listes de plats et de commandes placent les lignes sous items. Les listes de catégories, d'avis, de clients, d'équipe, de rôles et de paramètres les placent sous data, avec les mêmes champs de pagination. Les listes lues dans un ordre défini, comme les sections de la page d'accueil et la file d'attente des cuisines, gardent cet ordre.

Langue

Envoyez Accept-Language: ar pour des messages en arabe ; toute autre valeur répond en anglais. Les éléments du menu portent les deux langues sous la forme { "en": "…", "ar": "…" } quel que soit l'en-tête, et le client en choisit une.

Connexion

  1. Se connecter en tant que membre du personnel

    Terminal
    curl -X POST http://localhost:8000/api/auth/login \
      -H "Content-Type: application/json" \
      -d '{"email":"owner@foodstudio.example","password":"FoodDemo2026!"}'

    data.access_token est le jeton du personnel, avec token_type Bearer, expires_in (7d par défaut, JWT_EXPIRATION) et le membre avec ses rôles. GET /api/auth/me renvoie le membre connecté avec ses permissions.

  2. Appeler une route protégée

    Terminal
    curl http://localhost:8000/api/orders -H "Authorization: Bearer YOUR_TOKEN"
  3. Se connecter en tant que client

    POST /api/auth/customer/login avec le même corps répond { token, user } ; POST /api/auth/customer/register accepte first_name, last_name, email, password (8 caractères ou plus) et éventuellement phone, et répond de la même façon. Le client de démonstration est sam@foodstudio.example avec FoodDemo2026!.

  • Un jeton client est refusé sur toutes les routes du personnel, et un jeton du personnel sur toutes les routes client.
  • Un e-mail inconnu et un mauvais mot de passe répondent tous deux 401 avec le même message.
  • Dix échecs de connexion depuis une même adresse en 15 minutes, par formulaire, répondent 429 jusqu'à ce que le plus ancien échec date de 15 minutes (RATE_LIMIT_LOGIN). Les connexions réussies ne sont pas comptées.
  • Il n'y a pas de route de déconnexion : un client se déconnecte en oubliant son jeton.
MéthodeCheminQui peut l'appelerRôle
POST/api/auth/loginN'importe quiConnexion du personnel
GET/api/auth/meTout membre du personnel connectéLe membre connecté, ses rôles et ses permissions
POST/api/auth/customer/registerN'importe quiCréer un compte client et se connecter. Un client_token répété renvoie le compte de la première tentative
POST/api/auth/customer/loginN'importe quiConnexion client
GET/api/auth/customer/meClientLe profil, avec reward_points
PATCH/api/auth/customer/meClientModifier first_name, last_name, email, phone
PATCH/api/auth/customer/me/passwordClientChanger le mot de passe : current_password, new_password
POST/api/auth/customer/forgot-passwordN'importe quiEnvoyer un lien de réinitialisation par e-mail. Répond toujours { sent: true }, pour n'importe quelle adresse
POST/api/auth/customer/reset-passwordN'importe quiTerminer une réinitialisation : token, password. Un jeton fonctionne une seule fois, dans l'heure

Permissions

Les routes du personnel vérifient une permission, nommée <module>.<action>. Un membre détient toutes les permissions de tous ses rôles.

ModulePermissions
Équipeadmins.view, admins.create, admins.edit, admins.delete, admins.assign_roles
Rôlesroles.view, roles.create, roles.edit, roles.delete, roles.assign_permissions
Paramètres, cuisines et codes promosettings.view, settings.edit
Clientsusers.view, users.create, users.update, users.delete, users.restore, users.verify
Catégoriescategories.view, categories.create, categories.edit, categories.delete, categories.restore
Menu, offres et page d'accueilproducts.view, products.create, products.edit, products.delete, products.restore
Commandes et vue d'ensembleorders.view, orders.edit
IAai_studio.use, ai_chat.use, ai_chat.view_models
Rôle de démonstrationAccorde
PropriétaireToutes les permissions
ManagerToutes les permissions sauf admins.* et roles.*
Cuisineorders.view et orders.edit, limitées aux commandes de sa propre cuisine, sans les prix ni l'e-mail du client, et uniquement les passages de confirmée à en préparation et d'en préparation à prête
MéthodeCheminQui peut l'appelerRôle
GET/api/productsTout le monde ; le personnel voit aussi les lignes masquéesLe menu publié. q, category (slug), dietary (séparés par des virgules), available, sort (popularity, price_asc, price_desc, name), page, limit (12 par défaut). scope=admin avec products.view liste tous les plats, brouillons compris
GET/api/products/featuredN'importe quiLes plats mis en avant
GET/api/products/slug/:slugTout le monde ; le personnel voit aussi les lignes masquéesUn plat par son slug, avec les plats related
GET/api/products/:idTout le monde ; le personnel voit aussi les lignes masquéesUn plat par son id
GET/api/products/:id/relatedN'importe quiDes plats de la même catégorie, puis les meilleures ventes
GET/api/categoriesTout le monde ; le personnel voit aussi les lignes masquéesLes catégories, dans l'ordre du menu
GET/api/categories/rootsN'importe quiLes catégories de premier niveau
GET/api/categories/slug/:slugTout le monde ; le personnel voit aussi les lignes masquéesUne catégorie par son slug
GET/api/categories/:idTout le monde ; le personnel voit aussi les lignes masquéesUne catégorie par identifiant
GET/api/offersTout le monde ; le personnel voit aussi les lignes masquéesLes menus combinés, avec leurs choix, suppléments et économies
GET/api/offers/:codeTout le monde ; le personnel voit aussi les lignes masquéesUn menu combiné, par exemple classic-combo
GET/api/homepage-sectionsTout le monde ; le personnel voit aussi les lignes masquéesLes sections de la page d'accueil, dans l'ordre de la page
GET/api/homepage-sections/:key/productsN'importe quiLes plats qu'affiche une section, dans l'ordre
GET/api/reviews/product/:productIdN'importe quiLes avis d'un plat
GET/api/reviews/product/:productId/summaryN'importe quiLa moyenne, le total et le nombre par étoile

Un plat porte name, description et ingredients dans les deux langues, price, sa category, images, option_groups avec leurs choices et le price_delta de chaque choix, allergens, dietary_tags, preparation_minutes, et les interrupteurs is_active (publié), is_available (commandable maintenant), is_featured et is_best_seller.

Les cuisines et la vérification du code postal

MéthodeCheminQui peut l'appelerRôle
GET/api/kitchensTout le monde ; le personnel voit aussi les lignes masquéesLes cuisines, chacune avec ses horaires, son fuseau horaire, son temps de préparation, ses codes postaux de livraison et si elle est ouverte en ce moment
GET/api/kitchens/:codeTout le monde ; le personnel voit aussi les lignes masquéesUne cuisine, par exemple central
POST/api/kitchens/checkN'importe quiQuelle cuisine peut desservir un code postal
POST /api/kitchens/check
{ "postcode": "10001", "mode": "delivery", "kitchen_code": "central" }

Elle répond { result, kitchen, alternatives }, où result vaut match, outside_area ou closed. Le retrait sur place n'est pas limité par le code postal. L'ouverture d'une cuisine suit le réglage de l'horloge de service.

Prix, codes promo et panier

MéthodeCheminQui peut l'appelerRôle
POST/api/checkout/quoteTout le monde ; un jeton client est lu s'il est envoyéCalculer le prix d'un panier pour une cuisine sans rien écrire
POST/api/promo/validateN'importe quiCe qu'un code retirerait d'un sous-total : { code, subtotal }
GET/api/cartClientLe panier serveur du client connecté, avec son devis
POST/api/cart/itemsClientAjouter une sélection
PATCH/api/cart/items/:idClientModifier la quantité, les options ou la note d'une ligne
DELETE/api/cart/items/:idClientSupprimer une ligne
DELETE/api/cartClientVider le panier
PUT/api/cart/metaClientChanger de cuisine et de mode, livraison ou retrait
POST/api/cart/mergeClientFusionner un panier invité à la connexion, sans jamais remplacer une ligne
POST /api/checkout/quote
{
  "lines": [
    { "product_id": 9, "quantity": 1, "options": [{ "group": "size", "choice": "double" }], "instructions": "no onions" },
    { "offer_id": 1, "quantity": 1, "offer_choices": { "main": 9, "side": 5, "drink": 3 } }
  ],
  "kitchen_code": "central",
  "fulfillment": "delivery",
  "address": { "street": "12 Main St", "city": "Demo City", "postcode": "10001" },
  "promo_code": "TASTE10"
}
  • Une ligne indique un product_id ou un offer_id, avec une quantity de 1 à 10 et des instructions de 200 caractères au plus.
  • Le devis indique le sous-total, les remises, les frais, le total, les points que rapporterait la commande, si la livraison peut avoir lieu (address_incomplete, outside_area, closed, below_minimum) et une liste changes pour chaque ligne dont le prix a changé ou qui ne peut pas être commandée.
  • Un code promo retire son pourcentage du sous-total du menu, jamais des frais de livraison. redeem_points: true applique une utilisation de points pour un client connecté qui en a assez.

Passer et suivre une commande

MéthodeCheminQui peut l'appelerRôle
POST/api/ordersTout le monde ; un jeton client est lu s'il est envoyéPasser une commande. Nécessite un en-tête Idempotency-Key
GET/api/orders/myClientLes commandes du client, de la plus récente à la plus ancienne
GET/api/orders/number/:orderNumberClientUne des commandes du client, par exemple FS-1042
GET/api/orders/trackN'importe quiSuivi invité : ?number=FS-1042&email=…
GET/api/orders/track/statusN'importe quiL'état d'une commande, pour le détenteur d'un jeton de suivi : ?token=…
  • POST /api/orders accepte les lines du devis, kitchen_code, fulfillment et address, plus phone, payment_method (stripe, paypal ou demo, comme les liste GET /api/payments/methods), terms_accepted: true et, pour un invité, name et email. Optionnels : promo_code, redeem_points, delivery_instructions, locale, accept_changes, ainsi que return_url_ok et return_url_cancel, qui doivent se trouver sur une adresse de CORS_ORIGIN.
  • Elle répond 201 avec { order, payment, tracking }. payment.kind vaut redirect, avec la page du prestataire dans payment.url, ou none pour le paiement de démonstration, que POST /api/payments/checkout-session règle ensuite. tracking est un jeton signé, valable trois heures, pour GET /api/orders/track/status.
  • Le même Idempotency-Key envoyé par la même personne renvoie la commande enregistrée au lieu d'en créer une deuxième.
  • Un prix qui a changé, ou un plat devenu indisponible, répond 422 avec code: "changes" jusqu'à ce que le client envoie la clé du changement dans accept_changes.
  • Le suivi invité répond le même 404 pour un numéro inconnu, un mauvais e-mail et des paramètres manquants.

Le statut d'une commande passe par pending, confirmed, preparing, ready, puis out_for_delivery et delivered pour une livraison, ou directement delivered pour un retrait. Elle peut être cancelled avec un motif avant de quitter la cuisine, et ne devient refunded que lorsque le prestataire de paiement signale un remboursement.

Paiements

MéthodeCheminQui peut l'appelerRôle
GET/api/payments/methodsN'importe quiCe que le paiement peut proposer : { methods, hosted, modes }, chaque moyen en test ou live
POST/api/payments/checkout-sessionTout le monde ; un jeton client est lu s'il est envoyéPayer, ou rouvrir le paiement, d'une commande en attente impayée : { order_number, email? }
GET/api/payments/return/stripeLe navigateur, au retour de Stripe (adresse signée)Confirme le paiement auprès de Stripe, puis redirige vers le site avec ?order=…&payment=paid|pending|cancelled|failed
GET/api/payments/return/paypalLe navigateur, au retour de PayPal (adresse signée)Capture le paiement approuvé, puis redirige de la même façon
POST/api/payments/webhooks/:providerStripe, PayPal, ou l'appelant du paiement de démonstrationstripe, paypal ou demo. Un appel non signé ou modifié répond 401

Adresses, plats enregistrés, fidélité, avis et contact

MéthodeCheminQui peut l'appelerRôle
GET/api/addressesClientLes adresses de livraison enregistrées
GET/api/addresses/:idClientUne adresse
POST/api/addressesClientEnregistrer une adresse
PATCH/api/addresses/:idClientModifier une adresse
PATCH/api/addresses/:id/defaultClientEn faire l'adresse par défaut
DELETE/api/addresses/:idClientSupprimer une adresse
GET/api/wishlistClientLes plats enregistrés
PUT/api/wishlist/:productIdClientEnregistrer un plat
DELETE/api/wishlist/:productIdClientRetirer un plat
DELETE/api/wishlistClientRetirer tous les plats enregistrés
POST/api/wishlist/mergeClientAjouter les plats enregistrés d'un invité à la connexion
GET/api/rewards/meClientLe solde de points, le coût et la valeur d'une utilisation, et l'historique
POST/api/reviewsClientDonner un avis sur un plat
PATCH/api/reviews/:idClientModifier son propre avis
DELETE/api/reviews/:idClientSupprimer son propre avis
POST/api/contactN'importe quiLe formulaire de contact : name, email, message, client_token. Il arrive au personnel sous forme de notification

Personnel : menu, catégories, menus combinés et page d'accueil

MéthodeCheminQui peut l'appelerRôle
POST/api/productsPersonnel avec products.createCréer un plat
PATCH/api/products/:idPersonnel avec products.editModifier un plat. images et option_groups remplacent tout l'ensemble quand ils sont envoyés
PATCH/api/products/:id/availabilityPersonnel avec products.edit{ is_available } : l'interrupteur qu'une cuisine actionne pendant le service
DELETE/api/products/:idPersonnel avec products.deleteArchiver un plat
GET/api/products/deletedPersonnel avec products.deleteLes plats archivés
POST/api/products/deleted/:id/restorePersonnel avec products.restoreRestaurer un plat
GET/api/products/statisticPersonnel avec products.viewTotaux du menu
GET/api/products/draftsTout membre du personnel connectéLe brouillon enregistré automatiquement du formulaire de plat
PUT/api/products/draftsTout membre du personnel connectéEnregistrer le brouillon
DELETE/api/products/draftsTout membre du personnel connectéAbandonner le brouillon
POST/api/categoriesPersonnel avec categories.createCréer une catégorie
PATCH/api/categories/:idPersonnel avec categories.editModifier une catégorie
DELETE/api/categories/:idPersonnel avec categories.deleteArchiver une catégorie
GET/api/categories/deletedPersonnel avec categories.deleteLes catégories archivées
POST/api/categories/deleted/:id/restorePersonnel avec categories.restoreRestaurer une catégorie
GET/api/categories/statisticPersonnel avec categories.viewNombre de catégories
POST/api/offersPersonnel avec products.createCréer un menu combiné
PATCH/api/offers/:codePersonnel avec products.editModifier un menu combiné
DELETE/api/offers/:codePersonnel avec products.deleteSupprimer un menu combiné
GET/api/homepage-sections/:keyPersonnel avec products.viewUne section de la page d'accueil
PUT/api/homepage-sections/:keyPersonnel avec products.editModifier une section : title, content, position, is_visible, product_ids. Ce qui est omis reste inchangé

Personnel : commandes et vue d'ensemble

MéthodeCheminQui peut l'appelerRôle
GET/api/ordersPersonnel avec orders.viewToutes les commandes que le membre peut voir : status (séparés par des virgules), fulfillment, date (today, yesterday ou un jour), q, sort_by, sort_order, pagination
GET/api/orders/:idPersonnel avec orders.viewUne commande avec sa chronologie
GET/api/orders/statisticPersonnel avec orders.viewTotaux par statut, et le chiffre d'affaires encaissé pour les comptes qui voient les montants
PATCH/api/orders/:id/statusPersonnel avec orders.editFaire avancer une commande : { status, reason? }. Une annulation nécessite un motif
GET/api/overviewPersonnel avec orders.viewLa page principale du tableau de bord : ?range=today ou yesterday. Refusée aux comptes cuisine
  • Un passage que l'enchaînement des statuts n'autorise pas répond 409 errors.transition_not_allowed ; un passage que ce compte ne peut pas faire, 403 errors.transition_forbidden ; la confirmation d'une commande impayée, 409 errors.payment_required.
  • Un compte cuisine ne voit que les commandes de sa propre cuisine, sans les prix, et toute autre commande répond 404.

Personnel : clients, équipe et rôles

MéthodeCheminQui peut l'appelerRôle
GET/api/usersPersonnel avec users.viewClients, avec recherche et filtres
GET/api/users/statisticPersonnel avec users.viewTotaux des clients
GET/api/users/:usernamePersonnel avec users.viewUn client
POST/api/usersPersonnel avec users.createCréer un client
PATCH/api/users/:usernamePersonnel avec users.updateModifier un client
PATCH/api/users/:username/change-passwordPersonnel avec users.updateDéfinir le mot de passe d'un client
POST/api/users/:username/make-verifiedPersonnel avec users.verifyMarquer l'e-mail comme vérifié
POST/api/users/:username/make-unverifiedPersonnel avec users.verifyMarquer l'e-mail comme non vérifié
DELETE/api/users/:usernamePersonnel avec users.deleteSupprimer un client
GET/api/users/deletedPersonnel avec users.viewClients supprimés
GET/api/users/deleted/:usernamePersonnel avec users.viewUn client supprimé
POST/api/users/deleted/:username/restorePersonnel avec users.restoreRestaurer un client
GET/api/adminsPersonnel avec admins.viewL'équipe
GET/api/admins/statisticsPersonnel avec admins.viewTotaux de l'équipe
GET/api/admins/:idPersonnel avec admins.viewUn membre, par id ou par nom d'utilisateur
POST/api/adminsPersonnel avec admins.createAjouter un membre
PATCH/api/admins/:idPersonnel avec admins.editModifier un membre, y compris sa cuisine
PATCH/api/admins/:id/rolesPersonnel avec admins.assign_rolesDéfinir les rôles d'un membre
DELETE/api/admins/:idPersonnel avec admins.deleteRetirer un membre
PATCH/api/admins/profilePersonnel avec admins.editModifier son propre profil
PATCH/api/admins/profile/passwordTout membre du personnel connectéChanger son propre mot de passe
GET/api/rolesPersonnel avec roles.viewLes rôles
GET/api/roles/statisticsPersonnel avec roles.viewNombre de rôles
GET/api/roles/selectPersonnel avec roles.viewLes rôles, sous une forme adaptée à un sélecteur
GET/api/roles/permissionsPersonnel avec roles.viewToutes les permissions
GET/api/roles/:idPersonnel avec roles.viewUn rôle avec ses permissions
POST/api/rolesPersonnel avec roles.createCréer un rôle
PUT/api/roles/:idPersonnel avec roles.editRenommer un rôle
POST/api/roles/:id/permissionsPersonnel avec roles.assign_permissionsDéfinir les permissions d'un rôle
DELETE/api/roles/:idPersonnel avec roles.deleteSupprimer un rôle

Personnel : paramètres, cuisines, codes promo, envois de fichiers et notifications

MéthodeCheminQui peut l'appelerRôle
GET/api/settingsPersonnel avec settings.viewChaque paramètre enregistré : search, category, pagination
GET/api/settings/:keyPersonnel avec settings.viewUn paramètre, par exemple delivery_fee
PATCH/api/settings/:keyPersonnel avec settings.editModifier un paramètre
DELETE/api/settings/:keyPersonnel avec settings.editSupprimer un paramètre
POST/api/kitchensPersonnel avec settings.editAjouter une cuisine
PATCH/api/kitchens/:codePersonnel avec settings.editModifier une cuisine
DELETE/api/kitchens/:codePersonnel avec settings.editSupprimer une cuisine
GET/api/promoPersonnel avec settings.viewLes codes promo
POST/api/promoPersonnel avec settings.editCréer un code : code, percent, excludes_delivery, stackable_with_rewards, is_active
PATCH/api/promo/:idPersonnel avec settings.editModifier un code
DELETE/api/promo/:idPersonnel avec settings.editSupprimer un code. Les commandes le conservent sous forme de texte
POST/api/helpers/uploadTout membre du personnel connectéEnvoyer une image ou une vidéo, en multipart/form-data avec file, jusqu'à 150 Mo
GET/api/notificationsTout membre du personnel connectéLes 30 notifications les plus récentes du membre et le nombre de non lues
PATCH/api/notifications/read-allTout membre du personnel connectéMarquer toutes les notifications comme lues
PATCH/api/notifications/:id/readTout membre du personnel connectéEn marquer une comme lue
DELETE/api/notifications/:idTout membre du personnel connectéEn supprimer une
  • Les paramètres sur lesquels tourne le restaurant sont delivery_fee, pickup_fee, delivery_minimum, rewards_points_per_dollar, rewards_redeem_points, rewards_redeem_value et service_clock (real ou demo-fixed), à côté de site_name, site_tagline, support_email et support_phone.
  • Une image envoyée est stockée en JPEG en plusieurs tailles, et la réponse associe chaque version à son adresse. Les fichiers vont dans le bucket quand les variables R2_* sont définies, et sinon dans /media/uploads/… sur l'API.
  • Chaque route de notifications répond avec le flux complet : un client remplace donc ce qu'il a par la réponse.

Limites par adresse

RouteLimiteVariable
POST /api/auth/login, POST /api/auth/customer/login10 connexions échouées par 15 minutes, par formulaireRATE_LIMIT_LOGIN
POST /api/orders10 par 10 minutesRATE_LIMIT_ORDERS
POST /api/payments/checkout-session30 par 10 minutesRATE_LIMIT_PAYMENT_SESSION
GET /api/orders/track30 par 10 minutesRATE_LIMIT_TRACKING
POST /api/auth/customer/register10 par heureRATE_LIMIT_REGISTER
POST /api/contact5 par heureRATE_LIMIT_CONTACT
POST /api/auth/customer/forgot-password10 par heure, et 5 messages par destinataire et par jourRATE_LIMIT_PASSWORD_RESET, MAIL_MAX_PER_ADDRESS_PER_DAY

Une requête au-delà d'une limite répond 429 avec errors.rate_limited. Les compteurs sont gardés dans la mémoire de l'API, donc un redémarrage les remet à zéro. Derrière un reverse proxy, définissez TRUST_PROXY pour que chaque visiteur soit compté sur sa propre adresse.

L'assistant IA et ses conversations

Inclus avec votre achat. Connectez-vous pour le lire, ou ouvrez-le dans votre téléchargement.

Les routes de streaming de l'assistant, sa liste de modèles et les conversations enregistrées.

Studio IA

Inclus avec votre achat. Connectez-vous pour le lire, ou ouvrez-le dans votre téléchargement.

Les routes du studio : fiches, générations, enregistrement des résultats et suppression d'arrière-plan.

Serveur MCP

Inclus avec votre achat. Connectez-vous pour le lire, ou ouvrez-le dans votre téléchargement.

L'endpoint MCP pour les agents de code et la façon dont il est autorisé.

Mises à jour en direct via WebSocket

Inclus avec votre achat. Connectez-vous pour le lire, ou ouvrez-le dans votre téléchargement.

Les namespaces Socket.IO qu'écoute le tableau de bord, leurs événements et la façon dont une connexion est autorisée.

Routes du mode démo

Inclus avec votre achat. Connectez-vous pour le lire, ou ouvrez-le dans votre téléchargement.

Les routes qui n'existent que sur un build de démo publique.

Bloqué sur une étape ?

Trouvez une solution avant de tout recommencer.

Dépannage

Préférences des Cookies

Nous utilisons des cookies pour améliorer votre expérience de navigation, analyser le trafic du site et personnaliser le contenu. En cliquant sur "Accepter Tout", vous consentez à notre utilisation des cookies pour l'analyse et la publicité personnalisée.