GMB Club

Desarrolladores

Documentación API

La API de GMB Club permite publicar y programar posts via Zapier, Make o tus propios scripts. También permite recuperar artículos generados.

HTTPSJSON APIRESTfulRate Limited

Conceptos clave

La API v2 usa la arquitectura Esfera/Burbuja de GMB Club.

ConceptDescriptionEjemplo
EsferaMarca / Empresa"Auto Sud"
BurbujaEstablecimiento / Punto de venta"Auto Sud Marseille"
RecursosCuentas conectadasFacebook, Instagram, GMB
💡

Important

Una clave API cubre o bien un solo establecimiento (clave de burbuja), o bien todos los establecimientos de la marca (clave de esfera). Una clave de burbuja solo ve los datos de su establecimiento; una clave de esfera ve los de todos. Llama primero a GET /api/v2/me: el campo «burbuja» está rellenado para una clave de burbuja y vale null para una clave de esfera.

Autenticación

La API utiliza claves API para la autenticación. Una clave puede tener dos alcances: cubre o bien un solo establecimiento (clave de burbuja), o bien todos los establecimientos de la marca (clave de esfera). Una clave de burbuja solo ve los datos de su establecimiento; una clave de esfera ve los de todos los establecimientos, la opción ideal para un sitio multiestablecimiento: una sola clave, una sola integración. Llama a GET /api/v2/me en primer lugar para saber de qué alcance dispones: el campo «burbuja» está rellenado para una clave de burbuja y vale null para una clave de esfera.

⚠️

Alcance de la clave: burbuja o esfera

Una única regla de alcance, válida para toda la API:

  1. Una clave cubre un establecimiento (clave de burbuja) o toda la marca (clave de esfera). Define lo que está autorizado, nunca lo que se apunta.
  2. Toda ruta que actúa sobre un objetivo acepta un parámetro de objetivo: bulle_id para un establecimiento, fiche_id para una ficha de Google. Siempre en el mismo lugar: parámetro de URL en lectura, campo del cuerpo en escritura.
  3. Sin parámetro: una clave de burbuja apunta a su establecimiento; una clave de esfera recibe un 400 que nombra el parámetro que falta. Nunca una elección arbitraria.
  4. Las rutas de lista sin parámetro devuelven el conjunto de la marca, y cada elemento lleva su bulle_id.
  5. Un objetivo fuera del alcance de la clave devuelve 403; un objetivo inexistente, 404.

Respuestas posibles (mensajes del backend, en francés):

CodeRespuesta (detail)
403Cet établissement n'appartient pas à votre périmètre.
403Cette fiche GMB n'appartient pas à votre périmètre.
404Établissement introuvable : <identifiant>
404Aucune fiche GMB associée à cette clé API.
400Cette clé API couvre plusieurs établissements. Précisez `bulle_id` (liste : GET /api/v2/bulles).
400Cette clé API couvre plusieurs fiches Google. Précisez `fiche_id` (liste : GET /api/v2/me).

Obtener una clave API

  1. Inicia sesión en GMB Club
  2. Selecciona tu burbuja en el encabezado
  3. Ajustes → Claves API → Nueva clave
  4. Elige el alcance: «Este establecimiento» o «Toda la marca»
  5. Configura permisos y copia la clave

Una clave «Toda la marca» cubre todos los establecimientos, incluidos los creados más adelante: es la opción correcta para un sitio único que da servicio a varios establecimientos: un solo secreto que gestionar, sin ninguna intervención prevista al abrir un nuevo establecimiento.

⚠️

Important

La clave solo se muestra una vez.

Formato

text
gmb_live_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

Uso

cURL
curl -H "X-API-Key: gmb_live_xxxx..." \
     -H "Content-Type: application/json" \
  https://app.gmb-club.com/api/v2/me
🚫

Solo JSON

Content-Type: application/json obligatorio para POST/PUT.

Base URL

text
https://app.gmb-club.com/api/v2

Endpoints

GET/api/v2/health

Verifica que la API funciona. Sin autenticación.

JSON
{
  "status": "ok",
  "api_version": "2.0",
  "timestamp": "2026-07-27T18:00:00.000000Z"
}

Identidad de la clave

GET/api/v2/meAuthread

Devuelve info sobre la clave, burbuja, esfera y recursos.

JSON
{
  "api_version": "2.0",
  "bulle": { "id": "abc-123", "name": "Auto Sud Marseille", "city": "Marseille" },
  "sphere": { "id": "xyz-789", "name": "Auto Sud", "slug": "auto-sud" },
  "permissions": ["read", "schedule", "publish"],
  "rate_limits": { "per_minute": 60, "per_day": 1000 },
  "connected_platforms": ["facebook", "instagram", "gmb", "linkedin"],
  "gmb_fiches": [{
    "id": "accounts/115473832376124235338/locations/12517715818229047311",
    "name": "Auto Sud - Marseille Centre",
    "address": "12 rue de la Paix, 13001, Marseille",
    "service_area": false
  }]
}
💡

Clave de esfera

Con una clave de esfera, el campo bulle vale null y el array gmb_fiches lista todas las fichas de la marca.

Conexiones sociales

GET/api/v2/connectionsAuthread

Detalles de redes sociales conectadas.

JSON
[
  { "platform": "facebook", "connected": true, "name": "Auto Sud Marseille", "bulle_id": "abc-123", "expires_at": "2025-12-15T10:00:00", "needs_reconnect": false },
  { "platform": "instagram", "connected": true, "name": "autosud_marseille", "bulle_id": "abc-456", "expires_at": "2025-12-15T10:00:00", "needs_reconnect": false }
]
ParámetroTypeDefecto
bulle_idstringRestringir a un establecimiento. Por defecto: el de la clave, o todos los establecimientos de la marca.

Con una clave de esfera, bulle_id indica a qué establecimiento pertenece cada página de Facebook o cuenta de Instagram.

Límites de plataforma

GET/api/v2/platforms/limitsAuthread

Límites de caracteres y medios por plataforma.

JSON
{
  "character_limits": { "<plateforme>": "<int>" },
  "image_limits": {
    "<plateforme>": { "max_size_mb": "<int>", "carousel_min": "<int?>", "carousel_max": "<int?>" }
  },
  "video_limits": {
    "<plateforme>": { "max_size_mb": "<int>", "max_duration_sec": "<int?>" }
  }
}
⚠️

Shape, not frozen values

