Documentation API et MCP
Branchez l'intelligence composite de Phano dans vos outils. Comptes à risque et signaux d'expansion, livrés là où vos équipes Customer Success et Account Management travaillent déjà.
Pour vos scripts, automatisations no-code et tableurs. Tout outil capable de faire une requête HTTP avec un header.
Zapier, Make, n8n, Python, Node.js, Google Sheets, Excel.
CommencerPour les agents IA. Le serveur expose 8 outils que l'assistant appelle lui-même, sans que vous écriviez de code.
Claude Desktop, Cursor, VS Code, Windsurf, client MCP custom.
ConfigurerIl vous faut une clé API ? L'essai gratuit donne accès à l'API et au MCP. Créer un compte
Fondations
Commun aux deux voies
Une seule clé API, les mêmes scopes, les mêmes erreurs et les mêmes limites s'appliquent que vous passiez par REST ou par MCP.
Authentification et scopesCommun
Toutes les requêtes (REST et MCP) s'authentifient avec la même clé, dans le headerAuthorization :
Authorization: Bearer pk_live_xxxx
Créez la clé dans Paramètres > Clés API (affichée une seule fois). Les scopes déterminent ce que la clé peut lire. Une clé sansread:stakeholdersreçoit les comptes et diagnostics, mais les noms des contacts sont masqués.
| Scope | Description | Endpoints |
|---|---|---|
| read:portfolio | Résumé et risques du portefeuille | /v1/portfolio/summary, /v1/portfolio/risks |
| read:accounts | Liste et intelligence des comptes | /v1/accounts, /v1/accounts/{id}/intelligence |
| read:stakeholders | Noms et rôles des contacts (masqués sans ce scope) | Toute réponse contenant des stakeholders |
| read:all | Toutes les permissions + /v1/status | Tous les endpoints + /v1/status |
ErreursCommun
Format stable : { "error": { "code", "message" } }. En MCP, ces erreurs sont renvoyées via les codes JSON-RPC correspondants (par exemple scope insuffisant = -32003).
| Code | HTTP | Description |
|---|---|---|
| unauthorized | 401 | Clé API invalide, révoquée ou expirée |
| forbidden | 403 | Scope insuffisant pour cet endpoint |
| validation_error | 400 | Paramètre invalide (format, valeur) |
| not_found | 404 | Ressource introuvable |
| rate_limit_exceeded | 429 | Limite de requêtes dépassée (voir Retry-After) |
| internal_error | 500 | Erreur serveur |
Limites de débitCommun
3 niveaux de limitation :
- Burst : 50 requêtes / 10 secondes par clé
- Quotidien : 10 000 requêtes / jour par organisation
- Circuit breaker : 429 temporaire (Retry-After 60s) si plus de 50% d'erreurs 5xx sur 1 minute
En-têtes de réponse :
X-RateLimit-Limit: limite burstX-RateLimit-Remaining: requêtes restantesX-RateLimit-Reset: epoch de resetX-RateLimit-Limit-Daily: quota quotidien (10 000)Retry-After: secondes avant retry (si 429)
Voie 1
API REST
Des endpoints HTTP GET en lecture seule. Pour vos scripts, vos automatisations no-code et vos tableurs.
Démarrage en 60 secondes
1. Créez votre clé API
Dans Paramètres > Clés API. Choisissez les scopes utiles. La clé n'est affichée qu'une seule fois.
2. Faites votre premier appel
curl -H "Authorization: Bearer <votre-cle-api>" \ https://phano.ai/api/v1/portfolio/summary
3. Lisez la réponse
Chaque réponse suit la même enveloppe : data (le contenu) etmeta (fraîcheur et identifiant de requête).
{
"data": {
"total_arr": 1250000,
"total_arr_display": "1 250 000 EUR",
"total_accounts": 42,
"health_distribution": {
"critical": { "count": 5, "percentage": 12 },
"warning": { "count": 9, "percentage": 21 },
"healthy": { "count": 28, "percentage": 67 }
},
"diagnostics_by_severity": { "critical": 3, "high": 7, "opportunity": 4 }
},
"meta": {
"computed_at": "2026-06-08T04:35:00Z",
"freshness": "il y a 6h",
"composite_in_progress": false,
"request_id": "b1f2..."
}
}Référence REST
Base : https://phano.ai/api/v1. Le contrat machine complet (schémas de réponse, types) est sur openapi.json.
| Endpoint | Scope | Description |
|---|---|---|
| GET/portfolio/summary | read:portfolio | ARR total, distribution santé, renouvellements, diagnostics par sévérité |
| GET/portfolio/risks | read:portfolio | Comptes à risque triés par sévérité puis confiance |
| GET/accounts | read:accounts | Liste des comptes (filtres + pagination cursor) |
| GET/accounts/{id}/intelligence | read:accounts | Diagnostic, stakeholders et santé d'un compte |
| GET/status | read:all | Dernier composite, comptes analysés, connexions |
Filtres disponibles sur /accounts
phase: engagement, disengagement, silence, rupture, churnhealth_min/health_max: score de santé (0 à 100)search: recherche par nom (min 2 caractères)limit: 1 à 100 (défaut 20),cursor: pagination
Enchaîner deux appels : du portefeuille à un compte
Les endpoints par compte attendent un id. Récupérez-le d'abord via la liste, puis demandez l'intelligence détaillée.
# 1. Lister les comptes (récupérer un id) curl -H "Authorization: Bearer <votre-cle-api>" \ "https://phano.ai/api/v1/accounts?limit=5" # 2. Intelligence d'un compte précis curl -H "Authorization: Bearer <votre-cle-api>" \ https://phano.ai/api/v1/accounts/<id>/intelligence
Exemple complet (Python)
import requests
headers = {"Authorization": "Bearer <votre-cle-api>"}
r = requests.get("https://phano.ai/api/v1/portfolio/risks", headers=headers)
risks = r.json()["data"]
for risk in risks:
print(f"{risk['account']['name']}: {risk['diagnostic']['severity_display']}")Exemple complet (JavaScript)
const res = await fetch("https://phano.ai/api/v1/portfolio/risks", {
headers: { Authorization: "Bearer <votre-cle-api>" }
});
const { data: risks } = await res.json();
risks.forEach(r => console.log(r.account.name, r.diagnostic.severity_display));Pagination
Les listes utilisent une pagination cursor-based. Paramètres :limit (défaut 20, max 100) etcursor (opaque, fourni par la réponse).
# Page 1 GET /accounts?limit=10 # Page 2 : réutilisez meta.next_cursor de la réponse précédente GET /accounts?limit=10&cursor=eyJkYSI6IjIwMjYt...
Quand meta.next_cursor vaut null, c'est la dernière page.
Voie 2
MCP (agents IA)
Le même backend exposé comme outils que l'agent appelle lui-même, en JSON-RPC, sans écrire de code.
Configuration MCP
Le MCP (Model Context Protocol) est un protocole ouvert qui connecte un agent IA à des sources de données. Phano expose 8 outils que l'assistant appelle lui-même. Transport : HTTP en POST (JSON-RPC) sur https://phano.ai/api/v1/mcp, authentifié par la même clé API.
Option A : client compatible HTTP distant (recommandé)
Pour les clients qui gèrent un serveur MCP distant avec header : Cursor, VS Code, Windsurf, Cline, n8n, ou tout SDK MCP. Ajoutez ce bloc à la configuration MCP de l'outil.
{
"mcpServers": {
"phano": {
"url": "https://phano.ai/api/v1/mcp",
"headers": {
"Authorization": "Bearer <votre-cle-api>"
}
}
}
}Option B : client local sans header distant (Claude Desktop)
Claude Desktop n'envoie pas de header d'authentification vers un serveur distant. Passez par le pont mcp-remote qui injecte la clé.
{
"mcpServers": {
"phano": {
"command": "npx",
"args": [
"-y", "mcp-remote",
"https://phano.ai/api/v1/mcp",
"--header", "Authorization: Bearer <votre-cle-api>"
]
}
}
}Option C : tester la connexion (curl)
Vérifiez que la clé fonctionne en listant les outils, sans aucun client.
curl -X POST https://phano.ai/api/v1/mcp \
-H "Authorization: Bearer <votre-cle-api>" \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'Outils disponibles
| Outil | Scope requis | Description |
|---|---|---|
| phano_getPortfolioSummary | read:portfolio | Résumé du portefeuille : ARR, santé, renouvellements, diagnostics actifs. |
| phano_getPortfolioRisks | read:portfolio | Comptes à risque triés par sévérité et confiance. |
| phano_getAccounts | read:accounts | Liste des comptes avec filtres. |
| phano_getAccountIntelligence | read:accounts | Intelligence complète d'un compte. |
| phano_getAccountStakeholders | read:stakeholders | Contacts clés et champions d'un compte. |
| phano_getAccountMemory | read:accounts | Mémoire d'un compte : track record des diagnostics passés avec verdict jugé (juste/faux/indéterminé) et trajectoire de santé. Donnée propriétaire pré-calculée. |
| phano_getRevenueAtRisk | read:portfolio | Revenue-at-risk pré-calculé : revenu protégé confirmé/estimé et expansion sur une plage, couverture ARR honnête (sources fiables). Bornes from/to ISO 8601 optionnelles (30 jours par défaut). |
| phano_getStatus | read:all | État de santé de l'instance : dernier composite, connexions. |
8 outils : phano_getPortfolioSummary, phano_getPortfolioRisks, phano_getAccounts, phano_getAccountIntelligence, phano_getAccountStakeholders, phano_getAccountMemory, phano_getRevenueAtRisk, phano_getStatus.
Exemples
Recettes d'intégration
Quelques scénarios concrets, côté REST comme côté MCP.
Scénarios pas à pas
- Compte à risque détecté, alerte dans votre outil de communication (poll de
/portfolio/risks) - Signal d'expansion, notification à l'Account Manager concerné
- Résumé portefeuille quotidien, export vers votre tableur ou votre data warehouse
- Agent IA qui répond aux questions de vos équipes à partir des outils MCP
Outils no-code : Zapier, Make, n8n via une action webhook HTTP avec le header Authorization. Tableurs : Google Sheets (Apps Script), Excel (Power Query).
Vos CSM voient les risques, vos Account Managers les opportunités. Le premier diagnostic arrive le jour même.
Essayer gratuitement