Aller au contenu de la page
Documentation
Documentation de Make Agent Fast

Référence de l'API

Retrouvez chaque ressource publique, méthode, scope requis, règle de pagination et contrat de mutation.

En un coup d’œil

Retrouvez chaque ressource publique, méthode, scope requis, règle de pagination et contrat de mutation.

Parcours des requêtes APIClé à portée limitée → ressource versionnée → réponse signée
Application / SDKClé Bearermaf_live_…/api/v1/…RessourceJSON
v1123 opérationsJSON

Le contrat canonique lisible par machine est le JSON OpenAPI. Cette page est l'index des opérations, rédigé pour les humains, et explique les règles communes à tous les endpoints.

URL de base et version#

https://makeagent.fast/api/v1

La version majeure fait partie du chemin. Des champs supplémentaires peuvent apparaître sans changement de version majeure : ignorez donc les champs de réponse inconnus. Toutes les requêtes de gestion utilisent HTTPS ainsi qu'une clé d'API bearer ou un jeton d'accès OAuth.

En-têtes courants#

Authorization: Bearer maf_live_...
Accept: application/json
Content-Type: application/json
Idempotency-Key: your-stable-operation-key

Content-Type est obligatoire pour les corps JSON des requêtes POST et PATCH, y compris {}. Idempotency-Key est facultatif, mais vivement recommandé pour chaque POST, PATCH et DELETE.

Compte et sites#

MéthodeCheminScopeObjectif
GET/meaccount:readLire le résumé du compte, du forfait, des droits et du portefeuille
GET/sitessites:readLister les sites dont vous êtes propriétaire
POST/sitessites:writeCréer un site et son agent par défaut
GET/sites/{site_id}sites:readRécupérer un site dont vous êtes propriétaire
PATCH/sites/{site_id}sites:writeMettre à jour les champs du site modifiables en toute sécurité
DELETE/sites/{site_id}sites:writeSupprimer le site et les ressources qui en dépendent
POST/sites/{site_id}/publishsites:writePublier ou dépublier avec { "published": boolean }
GET/sites/{site_id}/agentagents:readLire les paramètres de l'agent
PATCH/sites/{site_id}/agentagents:writeMettre à jour le mode de persona, l'objectif, le nom affiché, les instructions, la voix, les langues, le modèle, l'apparence, l'habillage de l'intégration, le badge, l'état de l'intégration ou les origines
GET/sites/{site_id}/billingaccount:readLire le forfait, la période, le portefeuille, les modules complémentaires et les liens de facturation du tableau de bord
PATCH/sites/{site_id}/workspaceteam:writeRenommer l'entreprise propriétaire de l'agent
PATCH/sites/{site_id}/retentionteam:writeDéfinir la durée de conservation des conversations

La création d'un site exige title et content.headline. Les champs facultatifs comprennent slug, type, template, du contenu supplémentaire, persona_mode, ainsi qu'une à quatre langues parmi en, ko, uz et ru.

PATCH /agent soumet model, appearance, embed_chrome et badge_hidden aux mêmes contrôles de forfait que le tableau de bord ; badge_hidden: true nécessite un forfait éligible ou le module complémentaire de badge.

Installation et widget de site web#

MéthodeCheminScopeObjectif
GET/sites/{site_id}/installagents:readLire la cible d'installation, l'état de l'intégration, les origines autorisées et les preuves d'installation
PATCH/sites/{site_id}/installagents:writeDéfinir la page sur laquelle le widget doit être installé
POST/sites/{site_id}/install/checkagents:writeVérifier si l'extrait d'intégration est actif sur la page cible

Connaissances et FAQ#