character_limits contiene una entrada por plataforma (9 en total); image_limits y video_limits cubren instagram, facebook, linkedin, pinterest, gmb. Los valores se derivan del código y evolucionan: llama al endpoint para obtener las cifras actualizadas, no las fijes en tu integración.

Crear un post

POST/api/v2/postsAuthschedule

Crea un post programado o publica inmediatamente.

🚫

Errores comunes

Content-Type: application/json. Plataformas en minusculas. image_urls = array JSON real.
⚠️

Clave de esfera: bulle_id obligatorio

Con una clave de esfera, bulle_id es ahora obligatorio en POST /posts. Antes la llamada tenía éxito eligiendo un establecimiento por defecto, lo que podía publicar en la ficha de Google equivocada. Las integraciones existentes que utilizan una clave de esfera deben añadir este campo.

Body (JSON)

JSON
{
  "content": "Discover our new arrivals! 🚗 #automobile",
  "platforms": ["facebook", "instagram", "gmb"],
  "image_url": "https://example.com/images/promo.jpg",
  "scheduled_at": "2025-12-01T10:00:00+01:00",
  "gmb_fiche_id": "gmb-fiche-123-456"
}

Parámetros

CampoTypeRequeridoDescription
contentstringSiTexto del post (1-5000 car.)
platformsarraySiArray: facebook, instagram, gmb, linkedin, pinterest, tiktok, snapchat, youtube. La plataforma debe estar conectada en el establecimiento; de lo contrario, HTTP 400 « Plateforme non connectée ».
image_urlstringNoURL de imagen única
image_urlsarrayNoArray JSON de URLs para carrusel (2-10)
video_urlstringNoURL de video
scheduled_atstringNoISO 8601 (defecto: +1h)
gmb_fiche_idstringNoID de ficha GMB
publish_nowbooleanNoSi true, publica inmediatamente
bulle_idstringClave de esferaObligatorio con una clave de esfera: el establecimiento apuntado. Deducido automáticamente con una clave de burbuja.
💡

content or text

Provide at least content (or its alias text). Per-platform scheduling is available via scheduled_instagram, scheduled_facebook, scheduled_gmb, etc., and per-platform content via content_per_platform.

Response:

JSON
{
  "id": 42,
  "content": "Discover our new arrivals! 🚗 #automobile",
  "platforms": ["facebook", "instagram", "gmb"],
  "status": "scheduled",
  "image_url": "https://example.com/images/promo.jpg",
  "scheduled_gmb": "2025-12-01T10:00:00+01:00",
  "created_at": "2025-11-29T18:00:00Z",
  "updated_at": "2025-11-29T18:00:00Z",
  "warnings": []
}

Listar posts

GET/api/v2/postsAuthread

Posts con paginación.

ParámetroTypeDefectoDescription
statusstring-pending, published, error
limitinteger501-100
offsetinteger0Offset de paginación
bulle_idstring-Restringir a un establecimiento. Por defecto: el de la clave, o todos los establecimientos de la marca.
⚠️

Bare array

This endpoint returns a JSON array directly, with no wrapper object, unlike GET /articles which returns an object { articles, total, ... }.
JSON
[
  {
    "id": 42,
    "bulle_id": "abc-123",
    "content": "Discover our new arrivals! 🚗",
    "platforms": ["facebook", "gmb"],
    "status": "published",
    "image_url": "https://example.com/images/promo.jpg",
    "image_urls": null,
    "video_url": null,
    "scheduled_instagram": null,
    "scheduled_facebook": "2025-12-01T10:00:00+01:00",
    "scheduled_gmb": "2025-12-01T10:00:00+01:00",
    "scheduled_linkedin": null,
    "scheduled_pinterest": null,
    "scheduled_tiktok": null,
    "scheduled_snapchat": null,
    "scheduled_youtube": null,
    "published_instagram": null,
    "published_facebook": "2025-12-01T10:00:05+01:00",
    "published_gmb": "2025-12-01T10:00:05+01:00",
    "published_linkedin": null,
    "published_pinterest": null,
    "published_tiktok": null,
    "published_snapchat": null,
    "published_youtube": null,
    "error_instagram": null,
    "error_facebook": null,
    "error_gmb": null,
    "error_linkedin": null,
    "error_pinterest": null,
    "error_tiktok": null,
    "error_snapchat": null,
    "error_youtube": null,
    "platform_refs": { "facebook": "...", "gmb": "..." },
    "created_at": "2025-11-29T18:00:00Z",
    "updated_at": "2025-12-01T10:00:05Z",
    "warnings": []
  }
]
💡

Respuesta completa, campo por campo

Tres precisiones. Hay un trío scheduled_ / published_ / error_ por plataforma: la fecha prevista, la fecha de publicación efectiva y el mensaje de error eventual. Una plataforma no afectada por esta publicación tiene sus tres campos en null. platform_refs contiene las referencias de las publicaciones en cada plataforma una vez publicadas; warnings, las advertencias no bloqueantes.
GET/api/v2/posts/{post_id}Authread

Recupera un post por su identificador. Devuelve el mismo objeto que un elemento de GET /api/v2/posts.

PUT/api/v2/posts/{post_id}Authschedule

Actualiza un post pendiente.

💡

Partial update

Partial update of a pending post (content, scheduled_at). Only the fields you send are updated.

Body (JSON)

JSON
{
  "content": "Updated text!",
  "scheduled_at": "2025-12-02T14:00:00+01:00"
}
DEL/api/v2/posts/{post_id}Authdelete

Elimina un post pendiente o con error.

POST/api/v2/posts/{post_id}/publishAuthpublish

Fuerza publicación inmediata.

Publicación social simplificada

Tres endpoints pensados para las integraciones Make, n8n y Zapier: publicar, verificar la cuota, seguir el estado. Todos exigen una clave de burbuja (véase «Alcance de la clave»).

POST/api/v2/social/publishAuthpublish

Publica o programa un post en una o varias plataformas.

Body (JSON)

CampoTypeRequerido
platformsarraySi
textstringSi
image_urlstringNo
image_urlsarrayNo
video_urlstringNo
scheduled_atstringNo
bulle_idstringClave de esfera

platforms: facebook, instagram, linkedin, pinterest, tiktok, snapchat, youtube, gmb. text: 1 a 63206 caracteres. image_url para una imagen única, image_urls para un carrusel. scheduled_at (ISO 8601) ausente = publicación inmediata.

Response:

