Documentation API

Documentation API

Version 1.0

L’API GMB Club permet de publier et planifier des posts sur vos reseaux sociaux via des integrations externes comme Zapier, Make, ou vos propres scripts.

https://gmb-club.avismaestrogmb.com/api/v1

Authentification

L’API utilise des cles API pour l’authentification. Chaque cle est liee a une fiche GMB specifique.

Obtenir une cle API

  1. Connectez-vous a GMB Club
  2. Allez dans Parametres
  3. Section Cles API puis Nouvelle cle
  4. Configurez les permissions et copiez la cle

Important : La cle complete n’est affichee qu’une seule fois lors de la creation. Conservez-la dans un endroit securise.

Format de la cle

gmb_live_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

Les cles commencent par gmb_live_ suivi de 64 caracteres hexadecimaux.

Utilisation

Incluez la cle dans le header X-API-Key de chaque requete :

curl -H "X-API-Key: gmb_live_xxxx..." https://gmb-club.avismaestrogmb.com/api/v1/info

Endpoints

GET
/api/v1/health

Verifie que l’API est operationnelle. Ne necessite pas d’authentification.

Reponse :

{
  "status": "ok",
  "api_version": "1.0",
  "timestamp": "2025-11-29T18:00:00.000000"
}

GET
/api/v1/info

Retourne les informations sur la cle API utilisee et les plateformes connectees.

Reponse :

{
  "api_version": "1.0",
  "fiche_id": "accounts/123456/locations/789012",
  "permissions": ["read", "schedule", "publish"],
  "rate_limit_per_minute": 60,
  "rate_limit_per_day": 1000,
  "connected_platforms": ["facebook", "instagram", "gmb", "linkedin"]
}

GET
/api/v1/connections
read

Retourne les reseaux sociaux connectes pour cette fiche.

Reponse :

[
  {
    "platform": "facebook",
    "connected": true,
    "page_name": "Ma Page Facebook",
    "username": null,
    "expires_at": "2025-12-15T10:00:00"
  },
  {
    "platform": "instagram",
    "connected": true,
    "page_name": null,
    "username": "mon_compte_insta",
    "expires_at": "2025-12-15T10:00:00"
  }
]

POST
/api/v1/posts
schedule

Cree un nouveau post planifie ou le publie immediatement.

Headers :

X-API-Key: gmb_live_xxxx...
Content-Type: application/json

Body :

{
  "content": "Decouvrez nos nouveautes !",
  "platforms": ["facebook", "instagram", "gmb"],
  "image_url": "https://exemple.com/image.jpg",
  "scheduled_at": "2025-12-01T10:00:00"
}

Parametres :

ChampTypeRequisDescription
contentstringOuiTexte du post (1-5000 caracteres)
platformsarrayOuiPlateformes : facebook, instagram, gmb, linkedin, pinterest
image_urlstringNonURL d’une image
image_urlsarrayNonURLs pour un carrousel (2-10 images)
video_urlstringNonURL d’une video
scheduled_atstringNonDate/heure ISO 8601 pour toutes les plateformes
scheduled_facebookstringNonDate/heure specifique pour Facebook
scheduled_instagramstringNonDate/heure specifique pour Instagram
scheduled_gmbstringNonDate/heure specifique pour Google Business
scheduled_linkedinstringNonDate/heure specifique pour LinkedIn
scheduled_pintereststringNonDate/heure specifique pour Pinterest
publish_nowbooleanNonSi true, publie immediatement (defaut: false)

Reponse (201 Created) :

{
  "id": 42,
  "content": "Decouvrez nos nouveautes !",
  "platforms": ["facebook", "instagram", "gmb"],
  "status": "pending",
  "image_url": "https://exemple.com/image.jpg",
  "scheduled_facebook": "2025-12-01T10:00:00",
  "scheduled_instagram": "2025-12-01T10:00:00",
  "scheduled_gmb": "2025-12-01T10:00:00",
  "created_at": "2025-11-29T18:00:00.000000"
}

GET
/api/v1/posts
read

Retourne les posts de la fiche.

Parametres query :

ParametreTypeDescription
statusstringFiltrer par statut : pending, published, error
limitintegerNombre max de resultats (1-100, defaut: 50)
offsetintegerOffset pour pagination (defaut: 0)

Exemple :

curl -H "X-API-Key: gmb_live_xxxx..." \
  "https://gmb-club.avismaestrogmb.com/api/v1/posts?status=pending&limit=10"