MéthodeCheminScopeObjectif
GET/sites/{site_id}/knowledgeknowledge:readLister les sources de connaissances
POST/sites/{site_id}/knowledgeknowledge:writeIngérer du texte collé, explorer un site web ou importer une source YouTube, de podcast ou de flux
PATCH/sites/{site_id}/knowledge/{source_id}knowledge:writeDéfinir refresh_hours ou le approval_status du buyer pack
POST/sites/{site_id}/knowledge/{source_id}/recrawlknowledge:writeMettre en file d'attente une nouvelle lecture d'une source récupérée ; renvoie 202
DELETE/sites/{site_id}/knowledge/{source_id}knowledge:writeRetirer une source des futures recherches
GET/sites/{site_id}/faqsknowledge:readLister les FAQ structurées
POST/sites/{site_id}/faqsknowledge:writeCréer { "question", "answer", "approved" }
POST/sites/{site_id}/faqs/generateknowledge:writeRédiger des brouillons de FAQ à partir des connaissances de l'agent
POST/sites/{site_id}/faqs/approve-allknowledge:writeApprouver et publier toutes les FAQ en brouillon
PATCH/sites/{site_id}/faqs/{faq_id}knowledge:writeMettre à jour la question, la réponse ou l'état d'approbation
DELETE/sites/{site_id}/faqs/{faq_id}knowledge:writeSupprimer une FAQ
GET / PATCH/sites/{site_id}/fact-sheetknowledge:read / knowledge:writeLire la fiche d'informations de l'entreprise extraite, ou corriger les informations que l'extraction a mal interprétées
POST/sites/{site_id}/fact-sheet/reextractknowledge:writeRelire le site web et reconstruire la fiche d'informations
POST/sites/{site_id}/qaknowledge:writePublier des paires de questions-réponses sélectionnées
POST/sites/{site_id}/answers/reviseknowledge:writeApprendre à l'agent la réponse qu'il aurait dû donner
GET/sites/{site_id}/knowledge-connectionsknowledge:readLister les connexions de connaissances Notion, Drive et MCP
GET/sites/{site_id}/knowledge-connections/connect-linksknowledge:readObtenir les URL du tableau de bord qui lancent une connexion Notion ou Drive
PATCH / DELETE/sites/{site_id}/knowledge-connections/{connection_id}knowledge:writeDéfinir la fréquence de synchronisation, les éléments sélectionnés ou l'outil d'importation ; ou déconnecter la connexion et purger ses données
GET/sites/{site_id}/knowledge-connections/{connection_id}/itemsknowledge:readLister les pages, bases de données ou fichiers qu'une connexion peut importer
POST/sites/{site_id}/knowledge-connections/{connection_id}/syncknowledge:writeMettre en file d'attente la synchronisation d'une connexion de connaissances

POST /knowledge accepte trois corps : { "name", "text" } avec 5 à 200 000 caractères ; { "url", "max_pages", "refresh_hours" } pour explorer un site web (max_pages de 1 à 40, refresh_hours de 1 à 8 760 ou null) ; et { "kind": "youtube" | "podcast" | "feed", "url", "refresh_hours" }. Les sources YouTube, de podcast et de flux nécessitent Operate ou Scale ; avec Launch, elles renvoient 409 conflict. L'envoi de fichiers reste un workflow du tableau de bord.

Conversations, leads, analytique et utilisation#

MéthodeCheminScopeObjectif
GET/sites/{site_id}/conversationsconversations:readLister les fils de conversation
GET/sites/{site_id}/conversations/{conversation_id}conversations:readRécupérer un fil et ses messages paginés
POST/sites/{site_id}/conversations/{conversation_id}/replyconversations:writeRépondre à un visiteur au nom de l'entreprise
POST/sites/{site_id}/conversations/{conversation_id}/pauseconversations:writeMettre l'agent en pause sur cette conversation et la prendre en charge
POST/sites/{site_id}/conversations/{conversation_id}/resumeconversations:writeRendre la conversation à l'agent
GET/sites/{site_id}/leadsleads:readLister les leads capturés
POST/sites/{site_id}/leadsleads:writeCréer un lead canonique avec un consentement explicite et des préférences de contact
GET/sites/{site_id}/leads/{lead_id}leads:readRécupérer un lead
PATCH/sites/{site_id}/leads/{lead_id}leads:writeMettre à jour un lead, le qualifier ou modifier sa politique de contact
POST/sites/{site_id}/leads/{lead_id}/acceptleads:writeAccepter un lead dans le pipeline d'opportunités
POST/sites/{site_id}/leads/{lead_id}/followupleads:writeEnvoyer le message de relance à un lead
POST/sites/{site_id}/leads/{lead_id}/followup/draftleads:writeRédiger à nouveau le message de relance sans l'envoyer
GET/sites/{site_id}/analyticsanalytics:readLister les événements d'analytique
GET/sites/{site_id}/reportanalytics:readLire le rapport d'analytique agrégé
POST/sites/{site_id}/report/unanswered-faqknowledge:writeRépondre à une question sans réponse en la transformant en nouvelle FAQ
GET/sites/{site_id}/usageusage:readLister les événements d'utilisation mesurée