JSON
{
  "post_id": "post-abc-123",
  "status": "scheduled",
  "scheduled_at": "2026-08-01T09:00:00+02:00",
  "platforms": ["facebook", "instagram"],
  "quota": {}
}

status vale publishing (publicación inmediata) o scheduled (programada).

GET/api/v2/social/quotaAuthread

Estado de la cuota mensual de publicación del establecimiento. Conviene llamarlo antes de una publicación para evitar un rechazo.

JSON
{ "bulle_id": "abc-123" }

La respuesta se completa con los contadores de cuota mensual del establecimiento.

bulle_id — Obligatorio con una clave de esfera (el establecimiento apuntado). Facultativo con una clave de burbuja.

GET/api/v2/social/posts/{post_id}Authread

Estado detallado de un post. Los objetos scheduled, published y errors llevan una entrada por plataforma, a null si la plataforma no está afectada.

JSON
{
  "post_id": "post-abc-123",
  "status": "scheduled",
  "platforms": ["facebook", "instagram"],
  "content": "Nos nouveautés sont arrivées !",
  "scheduled": { "instagram": "2026-08-01T09:00:00+02:00", "facebook": "2026-08-01T09:00:00+02:00", "linkedin": null, "pinterest": null, "tiktok": null, "snapchat": null, "youtube": null, "gmb": null },
  "published": { "instagram": null, "facebook": null, "linkedin": null, "pinterest": null, "tiktok": null, "snapchat": null, "youtube": null, "gmb": null },
  "errors": { "instagram": null, "facebook": null, "linkedin": null, "pinterest": null, "tiktok": null, "snapchat": null, "youtube": null, "gmb": null }
}

Listar artículos

GET/api/v2/articlesAuthread

Artículos generados para esta burbuja.

💡

Sitio sin tu sitio ni Wix

Llama este endpoint periodicamente para recuperar artículos.
JSON
{
  "articles": [{
    "id": 12,
    "title": "5 tips for maintaining your car",
    "excerpt": "Expert tips to extend your vehicle's life.",
    "content_html": "<h2>Introduction</h2><p>Regular maintenance...</p>",
    "featured_image_url": "https://storage.example.com/images/article-12.jpg",
    "meta_title": "5 car maintenance tips | Auto Sud Marseille",
    "meta_description": "Our experts share their best car maintenance tips.",
    "target_keyword": "car maintenance Marseille",
    "category": "Tips",
    "status": "published",
    "published_at": "2026-03-10T14:00:00Z",
    "created_at": "2026-03-08T09:00:00Z",
    "updated_at": "2026-03-12T08:30:00Z",
    "slug": "5-conseils-pour-entretenir-sa-voiture",
    "bulle_id": "abc-123",
    "bulle_name": "Auto Sud Marseille"
  }],
  "total": 24, "limit": 10, "offset": 0
}
💡

Sitio multiestablecimiento

Cada artículo indica el establecimiento para el que fue redactado. Con una clave de esfera, una sola llamada devuelve los artículos de todos los establecimientos, y bulle_id indica en qué página publicar cada uno. bulle_id vale null si el artículo solo está vinculado a la marca, sin establecimiento. La correspondencia completa de los establecimientos se obtiene mediante GET /api/v2/bulles.
💡

La sección de un artículo

El campo `category` (string, 80 caracteres como máximo al escribir, `null` cuando no hay sección) es una etiqueta libre que eliges tú: «Guía», «Consejos», «Salud visual», «Tendencias»… Cada cuenta define su propio vocabulario, no hay una lista impuesta. Lo devuelven `GET /articles` y `GET /articles/{article_id}`, y se puede escribir tanto al crear como al actualizar. No existe ningún filtro `?category=` en la lista: el campo se devuelve con cada artículo, el filtrado se hace en tu lado.

Parámetros

ParámetroTypeDefecto
statusstringpublished · draft · all
updated_sincestringISO 8601: artículos modificados desde esta fecha (filtro sobre updated_at, orden del más antiguo al más reciente).
bulle_idstringRestringir a un establecimiento. Por defecto: el de la clave, o todos los establecimientos de la marca.
💡

Mantenerse sincronizado

Detectar una corrección. since filtra sobre la fecha de publicación: un artículo publicado hace un mes y corregido esta mañana no aparece en ella. Para recuperar las correcciones, utiliza updated_since, que filtra sobre updated_at. Los resultados se ordenan entonces del más antiguo al más reciente, lo que permite reanudar una sincronización allí donde se detuvo conservando el último valor recibido.

Construye tus URLs con slug, nunca con el título. El slug se fija en la primera publicación y nunca se recalcula, aunque el título se corrija después. Derivar la URL del título expondría tus páginas a un cambio de dirección tras la indexación.

Detectar una retirada. Un artículo despublicado ya no aparece en status=published. Con status=all, vuelve a aparecer con su estado real («draft»), una señal explícita. Un artículo eliminado, en cambio, desaparece por completo: trata la lista recibida como la fuente de verdad: lo que ya no está en ella ya no está en línea.

GET/api/v2/articles/{article_id}Authread

Contenido completo de un artículo por ID.

JSON
{
  "id": 12,
  "title": "5 conseils pour entretenir sa voiture",
  "excerpt": "Nos conseils d'expert.",
  "content_html": "<h2>Introduction</h2><p>...</p>",
  "featured_image_url": "https://storage.example.com/images/article-12.jpg",
  "meta_title": "5 conseils entretien | Auto Sud",
  "meta_description": "Nos experts partagent leurs conseils.",
  "target_keyword": "entretien voiture marseille",
  "category": "Conseils",
  "status": "published",
  "published_at": "2026-03-10T14:00:00Z",
  "created_at": "2026-03-08T09:00:00Z",
  "updated_at": "2026-03-12T08:30:00Z",
  "slug": "5-conseils-pour-entretenir-sa-voiture",
  "bulle_id": "abc-123",
  "bulle_name": "Auto Sud Marseille"
}

Confirmar el renderizado de un artículo

POST/api/v2/articles/{article_id}/confirmAuthread

Pingback enviado por tu script después de renderizar un artículo obtenido. Tiene dos efectos: 1. permite a GMB Club saber qué artículos están realmente en línea en tu sitio, y no solo expuestos por la API; 2. al enviar `rendered_url`, alimenta el enlazado interno de tus artículos, el efecto más útil en el día a día. Opcional pero recomendado.

💡

Cuándo llamarlo

