API PlaneoPulse v1

Publiez, listez vos publications, vos clients et vos statistiques par programmation. Formule Studio

🔑 Authentification

Toutes les requêtes nécessitent votre clé API (générée dans API & Webhooks) dans l'en-tête :

Authorization: Bearer pp_live_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

Base : https://app.planeopulse.fr/api_v1.php · Limite : 60 requêtes/minute · Réponses JSON {ok, data} ou {ok:false, error}.

POST Â· CrĂ©er une publication

POST https://app.planeopulse.fr/api_v1.php?route=posts

ChampTypeRequis
client_identieroui
account_idstableau d'entiersoui
textchaîneoui
media_urlstableau d'URLsnon
scheduled_atISO 8601non (sinon brouillon)
curl -X POST "https://app.planeopulse.fr/api_v1.php?route=posts" \
  -H "Authorization: Bearer pp_live_…" \
  -H "Content-Type: application/json" \
  -d '{
    "client_id": 4,
    "account_ids": [8, 3],
    "text": "Notre nouveau service est en ligne ! 🚀",
    "media_urls": ["https://exemple.fr/visuel.jpg"],
    "scheduled_at": "2026-06-20T09:00:00"
  }'
{ "ok": true, "data": { "id": 412, "status": "scheduled",
    "client_id": 4, "scheduled_at": "2026-06-20 09:00:00",
    "accounts": [8,3], "media_count": 1 } }

GET Â· Lister les publications

GET https://app.planeopulse.fr/api_v1.php?route=posts&status=scheduled&client_id=4

Filtres optionnels : status (draft, scheduled, published, failed…), client_id. Retourne le statut de livraison par réseau.

curl "https://app.planeopulse.fr/api_v1.php?route=posts&status=published" \
  -H "Authorization: Bearer pp_live_…"
{ "ok": true, "data": { "count": 1, "posts": [
    { "id": 410, "status": "published", "client": "PLANEO",
      "text": "…", "published_at": "2026-06-10 12:50:00",
      "delivery": [ { "platform":"facebook","account":"PLANEO","status":"published" } ] }
  ] } }

GET Â· Espaces clients

GET https://app.planeopulse.fr/api_v1.php?route=clients

curl "https://app.planeopulse.fr/api_v1.php?route=clients" -H "Authorization: Bearer pp_live_…"
{ "ok": true, "data": { "count": 3, "clients": [
    { "id": 4, "name": "PLANEO", "slug": "planeo", "accounts": 4 } ] } }

GET Â· Statistiques consolidĂ©es

GET https://app.planeopulse.fr/api_v1.php?route=analytics&client_id=4&from=2026-05-01&to=2026-05-31

Sans from/to : 30 derniers jours.

curl "https://app.planeopulse.fr/api_v1.php?route=analytics&client_id=4&from=2026-05-01&to=2026-05-31" \
  -H "Authorization: Bearer pp_live_…"
{ "ok": true, "data": { "client_id": 4,
    "period": {"from":"2026-05-01","to":"2026-05-31","days":31},
    "totals": {"Likes": 320, "Impressions": 12450, "Comments": 48},
    "count": 25, "posts": [ … ] } }

đź”” Webhooks sortants

Configurez une URL dans API & Webhooks. À chaque événement, PlaneoPulse envoie un POST JSON signé :

ÉvénementDéclencheur
post_publishedune publication est diffusée sur un réseau
post_failedéchec de diffusion
approval_validatedun client approuve une publication

En-tête de signature : X-Pulse-Signature: t=<timestamp>,v1=<hmac>. Vérifiez-la ainsi :

# PHP — vérification de la signature
$ts   = ...;  // depuis l'en-tĂŞte
$sig  = hash_hmac('sha256', $ts . '.' . $rawBody, $votreSecret);
$valide = hash_equals($sig, $v1FromHeader);
{ "id":"evt_ab12cd34", "type":"post_published",
  "created_at":"2026-06-11T08:30:00+00:00",
  "data": { "post_id":410, "client_id":4, "platform":"facebook",
            "permalink":"https://facebook.com/…" } }

Codes de réponse

CodeSignification
200Succès
400RequĂŞte invalide (champ manquant, JSON incorrect)
401Clé API absente ou invalide
403Formule non Studio
404Ressource introuvable (client, route)
429Limite de 60 req/min dépassée

PlaneoPulse API v1 · Gérer mes clés