L'API de membo.app pour les intégrations et les agents

membo.app expose une API pour qu'un tableur, un site, une automatisation ou un assistant IA puisse lire et agir sur les données d'un club. C'est la même API que le tableau de bord, sur un sous-ensemble documenté de routes qui reste stable.

Authentification

Créez une clé dans Compte › Clés API. Une clé agit au nom de l'admin qui l'a créée, limitée aux périmètres choisis à la création (consulter ou modifier par périmètre : membres, finances, événements, communication, contrôle d'accès, page et carte). Elle ne peut jamais faire plus que cette personne. La clé complète n'est montrée qu'une fois ; seule une empreinte est conservée.

Envoyez-la en jeton bearer :

Authorization: Bearer mk_live_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

Commencez par GET https://api.membo.app/api/auth/me : la réponse porte club_id, nécessaire à toutes les autres routes.

Ce qu'une clé peut et ne peut pas faire

  • Elle peut lire et écrire dans ses périmètres, exactement comme la personne dans le tableau de bord : lister les membres, ajouter un membre, prolonger une adhésion, créer un événement, pointer une présence, lire les paiements.
  • Elle ne peut pas gérer le compte, l'équipe ni les autres clés, et n'atteint pas le superadmin. Ces routes répondent 403.
  • Une clé révoquée ou expirée répond 401. Révoquez une clé à tout moment dans Compte › Clés API.
  • Chaque requête faite avec une clé est tracée dans le journal d'audit du club, avec le début de la clé.

Limites et conventions

  • 300 requêtes par minute et par clé. Au-delà, 429 avec un en-tête Retry-After.
  • Les montants sont en centimes (amount_cents, price_cents). Les dates en ISO 8601, UTC.
  • Les erreurs portent un detail lisible dans la langue du club.
  • Les listes sont paginées avec page et page_size (jusqu'à 1000).

Référence

Routes principales

BesoinRoute
Qui suis-je, quel clubGET /api/auth/me
Réglages du clubGET et PUT /api/clubs/{club_id}
Chiffres clésGET /api/clubs/{club_id}/stats
MembresGET /api/clubs/{club_id}/members, POST /api/clubs/{club_id}/members/manual, GET …/members/export
Actions sur un membrePOST /api/clubs/{club_id}/members/{member_id}/actions/extend, mark-paid, suspend, reactivate
TarifsGET et POST /api/clubs/{club_id}/tiers, PUT …/tiers/{tier_id}
Codes promoGET et POST /api/clubs/{club_id}/promo-codes
ÉvénementsGET et POST /api/clubs/{club_id}/events, GET et PATCH …/events/{event_id}, GET …/registrations, POST …/checkin
Contrôle d'accèsGET /api/verify/{serial} (une carte scannée), GET /api/clubs/{club_id}/attendance

Exemple

Lister les membres actifs du club, les plus récents d'abord :

curl -H "Authorization: Bearer mk_live_…" \
  "https://api.membo.app/api/clubs/{club_id}/members?status=active&sort=registered&dir=desc&page_size=100"

Ajouter un membre qui a payé en espèces, avec une adhésion jusqu'à la fin de l'année :

curl -X POST -H "Authorization: Bearer mk_live_…" -H "Content-Type: application/json" \
  -d '{"first_name":"Marie","last_name":"Dupont","email":"marie@example.org","membership_end":"2026-12-31"}' \
  "https://api.membo.app/api/clubs/{club_id}/members/manual"

Connecter un assistant IA (MCP)

membo.app parle aussi le Model Context Protocol (MCP), le standard que Claude, ChatGPT, Cursor et les autres assistants utilisent pour appeler des outils. Les mêmes opérations que l'API sont exposées comme outils, dans le vocabulaire du tableau de bord : whoami, list_members, add_member, extend_membership, mark_member_paid, list_tiers, list_events, create_event, event_registrations, checkin_event, verify_card, club_stats et quelques autres. Un outil ne fait jamais plus que ce que la clé permet, et chaque appel est tracé dans le journal d'audit.

  • Adresse du serveur : https://api.membo.app/mcp (Streamable HTTP)
  • Authentification : l'en-tête Authorization: Bearer mk_live_… avec une clé créée dans Compte › Clés API

Claude Code :

claude mcp add --transport http membo https://api.membo.app/mcp --header "Authorization: Bearer mk_live_…"

Cursor, VS Code, Windsurf et la plupart des clients de bureau (mcp.json) :

{ "mcpServers": { "membo": { "url": "https://api.membo.app/mcp", "headers": { "Authorization": "Bearer mk_live_…" } } } }

Demandez ensuite à l'assistant : « Combien de membres n'ont pas renouvelé ? », « Ajoute Marie Dupont, payée en espèces, jusqu'à la fin de l'année, et envoie-lui sa carte ». Les clients qui n'acceptent qu'une connexion OAuth pour un connecteur distant (les connecteurs ChatGPT aujourd'hui) ne sont pas encore pris en charge ; OAuth est prévu.