Después de inyectar el HTML del artículo en el DOM de tu página. El endpoint es idempotente: volver a llamarlo solo actualiza la marca de tiempo de confirmación, gana el último ping. Puedes por tanto volver a llamarlo para comprobar que un artículo sigue renderizado al cabo de varios días.

Cuerpo JSON opcional. El campo `rendered_url` (string, máx. 2048 caracteres, debe empezar por http:// o https://) es la URL pública de la página en la que tu script acaba de renderizar el artículo. Es la única dirección de tu sitio que GMB Club conoce: permite que tus próximos artículos citen los anteriores con un enlace que apunta al lugar correcto. Sin ella no es posible ningún enlazado interno en tu sitio: nunca adivinamos una URL, y un enlace inventado sería un enlace roto. Técnicamente opcional, pero muy recomendable.

JavaScript
// After rendering the article in the DOM
fetch(`https://app.gmb-club.com/api/v2/articles/${article.id}/confirm`, {
  method: "POST",
  headers: {
    "X-API-Key": "gmb_live_xxxx...",
    "Content-Type": "application/json"
  },
  body: JSON.stringify({ rendered_url: location.href })
});
💡

Consejo CORS

Los endpoints de artículos aceptan peticiones cross-origin desde cualquier dominio (Access-Control-Allow-Origin: *). Puedes por tanto llamar al pingback directamente desde el <script> de tu página, o del lado servidor durante un build estático o un renderizado SSR, según prefieras.
PHP
$ch = curl_init("https://app.gmb-club.com/api/v2/articles/{$id}/confirm");
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode([
    "rendered_url" => "https://monsite.fr/blog/article-{$id}"
]));
curl_setopt($ch, CURLOPT_HTTPHEADER, [
    "X-API-Key: gmb_live_xxxx...",
    "Content-Type: application/json"
]);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
curl_close($ch);
Node.js
await fetch(`https://app.gmb-club.com/api/v2/articles/${id}/confirm`, {
  method: "POST",
  headers: {
    "X-API-Key": process.env.GMB_API_KEY,
    "Content-Type": "application/json",
  },
  body: JSON.stringify({ rendered_url: `https://monsite.fr/blog/article-${id}` }),
});
Python
import requests
requests.post(
    f"https://app.gmb-club.com/api/v2/articles/{id}/confirm",
    headers={"X-API-Key": "gmb_live_xxxx...", "Content-Type": "application/json"},
    json={"rendered_url": f"https://monsite.fr/blog/article-{id}"},
)
cURL
curl -X POST \
  -H "X-API-Key: gmb_live_xxxx..." \
  -H "Content-Type: application/json" \
  -d '{"rendered_url": "https://monsite.fr/blog/123"}' \
  https://app.gmb-club.com/api/v2/articles/42/confirm

Respuesta 200 en una confirmación correcta:

JSON
{
  "article_id": 42,
  "confirmed_at": "2026-05-25T14:30:00Z",
  "confirmation_source": "pingback"
}
✅

Enlazado interno de tus artículos

Cuando confirmas la dirección de tus artículos publicados, GMB Club puede relacionarlos entre sí: un artículo nuevo citará con naturalidad los anteriores, sobre una expresión de su texto, con un enlace a la página correcta de tu sitio. El ámbito es el establecimiento, no la marca: los artículos de una burbuja solo se enlazan entre ellos, y una enseña con varios establecimientos nunca verá que un artículo de una ciudad remita a otra ciudad. Solo son candidatos los artículos publicados y cuya dirección ha sido confirmada; un artículo sin dirección confirmada simplemente se ignora. El beneficio se construye con el tiempo: con dos o tres artículos en línea no hay casi nada que enlazar, el interés llega con el volumen.

Convenciones transversales

Tres mecanismos se repiten en la mayoría de los endpoints v2. Entenderlos una vez evita muchos errores.

✅

Vista previa sin riesgo: dry_run

Toda operación costosa (respuesta a una reseña, publicación, escaneo SEO, informe, envío de solicitudes de reseña, auditoría o aplicación de cambios en la ficha) acepta "dry_run": true en el cuerpo. La API devuelve entonces una vista previa (campos would_*, cuota actual) sin ejecutar nada ni consumir cuota. Recomendado en tus escenarios de Make o n8n para validar una llamada antes de lanzarla de verdad.
💡

Ficha por defecto: fiche_id opcional

En los endpoints vinculados a una ficha Google (metrics, reviews, optimizer, acquisition, visibility), el parámetro fiche_id es opcional: si se omite, la API utiliza la ficha asociada a tu clave API.
💡

Operaciones largas: respuesta 202

Los procesos largos (generación de informes, envío de solicitudes de reseña, generación de artículos) devuelven un código 202 con un identificador. El resultado se recupera después a través de los endpoints de lectura correspondientes (por ejemplo GET /v2/reports para un informe, o GET /v2/articles para un artículo).

Espacio de trabajo

Esfera de la clave

GET/api/v2/spheresAuthread

Devuelve la esfera (marca) asociada a la clave API: nombre, slug, tono e idioma por defecto.

JSON
[
  {
    "id": "xyz-789",
    "name": "Auto Sud",
    "slug": "auto-sud",
    "default_language": "fr",
    "default_tone": "professionnel",
    "created_at": "2026-01-15T09:00:00Z"
  }
]

Establecimientos de la esfera

GET/api/v2/bullesAuthread

Lista las burbujas (establecimientos) de la esfera, con su ciudad y el número de fichas Google asociadas.

JSON
[
  { "id": "abc-123", "name": "Auto Sud Marseille", "city": "Marseille", "tone": "professionnel", "language": "fr", "sphere_id": "xyz-789", "created_at": "2026-01-20T11:00:00Z" },
  { "id": "abc-456", "name": "Auto Sud Aix", "city": "Aix-en-Provence", "tone": "professionnel", "language": "fr", "sphere_id": "xyz-789", "created_at": "2026-01-20T11:05:00Z" }
]

Detalle de un establecimiento

GET/api/v2/bulles/{bulle_id}Authread

Devuelve el detalle de una burbuja: tono e idioma efectivos (heredados de la esfera si no están definidos), número de fichas Google, redes conectadas.

JSON
{
  "id": "abc-123",
  "name": "Auto Sud Marseille",
  "city": "Marseille",
  "tone": "professionnel",
  "language": "fr",
  "sphere_id": "xyz-789",
  "created_at": "2026-01-20T11:00:00Z",
  "effective_tone": "professionnel",
  "effective_language": "fr",
  "gmb_fiches_count": 2
}