Ces collections d'événements et d'activité acceptent limit et cursor. Les enregistrements renvoyés peuvent contenir des données personnelles ; stockez-les et exportez-les conformément à vos obligations en matière de confidentialité.

Les réponses du owner sont prises en charge : reply, pause et resume reprennent la main sur un fil web ou sur une discussion Telegram, WhatsApp, Messenger ou Instagram, exactement comme le fait le tableau de bord. L'envoi de messages au nom du visiteur n'est pas une opération de l'API publique. La mutation des leads est prise en charge ; ne définissez pas consent_status: granted sauf si votre système dispose d'un enregistrement de consentement défendable. Les consentements inconnus sont exclus des diffusions.

Pipeline d'opportunités et résultats CRM#

MéthodeCheminScopeObjectif
GET / POST/sites/{site_id}/pipeline/stagespipeline:read / pipeline:writeLister ou configurer les étapes
GET / POST/sites/{site_id}/pipeline/accountspipeline:read / pipeline:writeLister ou créer des comptes d'entreprise
GET/sites/{site_id}/pipeline/accounts/{account_id}pipeline:readRécupérer un compte d'entreprise
GET / POST/sites/{site_id}/pipeline/opportunitiespipeline:read / pipeline:writeLister ou créer des opportunités
GET / PATCH/sites/{site_id}/pipeline/opportunities/{opportunity_id}pipeline:read / pipeline:writeLire l'activité ou mettre à jour l'attribution, la valeur, l'étape, la prochaine action et la réponse humaine
POST/sites/{site_id}/pipeline/outcomespipeline:writeImporter de manière idempotente un résultat gagné ou perdu provenant d'un CRM
GET/sites/{site_id}/pipeline/sync-recordspipeline:readLister l'état de synchronisation, les tentatives et les erreurs
POST/sites/{site_id}/pipeline/sync-records/{sync_record_id}/retrypipeline:writeRelancer un résultat en échec à partir de sa charge utile enregistrée
GET / PATCH/sites/{site_id}/pipeline-workflowpipeline:read / pipeline:writeLire ou mettre à jour la politique de réponse commerciale
GET / POST/sites/{site_id}/pilotspipeline:read / pipeline:writeLister ou démarrer des pilotes guidés
GET/sites/{site_id}/pilots/{pilot_id}pipeline:readLire un pilote, son étape, ses compteurs et sa liste de tâches
POST/sites/{site_id}/pilots/{pilot_id}/setup, /start, /stop, /review, /decision, /complete, /deletepipeline:writeFaire avancer un pilote à travers la configuration, la mesure, la revue, la décision et la clôture, ou le supprimer avec ses preuves (sept opérations)
POST/sites/{site_id}/pilots/{pilot_id}/outcomes, /bookingspipeline:writeEnregistrer le résultat d'un lead ou le résultat d'une réservation (deux opérations)
POST/sites/{site_id}/pilots/{pilot_id}/report/approve, /report/revokepipeline:writeApprouver ou révoquer le rapport de pilote partageable (deux opérations)
GET / POST/sites/{site_id}/buyer-packspipeline:read / pipeline:writeLister les buyer packs, ou en créer un à partir de sources approuvées
PATCH/sites/{site_id}/buyer-packs/{pack_id}pipeline:writeRemplacer le titre, le public cible, le résumé, les sources et les sections d'un pack
POST/sites/{site_id}/buyer-packs/{pack_id}/approve, /revokepipeline:writeActiver ou désactiver le lien de partage du pack (deux opérations)

Le provider du CRM, l'ID externe et la clé d'idempotence fournis sont conservés dans la piste d'audit. Une nouvelle tentative ne prend en charge qu'un enregistrement en échec et ne transforme jamais une écriture externe en cours en faux succès.

Connecteurs#

