Documentation

Tout ce qu'il faut pour intégrer l'API mym

Une API REST en JSON pour lire vos fans, messages, transactions et statistiques, recevoir des webhooks signés et envoyer vos conversions aux régies publicitaires.

Démarrage rapide

L'URL de base est https://api.apimym.com/v1. Créez votre compte, récupérez votre clé, puis faites votre premier appel en moins de deux minutes.

curl https://api.apimym.com/v1/creators/me \
  -H "Authorization: Bearer $MYM_API_KEY"

Premier appel : récupérer le profil du créateur

Authentification

Chaque requête doit contenir l'en-tête Authorization: Bearer MYM_API_KEY. Les clés mym_live_ accèdent aux données réelles, les clés mym_test_ à un environnement de démonstration.

Les clés sont limitées à des scopes (fans:read, messages:write, transactions:read...) et à un ou plusieurs créateurs via MYM_CREATOR_SCOPE. Gardez-les côté serveur et renouvelez-les depuis votre espace en cas de fuite.

Requêtes et réponses

Les corps de requête et de réponse sont en JSON UTF-8. Les montants sont en centimes, les dates au format ISO 8601 UTC. Chaque réponse contient un request_id à nous transmettre en cas de support.

{
  "data": {
    "id": "crt_8f2k1",
    "username": "lea.studio",
    "subscribers_count": 1284,
    "created_at": "2025-03-14T09:12:44Z"
  },
  "meta": { "request_id": "req_01J9X4" }
}

Pour les requêtes POST, ajoutez un en-tête Idempotency-Key afin de pouvoir réessayer sans créer de doublon.

Endpoints

MéthodeRouteDescription
GET/v1/creators/meProfil du créateur lié à la clé
GET/v1/fansListe paginée des fans et abonnés
GET/v1/fans/{id}Détail d'un fan, dépenses et historique
GET/v1/messagesConversations et messages
POST/v1/messagesEnvoyer un message ou un média privé
GET/v1/transactionsVentes, abonnements, pourboires et remboursements
GET/v1/stats/revenueRevenus agrégés par période
GET/v1/postsPublications et performances
POST/v1/exportsLancer un export CSV ou JSON
GET/v1/exports/{id}Statut et lien de téléchargement d'un export
POST/v1/webhooksCréer un endpoint webhook
POST/v1/tracking/linksCréer un lien de tracking publicitaire

Pagination

Les listes utilisent une pagination par curseur. Passez limit (1 à 100, 25 par défaut) et reprenez avec la valeur next_cursor reçue.

GET /v1/fans?limit=50&cursor=eyJpZCI6ImZhbl85MWFiIn0

{ "data": [ ... ], "meta": { "next_cursor": "eyJpZCI6ImZhbl9hMjAxIn0", "has_more": true } }

Erreurs

Les erreurs renvoient un code HTTP standard et un objet explicite :

{ "error": { "code": "invalid_request", "message": "Le paramètre limit doit être compris entre 1 et 100.", "request_id": "req_01J9X4" } }
HTTPCodeSignification
400invalid_requestParamètre manquant ou mal formé
401unauthorizedClé absente, invalide ou révoquée
403forbiddenLa clé n'a pas accès à ce créateur ou à ce scope
404not_foundRessource introuvable
409conflictRequête en double (clé d'idempotence déjà utilisée)
429rate_limitedLimite de débit dépassée, réessayez après Retry-After
500server_errorErreur interne, réessayez avec un backoff exponentiel

Limites de débit

Par défaut, chaque clé dispose de 120 requêtes par minute. Les en-têtes X-RateLimit-Limit, X-RateLimit-Remaining et X-RateLimit-Reset indiquent votre consommation. En cas de 429, attendez la durée indiquée par Retry-After.

Webhooks

Enregistrez une URL HTTPS pour recevoir les événements en temps réel. Chaque livraison est signée en HMAC SHA-256 dans l'en-tête X-Mym-Signature. Répondez en 2xx sous 10 secondes, sinon nous réessayons jusqu'à 8 fois sur 24 heures avec un backoff exponentiel.

fan.subscribedfan.unsubscribedmessage.receivedtransaction.createdtransaction.refundedtip.receivedpost.publishedexport.completed
{
  "id": "evt_01J9X7",
  "type": "transaction.created",
  "created_at": "2026-09-24T21:04:11Z",
  "data": {
    "transaction_id": "txn_4k2p",
    "fan_id": "fan_91ab",
    "kind": "subscription",
    "amount": 1499,
    "currency": "EUR"
  }
}
import { createHmac, timingSafeEqual } from "node:crypto";

export function verify(rawBody: string, signature: string, secret: string) {
  const expected = createHmac("sha256", secret).update(rawBody).digest("hex");
  return timingSafeEqual(Buffer.from(signature), Buffer.from(expected));
}

// En-tête : X-Mym-Signature

Vérifier la signature d'un webhook

Postbacks publicitaires

Créez un lien de tracking avec POST /v1/tracking/links. Les identifiants de clic (fbclid, ttclid, gclid, ScCid) sont capturés puis associés au fan lors de son abonnement ou de son achat.

Les conversions sont envoyées côté serveur à Meta, TikTok, Snapchat et Google Ads avec un event_id partagé pour la déduplication avec le pixel.

POST /v1/tracking/links
{ "name": "Campagne septembre", "destinations": ["meta", "tiktok"], "events": ["subscription", "purchase"] }

Serveur MCP

Connectez l'API à Claude, ChatGPT, Cursor ou Manus avec notre serveur MCP. Ajoutez cette configuration à votre client puis posez vos questions en langage naturel.

{
  "mcpServers": {
    "mym": {
      "command": "npx",
      "args": ["-y", "@apimym/mcp"],
      "env": { "MYM_API_KEY": "mym_live_..." }
    }
  }
}

Questions fréquentes

Votre clé est disponible dans votre espace après validation de votre compte. Stockez-la côté serveur dans la variable MYM_API_KEY et ne l'exposez jamais dans un navigateur.

Développez sur mym dès aujourd'hui

Demandez un accès anticipé à mym API et dites-nous ce que vous souhaitez créer pour vos créateurs.

Commencer gratuitement