Reseñas de Google

Listar las reseñas

GET/api/v2/reviewsAuthread

Devuelve las reseñas de Google de la ficha, paginadas y filtrables (nota, estado de respuesta, palabra clave, fechas), ordenables por fecha o nota.

Parámetros

ParámetroTypeDefecto
min_starsinteger1-5 · 1
max_starsinteger1-5 · 5
statusstringresponded · drafts · unresponded
keywordstring-
date_fromstringISO 8601
date_tostringISO 8601
sort_bystringdate_desc
fiche_idstringFicha por defecto: fiche_id opcional
limitinteger1-100 · 25
pageinteger1
JSON
{
  "fiche": { "id": "gmb-fiche-123", "name": "Auto Sud - Marseille Centre", "address": "12 rue de la Paix, Marseille", "place_id": "ChIJ...", "average_rating": 4.6, "total_reviews": 128 },
  "reviews": [{
    "review_id": "rev-abc",
    "customer_name": "Julie A.",
    "rating": 5,
    "text": "Service impeccable, je recommande !",
    "review_timestamp": "2026-07-01T09:12:00Z",
    "response_text": null,
    "reply_date": null,
    "responded": false,
    "author_photo": "https://lh3.googleusercontent.com/..."
  }],
  "average_rating": 4.6,
  "total_reviews": 128,
  "filtered_count": 1,
  "status_counts": { "all": 128, "responded": 90, "drafts": 12, "unresponded": 26 },
  "page": 1,
  "total_pages": 3
}

Resumen de las reseñas

GET/api/v2/reviews/summaryAuthread

Devuelve la nota media, el total de reseñas y su distribución por estado (respondidas, borradores, sin respuesta).

JSON
{
  "fiche": { "id": "gmb-fiche-123", "name": "Auto Sud - Marseille Centre" },
  "average_rating": 4.6,
  "total_reviews": 128,
  "status_counts": { "all": 128, "responded": 90, "drafts": 12, "unresponded": 26 }
}

Responder a una reseña

POST/api/v2/reviews/{review_id}/replyAuthpublish

Publica una respuesta a una reseña directamente en Google. Operación costosa: admite dry_run.

Body (JSON)

JSON
{
  "text": "Merci beaucoup pour votre retour, à très bientôt !",
  "dry_run": false
}
⚠️

410 Gone

Si la reseña ha desaparecido de Google entretanto, la API devuelve 410.

Response:

JSON
{
  "posted": true,
  "review_id": "rev-abc",
  "rating": 5,
  "customer_name": "Julie A.",
  "fiche_name": "Auto Sud - Marseille Centre"
}

Captación de reseñas

Estadísticas de captación

GET/api/v2/acquisition/statsAuthread

Devuelve las estadísticas de solicitudes de reseña en 30 días: número enviado, por canal (SMS, email) y por estado.

JSON
{
  "fiche_id": "gmb-fiche-123",
  "total_requests": 84,
  "by_channel": { "sms": 50, "email": 34 },
  "by_status": {},
  "last_30_days": 84
}

Enviar solicitudes de reseña

POST/api/v2/acquisition/review-requestsAuthpublish

Envía solicitudes de reseña por SMS y/o email a una lista de contactos. Sujeto a las cuotas mensuales. Respuesta 202 con un batch_id; admite dry_run.

Body (JSON)

JSON
{
  "contacts": [
    { "customer_name": "Julie A.", "channel": "sms", "customer_phone": "+33612345678" },
    { "customer_name": "Marc D.", "channel": "email", "customer_email": "[email protected]", "custom_message": "Merci pour votre visite !" }
  ],
  "dry_run": false
}
💡

contacts[]

Cada contacto incluye como mínimo un nombre (customer_name) y un canal (channel): « sms » requiere customer_phone, « email » requiere customer_email. Campo opcional: custom_message. Las cuotas de SMS y email son mensuales y por burbuja.

Response:

JSON
{
  "queued": true,
  "queued_count": 2,
  "batch_id": "batch-abc-123",
  "contacts": [
    { "customer_name": "Julie A.", "channel": "sms", "contact": "+33612345678" },
    { "customer_name": "Marc D.", "channel": "email", "contact": "[email protected]" }
  ],
  "fiche_name": "Auto Sud - Marseille Centre"
}

Ficha Google

Estadísticas de Google Business

GET/api/v2/gmb/metricsAuthread

Devuelve los KPI de la ficha Google en un periodo: vistas, búsquedas, llamadas, clics hacia la web, solicitudes de itinerario.

ParámetroTypeDefecto
period_daysinteger1-90 · 30
fiche_idstringFicha por defecto: fiche_id opcional
JSON
{
  "fiche_id": "gmb-fiche-123",
  "fiche_name": "Auto Sud - Marseille Centre",
  "period_days": 30,
  "kpis": {
    "views_total": 5420,
    "views_search": 3110,
    "views_maps": 2310,
    "calls": 87,
    "website": 214,
    "directions": 156,
    "messages": 12,
    "bookings": 4
  },
  "timeseries": [
    { "label": "2026-06-01", "vues": 180, "interactions": 22 }
  ],
  "breakdown": {}
}

Puntuación de optimización

GET/api/v2/gmb/optimizerAuthread

Devuelve la última puntuación de optimización de la ficha (de 0 a 100), en caché. Lectura rápida, sin nueva auditoría.

JSON
{
  "kind": "gmb",
  "fiche_id": "gmb-fiche-123",
  "fiche_name": "Auto Sud - Marseille Centre",
  "display_name": "Auto Sud - Marseille Centre",
  "score": 82,
  "breakdown": {},
  "scored_at": "2026-07-05T08:00:00Z"
}

Lanzar una auditoría completa

POST/api/v2/gmb/optimizer/auditAuthpublish

Lanza una auditoría completa de la ficha (datos de Google + análisis IA) y devuelve una puntuación detallada con sugerencias de mejora. Operación costosa: admite dry_run.

JSON
{
  "kind": "gmb",
  "fiche_id": "gmb-fiche-123",
  "fiche_name": "Auto Sud - Marseille Centre",
  "score": 82,
  "breakdown": {},
  "suggestions": [
    { "field": "description", "reason": "Trop courte", "suggested_value": "..." },
    { "field": "hours", "reason": "Horaires du dimanche manquants" }
  ],
  "review_count": 128,
  "avg_rating": 4.6,
  "analyzed_at": "2026-07-05T08:00:00Z"
}