MéthodeCheminScopeObjectif
GET/sites/{site_id}/connectorsconnectors:readLister l'état des connecteurs sans les secrets
POST/sites/{site_id}/connectorsconnectors:writeConnecter un canal : valider les identifiants en direct, provisionner son webhook et renvoyer la liste de contrôle de configuration
PATCH/sites/{site_id}/connectors/{connector_id}connectors:writeDéfinir status ou reply_with_voice
DELETE/sites/{site_id}/connectors/{connector_id}connectors:writeDéprovisionner et supprimer un connecteur
POST/sites/{site_id}/conciergeconnectors:writeDemander à la plateforme de connecter un canal de messagerie à votre place
GET/sites/{site_id}/domainsdomains:readSupprimé — renvoie 409. Les domaines personnalisés ne sont pas proposés
POST/sites/{site_id}/domainsdomains:writeSupprimé — renvoie 409
PATCH/sites/{site_id}/domains/{domain_id}domains:writeSupprimé — renvoie 409
POST/sites/{site_id}/domains/{domain_id}/verifydomains:writeSupprimé — renvoie 409
DELETE/sites/{site_id}/domains/{domain_id}domains:writeSupprimé — renvoie 409

La création d'un connecteur utilise un corps discriminé par canal. Les champs d'identifiants diffèrent pour telegram, whatsapp, messenger, instagram, discord et kakao ; consultez le guide du connecteur correspondant avant d'envoyer des secrets.

Diffusions, notifications et monétisation#

MéthodeCheminScopeObjectif
GET/sites/{site_id}/broadcastsbroadcasts:readLister les diffusions
POST/sites/{site_id}/broadcastsbroadcasts:writeCréer un brouillon de diffusion Kakao
POST/sites/{site_id}/broadcasts/{broadcast_id}/sendbroadcasts:writeMettre en file d'attente un brouillon existant ; renvoie 202
GET/sites/{site_id}/notificationsnotifications:readLister les notifications du owner
POST/sites/{site_id}/notifications/read-allnotifications:writeMarquer comme lues toutes les notifications du owner pour cet agent
PATCH/sites/{site_id}/notifications/{notification_id}notifications:writeMarquer comme lue ou non lue avec { "read": boolean }
GET/sites/{site_id}/alertsnotifications:readLire l'état du canal d'alertes du owner et son lien vers le tableau de bord
GET/sites/{site_id}/monetization/productsmonetization:readLister les produits du site
POST/sites/{site_id}/monetization/productsmonetization:writeCréer un produit access, consult, tip ou digital
PATCH/sites/{site_id}/monetization/products/{product_id}monetization:writeMettre à jour les champs du produit et son état actif
DELETE/sites/{site_id}/monetization/products/{product_id}monetization:writeSupprimer un produit

La création d'une diffusion n'accepte actuellement que le canal kakao. La mise en file d'attente échoue avec 409 conflict lorsqu'il n'y a aucun destinataire joignable ou que la diffusion n'est plus un brouillon.

Actions, tickets et équipe#

MéthodeCheminScopeObjectif
GET / PATCH/sites/{site_id}/actionsagents:read / agents:writeLire ou configurer les procédures, le webhook public, le lien de réservation et les tickets de support
GET/sites/{site_id}/ticketstickets:readLister les tickets de support
GET/sites/{site_id}/tickets/{ticket_id}tickets:readLire un ticket et ses messages
PATCH/sites/{site_id}/tickets/{ticket_id}tickets:writeDéfinir le statut, la priorité et, facultativement, la personne assignée
POST/sites/{site_id}/tickets/{ticket_id}/messagestickets:writeAjouter une note interne, ou définir internal: false pour répondre au customer par e-mail
GET/sites/{site_id}/teamteam:readLire les membres, les invitations et les événements d'audit autorisés
POST/sites/{site_id}/team/invitationsteam:writeCréer un lien d'invitation sans envoyer d'e-mail
DELETE/sites/{site_id}/team/invitations/{invitation_id}team:writeRévoquer une invitation en attente
PATCH / DELETE/sites/{site_id}/team/members/{membership_id}team:writeModifier le rôle d'un membre qui n'est pas owner, ou retirer ce membre

Webhooks pour développeurs et outils de configuration#

MéthodeCheminScopeObjectif
GET/webhook-endpointswebhooks:readLister l'état des endpoints sans les secrets de signature
POST/webhook-endpointswebhooks:writeEnregistrer une URL HTTPS publique et révéler une seule fois son secret de signature
DELETE/webhook-endpoints/{endpoint_id}webhooks:writeSupprimer un endpoint et arrêter les futures livraisons
GET/setup/toolsTout identifiant valideDécouvrir les outils de configuration pour les intégrations API, MCP et GitHub
POST/setup/tools/{tool_name}Propre à l'outilExécuter un outil de configuration ; les requêtes de plateforme nécessitent les scopes de leurs endpoints, l'inspection GitHub utilise integrations:read et la préparation de PR utilise integrations:write

