IA lit l’entreprise
Chaque agent
IA parcourt le site et rédige l’offre, l’audience, la voix et la marque. Le chat du site, les parcours en cartes et LinkedIn partent de là.
Guide de l’API Contacts Publiques SMOC — un endpoint REST en lecture seule pour lister les contacts et obtenir des totaux agrégés pour votre entreprise. Utilisez-le dans des intégrations personnalisées, des tâches de synchronisation ou avec l’application Zapier.
L’API Publique SMOC permet à des systèmes tiers de lire les contacts pour une seule entreprise. Elle est hébergée sur Cloudflare Workers et automatiquement limitée à l’entreprise liée à votre clé API.
Ce que l’API permet aujourd’hui :
Ce que l’API ne permet pas :
limit)Ce contrat compatible Zapier reste inchangé. L’unique endpoint contacts pour ce contrat est :
GET /api/company/mongocontact
Une recherche de contacts plus riche est additive : POST /api/v2/contacts_search. Ne migrez pas Zapier hors de mongocontact.
Pour la configuration dans la Console, l’authentification et un aperçu des fonctions, commencez par le guide de connexion à l’API REST.
Toutes les intégrations de données SMOC utilisent le même modèle de jeton Console que Zapier et MCP :
Générer une nouvelle clé ne révoque pas les clés existantes. Les clés émises sont listées sur la même page — révoquez les clés inutilisées ici lorsque vous devez faire une rotation des identifiants.
Chaque clé est liée à une seule entreprise. La clé porte une revendication operatorId égale à l’ID de cette entreprise. L’API utilise cela pour limiter toutes les données de contact — vous ne pouvez pas transmettre un autre ID d’entreprise dans la requête.
| Environnement | URL de base |
|---|---|
| Production | https://api.smoc.ai |
Exemple d’endpoint complet :
GET https://api.smoc.ai/api/company/mongocontact
Envoyez votre clé API dans un en-tête HTTP personnalisé nommé token :
GET /api/company/mongocontact HTTP/1.1
Host: api.smoc.ai
token: <your-api-key>
Content-Type: application/json
L’API vérifie la clé et lit la revendication operatorId pour déterminer les contacts de quelle entreprise retourner. Vous ne transmettez pas d’ID d’entreprise dans l’URL ou la chaîne de requête.
À ne pas utiliser :
Authorization: Bearer … — cet en-tête n’est pas accepté par cet endpoint (même si la page "Accès API" de la Console peut actuellement l’indiquer). Utilisez l’en-tête token dans les intégrations jusqu’à ce que la prise en charge du Bearer soit ajoutée.sk_…) ou les clés publiables (pk_…) — elles sont rejetées avec 401 Invalid token type.Méthode : uniquement GET. Les autres méthodes (ex. POST) retournent 404 Not Found.
| Paramètre | Type | Obligatoire | Défaut | Description |
|---|---|---|---|---|
limit |
entier | Non | 100 |
Nombre maximum de contacts à retourner. Doit être entre 1 et 500. |
sortByField |
chaîne | Non | (aucun) | Trier les contacts par ce champ en ordre décroissant. |
status |
chaîne | Non | (aucun) | Filtrer par statut du contact. status=1 est le sondage standard des leads, incluant les smart leads positifs issus d’un parcours de messages. |
Valeurs sortByField autorisées :
| Valeur | Trie par |
|---|---|
createdAt |
Date de création du contact. Lorsque ce tri est demandé (et que status est omis ou 1), les smart leads récents issus d’un parcours de messages des 14 derniers jours sont fusionnés et la page est retriée par max(createdAt, leadCapturedAt) pour qu’ils apparaissent sans déplacer les nouveaux contacts web. |
updatedAt |
Date de dernière mise à jour |
lastConversationDate |
Date de dernière conversation |
leadCapturedAt |
Date à laquelle le contact est devenu un smart lead (retombe sur updatedAt pour les lignes historiques) |
companyUsers.lastConversationDate |
Alias hérité pour lastConversationDate (compatibilité Zapier) |
Le tri est toujours décroissant (du plus récent/haut en premier). Si omis, l’ordre naturel de MongoDB est utilisé.
200 OK){
"data": [ /* array of contact objects */ ],
"leadsCount": 42,
"customerCount": 18
}
| Champ | Type | Description |
|---|---|---|
data |
tableau | Enregistrements de contacts pour votre entreprise |
leadsCount |
nombre | Contacts avec le statut "1" ou null |
customerCount |
nombre | Contacts avec le statut "2" |
leadsCount et customerCount reflètent tous les contacts de l’entreprise, pas seulement la page courante.
Chaque élément de data inclut uniquement les champs ci-dessous (les champs sensibles/internes sont exclus) :
| Champ | Description |
|---|---|
id |
Identifiant de sondage Zapier. Généralement le _id Mongo. Les smart leads convertis tardivement (leadCapturedAt au moins 1h après createdAt, et à partir du 11/09/2026) utilisent {mongoId}__sl pour que New Contact puisse se déclencher. Utilisez contactId pour l’id Mongo stable. |
contactId |
_id Mongo stable. Ne change pas lorsque id est réécrit pour un smart lead tardif. |
linkedinUrl |
URL du profil LinkedIn si présent (linkedinUrl de premier niveau ou le premier linkedinProfiles[].url). |
userId |
Identifiant utilisateur |
email |
Adresse e-mail |
firstName |
Prénom |
lastName |
Nom |
msisdn |
Numéro de téléphone |
company |
Nom de l’entreprise (employeur du contact, si capturé) |
city, state, street, zip |
Champs d’adresse |
status |
Statut du cycle de vie du contact (voir ci-dessous). Les smart leads positifs issus d’un parcours de messages utilisent "1" comme les leads issus de formulaire web. |
leadSentiment |
"positive" ou "negative" lorsqu’une réponse à un parcours de messages a été classifiée ; sinon omis |
leadCapturedAt |
Date ISO-8601 à laquelle le contact est devenu un smart lead positif (retombe sur updatedAt si absent) |
tags |
Tags de contact résolus { id, name, systemKind? }[] (inclut Auto : Lead positif / Auto : Lead négatif) |
brandId |
Identifiant de la marque |
operatorId |
Identifiant de l’entreprise/opérateur |
createdAt |
Horodatage de création ISO-8601 |
updatedAt |
Horodatage de dernière mise à jour ISO-8601 |
lastConversationDate |
Date ISO-8601 de la dernière conversation |
acceptedCommunication |
Si le contact a accepté la communication |
acceptedPrivacy |
Si le contact a accepté les conditions de confidentialité |
inviterUser |
Qui a référé ce contact (objet) |
rewardFlows |
Parcours où des récompenses ont été gagnées |
promosPresented |
Promotions affichées au contact |
promosRedeemed |
Promotions utilisées |
answeredSurveyQuestions |
Réponses aux enquêtes |
usersReferred |
Utilisateurs référés par ce contact |
referralLinks |
Détails du lien de parrainage |
visitList |
Historique des visites/sessions (appareil, UTM, géo, etc.) |
textFields |
Champs texte personnalisés capturés dans les parcours |
Les champs peuvent être null ou absents s’ils ne sont pas collectés pour ce contact.
| Statut | Signification |
|---|---|
"1" |
Lead (inclut les smart leads positifs issus d’un parcours de messages) |
"2" |
Client |
"3" |
Perdu |
"4" |
Converti |
null |
Compté comme Lead dans les totaux |
inviterUser
{
"id": 123,
"firstName": "Jane",
"lastName": "Doe",
"email": "[email protected]"
}
rewardFlows / promos
{ "id": "...", "title": "Summer promo" }
referralLinks
{
"key": "...",
"campaignId": 1,
"campaignName": "...",
"flowVariantId": 1,
"url": "https://...",
"share": true
}
visitList — inclut browser, os, deviceType, country, region, city, champs UTM (utmSource, utmMedium, utmCampaign, etc.), referrer, landingPage, userAgent, ip.
answeredSurveyQuestions — inclut texte question/réponse, traductions, infos récompense et horodatages.
textFields — champs personnalisés de parcours : flowId, flowName, variantId, variantName, key, value.
Toutes les erreurs retournent du JSON avec un champ error. Certaines incluent un hint.
| Statut HTTP | Condition | Exemple de corps |
|---|---|---|
401 |
En-tête token manquant |
{ "error": "Missing token header" } |
401 |
Clé invalide/révoquée, ou clé sk_/pk_ utilisée |
{ "error": "Invalid or revoked token", "hint": "You can create a valid token from the Integration Dashboard." } |
403 |
Clé valide mais sans revendication operatorId |
{ "error": "Unauthorized" } |
422 |
limit > 500 |
{ "error": "limit must not exceed 500" } |
422 |
sortByField invalide |
{ "error": "Invalid sortByField value" } |
422 |
status invalide |
{ "error": "Invalid status value" } |
404 |
Mauvais chemin ou méthode | Not Found (texte brut) |
Basique — récupérer jusqu’à 100 contacts :
curl -s \
-H "token: YOUR_API_KEY" \
"https://api.smoc.ai/api/company/mongocontact"
Récupérer 25 contacts, triés par dernière conversation :
curl -s \
-H "token: YOUR_API_KEY" \
"https://api.smoc.ai/api/company/mongocontact?limit=25&sortByField=lastConversationDate"
Récupérer les leads standards (formulaire web et smart leads positifs issus d’un parcours de messages) :
curl -s \
-H "token: YOUR_API_KEY" \
"https://api.smoc.ai/api/company/mongocontact?status=1&sortByField=leadCapturedAt"
Exemple de réponse tronquée :
{
"data": [
{
"id": "665a1b2c3d4e5f6789012345",
"email": "[email protected]",
"firstName": "Alex",
"lastName": "Smith",
"msisdn": "+4712345678",
"status": "2",
"operatorId": "10",
"createdAt": "2025-03-15T10:22:00.000Z",
"lastConversationDate": "2025-06-01T14:30:00.000Z",
"visitList": [
{
"deviceType": "mobile",
"browser": "Chrome",
"country": "NO",
"utmSource": "google"
}
]
}
],
"leadsCount": 120,
"customerCount": 45
}
SMOC propose une application Zapier qui utilise ce même endpoint. Parcours typique :
Le déclencheur Zapier interroge cet endpoint et considère les contacts retournés comme nouveaux à leur apparition. Nouveau contact se base sur id. Les smart leads convertis tardivement (prospects importés qui reçoivent plus tard leadCapturedAt) reçoivent désormais un id {contactId}__sl stable pour que le Zap existant Nouveau contact puisse se déclencher une fois. contactId reste l’id Mongo pour le mapping CRM. Ceci s’applique à chaque entreprise ; seules les captures à partir du 11/09/2026 sont réécrites (temporaire jusqu’à l’existence d’un déclencheur dédié Nouveau smart lead). Privilégiez HubSpot Créer ou mettre à jour un contact sur l’email pour éviter les doublons si le prospect a déjà été synchronisé. Voir le eGuide Zapier pour une configuration pas à pas.
limit (max 500). Pour synchroniser tous les contacts, triez de façon cohérente et suivez les IDs vus côté client, ou utilisez le modèle d’interrogation de Zapier.companyUsers.lastConversationDate existent pour la compatibilité avec l’API d’origine et l’application Zapier.Le même worker API expose aussi MCP sur https://api.smoc.ai/mcp et REST v2 sur POST /api/v2/{toolName} avec des outils contacts plus riches (contacts_search, contacts_get, contacts_get_stats, etc.). Voir le eGuide MCP et la référence REST v2.
Pour une vue d’ensemble produit de tous les parcours d’intégration, voir smoc.ai/integrations.
| Élément | Valeur |
|---|---|
| Endpoint | GET /api/company/mongocontact |
| En-tête d’auth | token: <api-key> |
| Type de contenu | application/json |
| Taille de page max | 500 |
| Taille de page par défaut | 100 |
| Limitation à l’entreprise | Depuis la clé API (revendication operatorId) |
| Création de clé | Console → Paramètres → Intégrations → API |
POST /api/v2/{toolName}Où l’IA tourne
Le chat du site, les parcours de cartes et LinkedIn partagent un seul système. L’IA fait chaque travail ci-dessous. La ligne sous le titre dit où ce travail tourne.
Chaque agent
IA parcourt le site et rédige l’offre, l’audience, la voix et la marque. Le chat du site, les parcours en cartes et LinkedIn partent de là.
Tableau de bord · Stratégie de leads
Fixez votre objectif de leads. IA simule des milliers de mix de canaux, les classe par efficacité et montre le plan le plus rentable. Vos données et vos contraintes guident le calcul.
Chaque agent · thème sur le web · liste sur LinkedIn
IA écrit le parcours. Le thème s’exécute sur le chat du site et les cartes. La traduction s’exécute sur chaque agent. IA trouve la liste de prospects sur LinkedIn.
Chemin sur chaque parcours · web et LinkedIn séparés
L’apprentissage par renforcement sur le chemin du parcours s’exécute sur chaque agent. Les recommandations s’exécutent sur le web. Le bon moment et la lecture des réponses s’exécutent sur LinkedIn.
Chaque agent
IA propose une variante, utilise votre relecture dans le brouillon suivant et part d’un exemple qui fonctionne déjà. Vous appliquez le changement.
Recevez les nouveautés produit et un point de vue sur les agents IA proactifs, l’orchestration multicanale et la conversion — sans le bruit.
Enter your email below to get started with SMOC.AI