Aplicar cambios

POST/api/v2/gmb/optimizer/applyAuthpublish

Aplica una lista de modificaciones {field, value} en la ficha Google (escritura real en Google). Operación costosa: admite dry_run.

Body (JSON)

JSON
{
  "changes": [
    { "field": "description", "value": "Garage automobile à Marseille..." }
  ],
  "dry_run": true
}

Response (dry_run):

JSON
{
  "dry_run": true,
  "fiche_id": "gmb-fiche-123",
  "fiche_name": "Auto Sud - Marseille Centre",
  "changes": [ { "field": "description", "value": "Garage automobile à Marseille..." } ],
  "fields": ["description"]
}

Puntuación de visibilidad en el Local Pack

GET/api/v2/visibility/scanAuthread

Devuelve el último escaneo de visibilidad de la ficha en el Local Pack de Google: puntuación y posición media alrededor del punto de venta.

JSON
{
  "fiche_id": "gmb-fiche-123",
  "snapshot_id": "snap-789",
  "visibility_score": 74,
  "scanned_at": "2026-07-04T10:00:00Z"
}

Si no hay ningún escaneo disponible, la respuesta adopta la forma siguiente, y no la forma plana con visibility_score:

JSON
{ "fiche_id": "gmb-fiche-123", "snapshot": null }

SEO y palabras clave

Datos SEO

GET/api/v2/seo/dataAuthread

Devuelve el último snapshot SEO completo de la ficha. El parámetro kind precisa el contenido: snapshot (posiciones, tráfico, salud) o competitors (competidores identificados).

ParámetroTypeDefecto
kindstringsnapshot · competitors · (défaut : snapshot)
bulle_idstringObligatorio con una clave de esfera (el establecimiento apuntado). Facultativo con una clave de burbuja.

Response:

Con datos (caso normal), la respuesta es plana:

JSON
{
  "kind": "snapshot",
  "snapshot_id": 42,
  "bulle_id": "abc-123",
  "created_at": "2026-03-10T04:00:00Z",
  "website_url": "https://auto-sud-marseille.fr",
  "has_ai_analysis": true,
  "ranked_keywords": {},
  "competitors": {},
  "onpage": {},
  "pagespeed": {},
  "ai_analysis": {}
}
⚠️

Bloques de contenido condicionales

Los cinco bloques de contenido (ranked_keywords, competitors, onpage, pagespeed, ai_analysis) están ausentes de la respuesta cuando el escaneo no los produjo: no valen null, no están presentes. Comprueba su presencia antes de leerlos.

Cuando aún no se ha ejecutado ningún escaneo para este establecimiento:

JSON
{ "kind": "snapshot", "snapshot": null, "bulle_id": "abc-123" }

Con kind=competitors:

JSON
{
  "kind": "competitors",
  "bulle_id": "abc-123",
  "competitors": [],
  "snapshot_date": "2026-03-10T04:00:00Z"
}

Sin escaneo: competitors vale [] y snapshot_date está ausente.

Palabras clave seguidas

GET/api/v2/seo/tracked-keywordsAuthread

Lista las palabras clave seguidas para la ficha, con su posición actual, la variación (delta) y el volumen de búsqueda.

bulle_id — Obligatorio con una clave de esfera (el establecimiento apuntado). Facultativo con una clave de burbuja.

JSON
[
  {
    "id": 12,
    "keyword": "garage marseille",
    "last_position": 4,
    "previous_position": 6,
    "delta": 2,
    "last_search_volume": 1300,
    "last_url": "https://autosud.fr/",
    "last_checked_at": "2026-07-05T06:00:00Z",
    "created_at": "2026-05-01T09:00:00Z",
    "history": [ { "checked_at": "2026-07-05T06:00:00Z", "position": 4 } ]
  }
]

Añadir una palabra clave al seguimiento

POST/api/v2/seo/tracked-keywordsAuthpublish

Añade una palabra clave al seguimiento de posicionamiento de la ficha.

Body (JSON)

JSON
{ "keyword": "garage marseille centre" }

bulle_id — Obligatorio con una clave de esfera: el establecimiento apuntado. Deducido automáticamente con una clave de burbuja.

Response:

JSON
{
  "id": 34,
  "keyword": "garage marseille centre",
  "last_position": null,
  "previous_position": null,
  "delta": null,
  "last_search_volume": null,
  "last_url": null,
  "last_checked_at": null,
  "created_at": "2026-07-20T10:00:00Z",
  "history": []
}

Datos de Search Console

GET/api/v2/seo/search-consoleAuthread

Devuelve los datos de Google Search Console en directo (impresiones, clics, posición) según las dimensiones, filtros y fechas solicitados.

ParámetroTypeDefecto
dimensionsarrayquery · page · date · country · device
daysinteger1-365
start_datestringISO 8601
end_datestringISO 8601
row_limitinteger-
query_containsstring-
query_equalsstring-
page_containsstring-
page_equalsstring-
countrystring-
devicestring-
search_typestring-
bulle_idstringObligatorio con una clave de esfera (el establecimiento apuntado). Facultativo con una clave de burbuja.

Response:

JSON
{
  "bulle_id": "abc-123",
  "site_url": "https://autosud.fr/",
  "start_date": "2026-06-01",
  "end_date": "2026-06-30",
  "dimensions": ["query"],
  "search_type": "web",
  "row_count": 1,
  "rows": [ { "keys": ["garage marseille"], "clicks": 42, "impressions": 800, "ctr": 0.0525, "position": 4.2 } ]
}

Lanzar un escaneo SEO

POST/api/v2/seo/scanAuthpublish

Lanza un escaneo SEO completo de la ficha. Sujeto a una cuota mensual (429 si se supera). Operación costosa: admite dry_run.

Body (JSON)

JSON
{ "dry_run": false }

bulle_id — Obligatorio con una clave de esfera: el establecimiento apuntado. Deducido automáticamente con una clave de burbuja.

⚠️

429

Rate limit excedido

Response:

JSON
{
  "ran": true,
  "kind": "full",
  "bulle_id": "abc-123",
  "scanned_at": "2026-07-20T10:00:00Z",
  "quota_used": 3,
  "quota_limit": 10
}

Analizar una palabra clave

POST/api/v2/seo/keyword-lookupAuthpublish

Analiza una palabra clave bajo demanda: volumen de búsqueda, dificultad, palabras clave relacionadas. Operación costosa: admite dry_run.