Les URL de webhook doivent utiliser HTTPS, ne peuvent pas inclure d'identifiants ni de port personnalisé, et doivent se résoudre uniquement vers des adresses IP publiques.

Pagination#

Les collections paginées acceptent limit de 1 à 100 ; la valeur par défaut est 50. Utilisez le next_cursor opaque renvoyé uniquement avec la même collection et les mêmes filtres.

{
  "data": [],
  "has_more": false,
  "next_cursor": null
}

Certaines petites collections de configuration renvoient la même enveloppe avec has_more: false et n'ont pas besoin de curseur.

Idempotence#

Une clé d'idempotence doit comporter de 8 à 200 caractères parmi les lettres, les chiffres, ., _, : et -. Les résultats sont conservés pendant 24 heures et limités au propriétaire de l'identifiant.

  • Même clé et mêmes méthode, chemin, requête et corps : renvoie la réponse enregistrée avec x-idempotent-replayed: true.
  • Même clé avec des données différentes : renvoie 409 conflict.
  • Même clé pendant que la première requête est en cours de traitement : renvoie 409 conflict et Retry-After: 2.

Enregistrez la clé de façon persistante avant d'envoyer la mutation et réutilisez-la uniquement pour les nouvelles tentatives de cette même opération logique.

Réponses et erreurs#

Les réponses réussies encapsulent leur ressource dans data. Les opérations de création renvoient normalement 201 ; les envois de diffusion mis en file d'attente renvoient 202 ; les autres opérations réussies renvoient 200. Chaque réponse inclut x-request-id et utilise Cache-Control: no-store pour les données de l'API.

Consultez Scopes et erreurs pour le tableau complet des codes d'erreur et Recettes d'API pour des workflows à copier.

Clients MCP#

Connectez un client MCP Streamable HTTP à https://makeagent.fast/api/mcp. Les clients qui prennent en charge la découverte OAuth ouvrent le navigateur pour la connexion et le consentement. Vérifiez l'identité du client, l'entreprise et les scopes demandés avant d'approuver. La première approbation demande les scopes utilisés par les outils (sites:read, sites:write, agents:write, analytics:read, conversations:read, conversations:write, leads:read, leads:write, knowledge:write) ; un identifiant auquel il manque l'un d'eux doit être autorisé à nouveau. Un forfait actif est requis.

Pour les clients qui utilisent des identifiants configurés manuellement, créez une clé d'API limitée à certains scopes dans les paramètres développeur et fournissez-la dans un en-tête Authorization: Bearer .... Ne placez jamais d'identifiants dans le contrôle de code source ni dans le code du navigateur. Révoquez les clés d'API ou les autorisations OAuth depuis les paramètres développeur.

Outils de lecture : list_agents, get_agent, get_report, list_unanswered_questions, list_conversations, get_conversation, list_leads. Outils d'écriture : create_agent_from_website, create_agent_from_notes, test_agent, add_knowledge, save_answer, reply_to_customer, update_lead, set_website_widget. Chaque outil d'agent prend un agent_id issu de list_agents. test_agent consomme des credits comme une réponse normale ; reply_to_customer envoie un message au customer et met l'agent en pause sur cette conversation ; set_website_widget active ou désactive le widget de chat du site web ; les canaux de messagerie se gèrent depuis le tableau de bord. Les clients pour lesquels MCP Apps est activé (par défaut, la connexion Claude authentifiée) disposent aussi de list_pending_approvals, list_action_runs et decide_approval, qui approuve ou refuse une modification confirmée par le customer ; les autres clients ne voient que les 15 outils ci-dessus. Pour les outils de configuration et d'intégration GitHub, utilisez l'assistant de configuration intégré à l'application ou /api/v1/setup/tools.

Les révisions de protocole prises en charge sont 2026-07-28, 2025-11-25 et 2025-06-18. Le transport renvoie du JSON ; il ne propose ni SSE hérité ni sessions serveur. Les jetons MCP OAuth n'autorisent que /api/mcp, et non les requêtes REST directes. Les jetons d'accès OAuth durent une heure ; les identifiants de rafraîchissement sont renouvelés et expirent après 90 jours. Les clés d'API créées manuellement utilisent l'expiration configurée.