GET
/api/v1/posts/{post_id}
read

Recupere les details d’un post specifique.

PUT
/api/v1/posts/{post_id}
schedule

Met a jour un post en attente. Seuls les posts avec status: pending peuvent etre modifies.

{
  "content": "Nouveau texte du post",
  "scheduled_at": "2025-12-02T14:00:00"
}

DELETE
/api/v1/posts/{post_id}
delete

Supprime un post en attente ou en erreur.

{
  "status": "deleted",
  "post_id": 42
}

POST
/api/v1/posts/{post_id}/publish
publish

Force la publication immediate d’un post planifie.

{
  "status": "scheduled_for_immediate_publish",
  "post_id": 42,
  "scheduled_at": "2025-11-29T18:01:00.000000"
}

Permissions

Chaque cle API possede des permissions specifiques configurables lors de la creation :

PermissionDescription
readLire les posts et connexions
scheduleCreer et modifier des posts planifies
publishPublier immediatement
deleteSupprimer des posts

Si une permission est manquante, l’API retourne une erreur 403 :

{
  "detail": "Permission 'publish' requise pour cette action"
}

Rate Limiting

Chaque cle API a des limites de requetes :

LimiteValeur par defaut
Par minute60 requetes
Par jour1000 requetes

Les headers de reponse indiquent l’etat du rate limiting :

X-RateLimit-Limit-Minute: 60
X-RateLimit-Remaining-Minute: 58
X-RateLimit-Reset-Minute: 2025-11-29T18:01:00
X-RateLimit-Limit-Day: 1000
X-RateLimit-Remaining-Day: 995
X-RateLimit-Reset-Day: 2025-11-29T23:59:59

En cas de depassement, l’API retourne une erreur 429 :

{
  "detail": "Limite de requetes depassee"
}

Codes d’erreur

CodeDescription
200Succes
201Ressource creee
400Requete invalide (parametres manquants ou incorrects)
401Cle API manquante ou invalide
403Permission insuffisante
404Ressource non trouvee
429Rate limit depasse
500Erreur serveur

Exemples d’integration

cURL

curl -X POST https://gmb-club.avismaestrogmb.com/api/v1/posts \
  -H "X-API-Key: gmb_live_xxxx..." \
  -H "Content-Type: application/json" \
  -d '{
    "content": "Nouveau post depuis l API !",
    "platforms": ["facebook", "gmb"],
    "scheduled_at": "2025-12-01T10:00:00"
  }'

Python

import requests

API_KEY = "gmb_live_xxxx..."
BASE_URL = "https://gmb-club.avismaestrogmb.com/api/v1"

headers = {
    "X-API-Key": API_KEY,
    "Content-Type": "application/json"
}

response = requests.post(
    f"{BASE_URL}/posts",
    headers=headers,
    json={
        "content": "Post depuis Python !",
        "platforms": ["facebook", "instagram"],
        "scheduled_at": "2025-12-01T10:00:00"
    }
)

print(response.json())

JavaScript / Node.js

const API_KEY = "gmb_live_xxxx...";
const BASE_URL = "https://gmb-club.avismaestrogmb.com/api/v1";

const response = await fetch(`${BASE_URL}/posts`, {
  method: "POST",
  headers: {
    "X-API-Key": API_KEY,
    "Content-Type": "application/json"
  },
  body: JSON.stringify({
    content: "Post depuis JavaScript !",
    platforms: ["facebook", "gmb"],
    scheduled_at: "2025-12-01T10:00:00"
  })
});

const data = await response.json();
console.log(data);

Zapier / Make

Utilisez le module HTTP / Webhook avec les parametres suivants :

MethodePOST
URLhttps://gmb-club.avismaestrogmb.com/api/v1/posts
HeadersX-API-Key: votre_cle
Content-Type: application/json

Body (JSON) :

{
  "content": "{{contenu_du_post}}",
  "platforms": ["facebook"],
  "scheduled_at": "{{date_planification}}"
}

Securite

  • Cles hashees : Les cles sont stockees sous forme de hash SHA256, jamais en clair
  • HTTPS obligatoire : Toutes les requetes doivent utiliser HTTPS
  • Isolation par fiche : Chaque cle n’a acces qu’aux donnees de sa fiche
  • Expiration optionnelle : Les cles peuvent avoir une date d’expiration
  • Revocation : Les cles peuvent etre revoquees a tout moment dans les parametres