Body (JSON)

JSON
{ "keyword": "vidange voiture marseille", "dry_run": false }

bulle_id — Obligatorio con una clave de esfera: el establecimiento apuntado. Deducido automáticamente con una clave de burbuja.

Response:

JSON
{
  "kind": "keyword-lookup",
  "keyword": "vidange voiture marseille",
  "result": {}
}

Artículos SEO/GEO (creación y publicación)

Crear artículos

POST/api/v2/articlesAuthpublish

Crea uno o varios artículos para los sitios conectados (WordPress, Wix). La redacción por IA se realiza en segundo plano. Sujeto a una cuota. Respuesta 201.

Body (JSON)

JSON
{
  "title": "Comment entretenir sa voiture en été",
  "target_keyword": "entretien voiture été",
  "site_ids": [12, 34],
  "wix_site_ids": [7],
  "ai_word_count_target": 1500,
  "generate_content": true,
  "generate_image": false,
  "tone": "professional",
  "language": "fr",
  "meta_title": "Entretien voiture été | Auto Sud",
  "meta_description": "Nos conseils d'expert pour préparer l'été.",
  "excerpt": "Préparez votre véhicule pour l'été.",
  "category": "Conseils"
}

Parámetros

CampoTypeRequerido
titlestring (min 3)Si
target_keywordstring (min 2)Si
site_id · site_idsinteger · integer[]No
wix_site_id · wix_site_idsinteger · integer[]No
ai_word_count_targetinteger · 1500No
generate_contentboolean · trueNo
generate_imageboolean · falseNo
tonestring · professionalNo
languagestring · frNo
featured_image_url · meta_title · meta_description · excerptstringNo
categorystring (max 80) · nullNo
bulle_idstringClave de esfera
💡

201 Created

La generación es asíncrona: el artículo se crea primero y después se redacta en segundo plano. Recupera su contenido final a través de GET /v2/articles/{id}.

Response:

JSON
{
  "created": [ { "id": 42, "title": "Comment entretenir sa voiture en été", "site_id": 12 } ],
  "skipped": [ { "wix_site_id": 7, "reason": "already_exists" } ],
  "count": 1,
  "generating": true
}
💡

Sin CMS (sitio a medida)

Al proporcionar bulle_id en lugar de un sitio CMS (site_ids / wix_site_ids), el artículo se crea y se vincula al establecimiento, sin CMS. Es el modo de los sitios a medida (Next.js, Astro, tema propio): el artículo se sirve luego mediante GET /api/v2/articles, que tu sitio consume por sí mismo.
JSON
{
  "title": "5 conseils pour entretenir sa voiture",
  "target_keyword": "entretien voiture marseille",
  "bulle_id": "abc-123"
}

La respuesta lleva entonces kind = api en created[], con site_id en null:

JSON
{
  "created": [ { "id": 43, "kind": "api", "site_id": null } ],
  "count": 1,
  "generating": true
}

Modificar un artículo

PUT/api/v2/articles/{article_id}Authpublish

Actualiza parcialmente un artículo (solo se modifican los campos proporcionados). Devuelve 409 si el artículo ya está publicado en línea.

Body (JSON)

JSON
{
  "title": "Nouveau titre",
  "content_html": "<h2>...</h2>",
  "excerpt": "...",
  "meta_title": "...",
  "meta_description": "...",
  "target_keyword": "...",
  "featured_image_url": "https://...",
  "category": "Guide"
}
💡

Partial update

Todos los campos son opcionales: solo se modifican los campos que envías, los demás permanecen sin cambios. Cuidado con `category`: omitir el campo conserva la sección existente, mientras que una cadena vacía ("") la elimina. Corregir un título sin enviar `category` nunca borra la sección.

Response:

JSON
{ "article_id": 42, "updated_fields": ["title", "meta_description"], "status": "draft" }

Publicar o programar un artículo

POST/api/v2/articles/{article_id}/publishAuthpublish

Publica un artículo inmediatamente, o lo programa si se proporciona scheduled_at (fecha ISO futura). Operación costosa: admite dry_run.

Body (JSON)

JSON
{
  "scheduled_at": "2026-07-15T09:00:00+02:00",
  "dry_run": false
}

Response:

JSON
{
  "scheduled": true,
  "article_id": 42,
  "title": "Comment entretenir sa voiture en été",
  "scheduled_at": "2026-07-15T09:00:00+02:00"
}

Códigos QR

Listar los códigos QR

GET/api/v2/qr-codesAuthread

Devuelve los códigos QR con seguimiento de la burbuja, con el número de escaneos y el tipo de redirección (gate).

JSON
[
  {
    "id": 1,
    "bulle_id": "abc-123",
    "name": "Avis Auto Sud",
    "target": "Page Google Reviews",
    "scan_count": 342,
    "last_scanned_at": "2026-07-18T15:00:00Z",
    "is_active": true,
    "gate_enabled": true,
    "gate_threshold": 4,
    "created_at": "2026-04-01T10:00:00Z"
  }
]

bulle_id — Restringir a un establecimiento. Por defecto: el de la clave, o todos los establecimientos de la marca.

Crear un código QR

POST/api/v2/qr-codesAuthpublish

Crea un código QR con seguimiento que apunta a una URL de destino, con un color y un logotipo opcionales.

Body (JSON)

JSON
{
  "target_url": "https://g.page/r/xxxx/review",
  "name": "Avis Auto Sud",
  "color_hex": "#000000",
  "with_logo": true
}

bulle_id — Facultativo: sin él, una clave de esfera crea un código QR a nivel de la marca (válido).

Response:

JSON
{
  "id": 1,
  "name": "Avis Auto Sud",
  "target_url": "https://g.page/r/xxxx/review",
  "short_url": "https://gmb.link/xxxx",
  "png_url": "https://app.gmb-club.com/static/qr/xxxx.png",
  "color_hex": "#000000",
  "with_logo": true,
  "scan_count": 0,
  "created_at": "2026-07-20T10:00:00Z"
}

Sitios e informes

Sitios conectados

GET/api/v2/sitesAuthread

Lista los sitios conectados a la burbuja. Filtrable por plataforma (wordpress, wix, shopify, prestashop).

