AuthentificationBientôt disponible
Deux accès à l'API Matchai : des clés d'API pour votre compte et Se connecter avec Matchai (OAuth 2.1) pour les applications. Portées, actions finales, énergie.
Chaque requête à l'API Matchai agit pour un seul compte Matchai. Il y a deux façons d'obtenir l'identifiant de connexion qui le prouve, et la bonne dépend du compte avec lequel vous travaillez.
Deux façons d'accéder
| Clés d'API | Se connecter avec Matchai | |
|---|---|---|
| À utiliser pour | Vos propres scripts et vos propres outils IA, sur votre propre compte | Une application qui sert d'autres professionnels : un créateur de sites Web, un CRM, un assistant IA |
| Qui accorde l'accès | Vous, quand vous créez la clé | Le professionnel, en appuyant sur Autoriser |
| Identifiant de connexion | Une clé qui commence par matchai_ | Un jeton d'accès OAuth 2.1, avec un jeton d'actualisation |
| Portées | Choisies quand vous créez la clé | Demandées par votre application et montrées au professionnel |
| Configuration | Créer une clé dans Matchai | Créer une application Matchai, puis exécuter le flux OAuth |
| Fin de l'accès | Vous révoquez la clé | Le professionnel appuie sur Déconnecter |
Les deux vont dans le même en-tête :
Authorization: Bearer matchai_…Un jeton d'accès OAuth s'envoie de la même façon, à la place de la clé.
Clés d'API
Créer une clé pour votre propre compte, choisir ses portées, la renouveler et la révoquer.
Créer une application Matchai
Enregistrez l'application à laquelle les professionnels se connecteront.
Se connecter avec Matchai
Le flux OAuth 2.1, la page d'autorisation et un exemple de code complet.
Pourquoi chaque identifiant de connexion n'atteint qu'un seul compte
Une clé ou un jeton est lié au compte qui l'a accordé, alors il ne peut jamais lire les inscriptions, les contacts ou les messages d'un autre professionnel. Une application qui sert trois courtiers détient trois connexions, chacune avec ses propres jetons, peu importe comment elle est construite. C'est aussi pourquoi une clé personnelle ne peut pas servir à exploiter un service pour d'autres personnes : servir d'autres professionnels passe par Se connecter avec Matchai, où chacun donne son accord.
Ce qu'une requête peut faire
Une requête peut faire ce que le titulaire du compte peut faire dans Matchai, selon les mêmes règles et les mêmes permissions, et rien de plus. Deux éléments la restreignent davantage :
- Les portées limitent les parties du compte auxquelles l'identifiant de connexion peut toucher.
- Les actions finales attendent l'approbation du titulaire du compte, à moins qu'il ait permis à votre application de les exécuter.
GET /v1/me/connection (getConnection) indique à votre application comment elle est connectée : l'application, les portées accordées, auth_type (api_key ou oauth), approval_mode (ask_me ou allowed) et si la connexion est en mode test.
Portées
Chaque opération de la référence de l'API indique les portées dont elle a besoin. Ne demandez que ce que votre application utilise : un professionnel est plus enclin à appuyer sur Autoriser quand la liste est courte et que chaque ligne a du sens.
| Portée | Ce qu'elle permet |
|---|---|
profile:read | Lire le profil, la langue, le fuseau horaire et l'état de l'énergie du compte |
profile:write | Modifier le profil du compte |
listings:read | Lire les inscriptions, leurs photos, leurs pièces, leurs documents et leurs traductions |
listings:write | Créer et modifier des inscriptions, leurs photos, leurs pièces et leurs traductions, et les supprimer |
listings:publish | Publier et dépublier des inscriptions |
sites:read | Lire les sites Matchai et les inscriptions qui y figurent |
sites:write | Créer, modifier et publier des sites Matchai, et choisir leurs inscriptions |
page:read | Lire la Page Matchai et ses liens |
page:write | Modifier et publier la Page Matchai, ses liens et ses fichiers |
contacts:read | Lire les contacts et les détails des prospects |
contacts:write | Ajouter, modifier, convertir et supprimer des contacts, et enregistrer les demandes de renseignements reçues par le site Web |
messages:read | Lire les conversations, les messages et les courriels envoyés, marquer des conversations comme lues ou les archiver, et rédiger des brouillons de réponse |
messages:send | Envoyer des messages et des courriels, et commencer des conversations, au nom du titulaire du compte |
calendar:read | Lire les disponibilités et les rendez-vous |
calendar:write | Modifier les disponibilités, réserver et modifier des rendez-vous, et enregistrer des demandes de visite |
documents:read | Lire les documents Matchai Cloud et les liens de dépôt |
documents:write | Téléverser, classer, étiqueter, partager et mettre à la corbeille des documents, et créer des liens de dépôt |
teams:read | Lire les équipes, leurs membres et leurs invitations |
teams:write | Créer et gérer des équipes, et inviter ou retirer des membres |
projects:read | Lire les projets, leurs membres, leurs équipes et leurs inscriptions |
projects:write | Créer et gérer des projets, et inviter ou retirer des membres |
notifications:read | Lire les notifications et les préférences de notification |
notifications:write | Marquer des notifications comme lues et modifier les préférences de notification |
saved_listings:read | Lire les inscriptions que le compte a ajoutées à ses favoris |
saved_listings:write | Ajouter des inscriptions aux favoris et les en retirer |
analytics:read | Lire l'analytique des inscriptions, y compris l'activité de l'IA |
webhooks:manage | Gérer les abonnements aux webhooks et lire les événements |
Quand il manque une portée à un identifiant de connexion, l'appel échoue avec 403 et le code scope_missing, et le message nomme la portée. Pour une clé, créez une nouvelle clé qui a la portée et révoquez l'ancienne. Pour une connexion OAuth, faites repasser le professionnel par le flux de connexion de votre application, pour qu'il puisse accepter la liste plus longue.
Quelques opérations ne demandent aucune portée parce qu'elles ne touchent qu'à ce qui est déjà public, comme la consultation du profil publié d'un professionnel. Elles sont marquées Free (gratuit) dans la référence, et une clé ou un jeton y est facultatif.
Actions finales
Quatre sortes d'actions sont finales : envoyer quelque chose à une autre personne, publier quelque chose pour le public, payer, et supprimer du contenu du compte. L'Assistant Matchai demande toujours avant de faire l'une ou l'autre, et l'API impose la même règle à votre application. Chaque action finale est marquée Final action (action finale) dans la référence.
Le titulaire du compte choisit comment votre application les gère, connexion par connexion :
| Réglage | Ce qui se passe quand votre application appelle une action finale |
|---|---|
| Me demander (par défaut) | L'appel ne s'exécute pas. Il renvoie 202 Accepted et attend que le titulaire du compte l'approuve dans Matchai. |
| Autorisé | L'appel s'exécute tout de suite et renvoie sa réponse habituelle. |
Tout ce qui n'est pas une action finale s'exécute selon les portées de l'identifiant de connexion, comme la même modification le ferait dans l'application : les lectures, les brouillons et les changements aux propres dossiers du titulaire du compte. Retirer la configuration de votre propre application, comme un abonnement à un webhook, n'est pas non plus une action finale.
Concevez votre application pour les deux réglages. Le titulaire du compte peut changer le réglage en tout temps, alors ne présumez jamais de celui que vous aurez.
Suivre une approbation
Une action finale sous Me demander répond 202 et ne fait encore rien :
{
"status": "pending_approval",
"approval_id": "1e2f3a4b-5c6d-4e7f-8a8b-9c0d1e2f3a4b",
"approval_url": "https://matchai.co/approvals/1e2f3a4b-5c6d-4e7f-8a8b-9c0d1e2f3a4b",
"expires_at": "2026-10-25T13:05:00Z",
"summary": "Send a message to Julien Bouchard"
}Avisez la personne. Matchai avise le titulaire du compte, qui approuve ou refuse sur une page qui décrit l'action en mots simples. Affichez summary dans votre propre interface et faites un lien vers approval_url, pour que la personne puisse répondre de là où elle est.
Attendez le résultat. Le webhook approval.resolved arrive quand la demande reçoit une réponse, ou quand elle expire. Vous pouvez aussi interroger GET /v1/approvals/{approval_id} (getApproval). Les webhooks sont le meilleur choix : personne n'a à deviner combien de temps une personne prendra.
Lisez le résultat. Quand la demande est approved, Matchai a exécuté l'appel exactement comme vous l'avez envoyé, et result contient le statut et le corps que l'appel a renvoyés. Envoyez le texte exact que la personne a vu. Ne réécrivez jamais un brouillon qu'elle a approuvé.
Une approbation a l'un de cinq statuts :
| Statut | Signification |
|---|---|
pending | En attente du titulaire du compte. Rien ne s'est passé. |
approved | Approuvée, et Matchai a exécuté l'appel. result contient le résultat. |
declined | Le titulaire du compte a refusé. Rien ne s'est passé. |
expired | Personne n'a répondu avant expires_at. Rien ne s'est passé. |
cancelled | Votre application a retiré la demande avec POST /v1/approvals/{approval_id}/cancel (cancelApproval). |
GET /v1/approvals (listApprovals) liste les demandes que votre connexion a faites, et accepte un filtre status.
Envoyez un Idempotency-Key avec chaque action finale. Si votre requête expire et que vous la répétez avec la même clé, vous recevez la même approbation en attente au lieu d'une deuxième.
Cet exemple publie une inscription et gère les deux réglages :
import { randomUUID } from 'node:crypto';
const response = await fetch(`https://api.matchai.co/v1/listings/${listingId}/publish`, {
method: 'POST',
headers: {
Authorization: `Bearer ${process.env.MATCHAI_API_KEY}`,
'Idempotency-Key': randomUUID(),
},
});
if (response.status === 202) {
// Ask me: nothing has happened yet.
const pending = await response.json();
console.log(`Waiting: ${pending.summary}`);
console.log(`The account holder can answer at ${pending.approval_url}`);
} else if (response.ok) {
// Allowed: the listing is published now.
const listing = await response.json();
console.log(`Published at ${listing.url}`);
} else {
const { error } = await response.json();
throw new Error(`${error.code}: ${error.message}`);
}Limites d'énergie
Certaines actions dépensent de l'Énergie Matchai, comme les fonctionnalités d'IA le font dans l'application : rédiger une inscription avec l'IA, retoucher des photos, traduire, rédiger un brouillon avec l'IA, envoyer un courriel, et les messages envoyés par texto. La référence marque chacune d'elles et indique le poids de l'action : légère, modérée, élevée, ou variable.
- L'API n'affiche jamais l'énergie sous forme de nombre.
GET /v1/merenvoie son état :full,comfortable,lowouempty. - Un appel qui demande plus que ce qui reste ne fait rien. Il répond
402avec le codeinsufficient_energy, et rien n'est dépensé. - Le titulaire du compte peut fixer une limite d'énergie pour chaque connexion, pour qu'un script qui s'emballe s'arrête à un plafond qu'il a choisi. Quand votre connexion l'atteint, les appels qui dépensent de l'énergie répondent
402avec le codeenergy_limit_reached, etGET /v1/me/connectionindiqueenergy_limit_reached: true.
Montrez à la personne le message d'un 402 : il dit ce qui s'est passé et quoi faire ensuite. Consultez Erreurs.
Mettre fin à une connexion
Une connexion prend fin de l'une de trois façons, et chacune arrête tous les identifiants de connexion qui lui appartiennent :
- Le professionnel appuie sur Déconnecter sur la page Connecteurs.
- Vous révoquez une clé d'API.
- Votre application appelle
DELETE /v1/me/connection(disconnect). Cet appel met fin à la connexion comme si le professionnel avait appuyé sur Déconnecter, et ne supprime rien dans le compte.
Une fois une connexion terminée, ses abonnements aux webhooks sont désactivés et ses requêtes répondent 401. Traitez cette réponse comme un signal de reconnexion, et non comme une panne.
Mode test
Une application connectée seulement au compte de son propre développeur est en mode test. Les connexions de test ne sont pas facturées, et les événements qu'elles produisent portent test_mode: true. La page Créer une application Matchai explique comment cela fonctionne, et qui paie une fois que d'autres professionnels se connectent.
Démarrage rapideBientôt disponible
Créez une clé d'API, appelez GET /v1/me, listez vos inscriptions et ajoutez un contact avec curl, JavaScript ou Python. L'API Matchai arrive bientôt.
Clés d'APIBientôt disponible
Créez une clé d'API à portées limitées pour votre compte Matchai, utilisez-la comme jeton de porteur, protégez-la, renouvelez-la, révoquez-la. Pour vos outils.