ParámetroTypeDefecto
platformstringwordpress · wix
bulle_idstringRestringir a un establecimiento. Por defecto: el de la clave, o todos los establecimientos de la marca.
JSON
[
  {
    "platform": "wordpress",
    "id": 1,
    "site_url": "https://autosud.fr",
    "site_name": "Auto Sud",
    "sphere_id": "xyz-789",
    "bulle_id": "abc-123",
    "is_shared": false,
    "has_api_key": true,
    "wp_version": "6.5",
    "plugin_version": "1.4.0",
    "theme_name": "GeneratePress"
  },
  {
    "platform": "wix",
    "id": 2,
    "site_url": "https://autosud-aix.wixsite.com",
    "site_name": "Auto Sud Aix",
    "sphere_id": "xyz-789",
    "bulle_id": "abc-456",
    "is_shared": false,
    "has_token": true
  }
]

Listar los informes

GET/api/v2/reportsAuthread

Devuelve los informes ya generados, con las URL de descarga en PDF y CSV.

ParámetroTypeDefecto
typestringfiche · (défaut : fiche)
limitinteger1-100 · 20
bulle_idstringRestringir a un establecimiento. Por defecto: el de la clave, o todos los establecimientos de la marca.
JSON
[
  {
    "fiche_name": "Auto Sud - Marseille Centre",
    "report_name": "Rapport juin 2026",
    "period": "2026-06",
    "generated_at": "2026-07-01T08:00:00Z",
    "pdf_url": "https://app.gmb-club.com/static/reports/rep-1.pdf",
    "csv_url": "https://app.gmb-club.com/static/reports/rep-1.csv"
  }
]

Generar un informe

POST/api/v2/reportsAuthpublish

Genera un informe en PDF. type = fiche para un establecimiento, o combine con al menos dos fiche_ids. Procesamiento asíncrono (~1 a 2 min): respuesta 202, resultado recuperable a través de GET /v2/reports.

Body (JSON)

JSON
{
  "type": "combine",
  "fiche_ids": ["gmb-fiche-123", "gmb-fiche-456"],
  "date_start": "2026-06-01",
  "date_end": "2026-06-30",
  "report_name": "Rapport juin 2026",
  "dry_run": false
}
💡

date_start and date_end required

The date_start and date_end fields (ISO format, YYYY-MM-DD) are required in the request body.
💡

202 Accepted

Los procesos largos (generación de informes, envío de solicitudes de reseña, generación de artículos) devuelven un código 202 con un identificador. El resultado se recupera después a través de los endpoints de lectura correspondientes (por ejemplo GET /v2/reports para un informe, o GET /v2/articles para un artículo).

Response:

JSON
{ "generated": true, "type": "combine", "report_id": "rep-1", "fiches_count": 2 }

Imágenes

Subir una imagen

POST/api/v2/images/uploadAuthpublish

Envía una imagen (image_base64 O url, nunca ambos). Formatos JPEG, PNG, WebP, GIF, 8 MB como máximo. Devuelve una image_url reutilizable en las publicaciones y los artículos.

Body (JSON)

JSON
{ "url": "https://example.com/photo.jpg" }
// ou : { "image_base64": "data:image/png;base64,iVBORw0..." }

Response:

JSON
{
  "uploaded": true,
  "image_url": "https://app.gmb-club.com/static/uploads/mcp/xxxx.webp",
  "size_bytes": 84213,
  "format": "webp"
}

Generar una imagen con IA

POST/api/v2/images/generateAuthpublish

Genera una imagen con IA a partir de un prompt. align_with_brand (activado por defecto) aplica la identidad visual de la marca. Devuelve una image_url.

Body (JSON)

JSON
{
  "prompt": "Un mécanicien souriant dans un garage moderne et lumineux",
  "align_with_brand": true
}

bulle_id — Obligatorio con una clave de esfera cuando align_with_brand vale true (el establecimiento cuya identidad se alinea).

Response:

JSON
{
  "generated": true,
  "image_url": "https://app.gmb-club.com/static/uploads/mcp/xxxx.webp",
  "brand_aligned": true
}

Permisos

Permisos configurables:

read

Leer posts, artículos, conexiones

schedule

Crear y modificar posts programados

publish

Publicar inmediatamente

delete

Eliminar posts

Rate Limiting

Límites de solicitudes configurables:

LímiteValor por defecto
Por minuto60
Por día1000

Códigos de error

CodeDescription
200Éxito
201Recurso creado
202Operaciones largas: respuesta 202
400Solicitud invalida
401Clave API invalida
403Permiso insuficiente
404No encontrado
409Conflicto de estado (p. ej. artículo ya publicado)
410Recurso desaparecido en el proveedor (p. ej. reseña eliminada de Google)
422Datos invalidos
429Rate limit excedido
500Error del servidor
502Fallo de un servicio externo (Google, DataForSEO)
503Servicio no configurado o no disponible

Ejemplos de código

Python
import requests

API_KEY = "gmb_live_xxxx..."
BASE_URL = "https://app.gmb-club.com/api/v2"
headers = { "X-API-Key": API_KEY, "Content-Type": "application/json" }

# 1. Get key info
me = requests.get(f"{BASE_URL}/me", headers=headers).json()
print(f"Sphere: {me['sphere']['name']}")
print(f"Bubble: {me['bulle']['name']}")

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

# 3. Get published articles
articles = requests.get(f"{BASE_URL}/articles", headers=headers,
    params={"status": "published", "limit": 10}).json()
for article in articles['articles']:
    print(f"#{article['id']}: {article['title']}")

Make · n8n · Zapier

✅

Módulos de Make.com y n8n

Los módulos oficiales de Make.com y n8n (n8n-nodes-gmb-club) cubren las operaciones principales listas para usar. Para los endpoints aún no expuestos por un módulo, llama a la API directamente: módulo « Make an API Call » en Make, o nodo « HTTP Request » con la credencial GMB Club en n8n.
💡

dry_run

Consejo: en tus escenarios de Make o n8n, activa dry_run: true en las operaciones costosas para validar la llamada antes de ejecutarla de verdad.

Make.com

Usa el módulo HTTP > Make a request.

🚫

Parámetro critico

Body type: Raw > JSON. No dejar en multipart/form-data.

Zapier

Usa Webhooks by Zapier > Custom Request.

Seguridad

MedidaDescription
Claves hasheadasSHA256, nunca en texto plano
HTTPS obligatorioTodas las solicitudes via HTTPS
Aislamiento por burbujaCada clave accede solo a su burbuja
Expiracion opcionalLas claves pueden expirar
RevocaciónRevocable en cualquier momento
Rate limitingProtección via Redis