X-CommunityId
La cabecera que dice en qué comunidad ocurre cada llamada y en cuál se comprueba tu rol. Por qué ninguna ruta lleva la comunidad en el camino, dónde encontrar el id de la comunidad y los errores de quien la olvida.
Memberfy se organiza por comunidad, y la API también: casi todas las llamadas necesitan la cabecera X-CommunityId con el id de la comunidad.
X-CommunityId: 3562c7a0-0000-0000-0000-000000000000
Qué decide
- Dónde ocurre la operación: en qué comunidad se crea el espacio, se lista el producto, se solicita el retiro.
- Qué rol tienes: el permiso se comprueba en tu perfil de esa comunidad. La misma cuenta puede ser propietaria de una comunidad y miembro de otra; la cabecera elige cuál vale.
Manda la cabecera, no la ruta
Ninguna ruta lleva la comunidad en el camino. Productos, cupones, planes, comisiones, extracto, retiros, informes, información empresarial, datos de cobro y la gestión de suscripciones están en rutas sin el id de la comunidad (/api/products, /api/coupons, /api/manage/subscriptions…), y la comunidad llega solo por X-CommunityId. Sin la cabecera, esas rutas responden 400.
No es un detalle: con una sola fuente para la comunidad, no hay forma de actuar en otra cambiando un id en la URL.
La excepción es el SuperAdmin actuando sobre otra comunidad, en /api/admin/communities/{communityId}/fee-overrides/...: ahí el id de la ruta es la comunidad de destino, no el contexto de quien llama. Las rutas de la propia comunidad, PUT y DELETE /api/communities/{id}, GET /api/communities/{id}/members y PATCH /api/communities/{id}/settings, llevan el id porque la comunidad es el propio recurso; la cabecera sigue siendo obligatoria en ellas.
Cambió el 6 de octubre de 2026. Las rutas antiguas
/api/communities/{communityId}/...(productos, cupones, planes, comisiones, extracto, retiros, informes, suscripciones, compras, checkout, información empresarial, datos de cobro) se eliminaron, sin periodo de transición, y responden404. Usa la misma ruta sin el prefijo, en/api/...; la gestión de suscripciones por el equipo quedó en/api/manage/subscriptions, y las estadísticas de correo, en/api/emails/stats. Los nombres de método del SDK no cambiaron. Consulta Las rutas que cambiaron.
Algunas rutas antiguas también piden communityId en el cuerpo (crear curso, invitar miembros). Envía el mismo id que en la cabecera.
Las rutas que cambiaron
El 6 de octubre de 2026, cada ruta de abajo perdió el prefijo /api/communities/{communityId}. Los métodos HTTP, los parámetros, los cuerpos, las respuestas y los roles exigidos siguen siendo los mismos.
| Antes | Después |
|---|---|
/api/communities/{communityId}/products/... | /api/products/... |
/api/communities/{communityId}/coupons/... | /api/coupons/... |
/api/communities/{communityId}/subscription-groups/... (incluidos reorder y downsell-offers) | /api/subscription-groups/... |
/api/communities/{communityId}/fees y .../fees/simulate | /api/fees y /api/fees/simulate |
/api/communities/{communityId}/ledger/... | /api/ledger/... |
/api/communities/{communityId}/payouts/... | /api/payouts/... |
/api/communities/{communityId}/reports/... | /api/reports/... |
/api/communities/{communityId}/business-information/... | /api/business-information/... |
/api/communities/{communityId}/payout-settings/... | /api/payout-settings/... |
/api/communities/{communityId}/subscriptions (la gestión por el equipo: listar, exportar, crear, detalle, cancelar, reactivar, descuento, complementos, extender, enlace de pago) | /api/manage/subscriptions/... |
/api/communities/{communityId}/subscriptions/me | /api/subscriptions/me |
/api/communities/{communityId}/purchases/me | /api/purchases/me |
/api/communities/{communityId}/checkout/... | /api/checkout/..., que ya existía con las mismas rutas |
/webhooks/email/stats/{communityId} | /api/emails/stats (propietario o administrador) |
Los nombres de método del SDK y las páginas de la referencia siguen siendo los mismos, porque cada ruta mantuvo su operationId: /api/products sigue siendo api.products.postCommunitiesByCommunityIdProducts. Solo salieron las nueve operaciones del checkout anidado; usa las de /api/checkout/*.
Dónde encontrar el id de la comunidad
| Llamada | Qué devuelve |
|---|---|
GET /api/communities/my | Las comunidades de tu cuenta, con el id y tu rol en cada una |
GET /api/profiles/my | Tus perfiles, uno por comunidad |
curl -s https://api.memberfy.net/api/communities/my \
-H "Authorization: Bearer $TOKEN"
Los errores de quien la olvida
| Situación | Respuesta |
|---|---|
| Sin la cabecera, o con un valor que no es un id válido | 400 · Indica la comunidad en el encabezado X-CommunityId., con errors[0].param = "X-CommunityId" |
| La cabecera es de una comunidad en la que no estás | 403 · Você não é membro desta comunidade. ("No eres miembro de esta comunidad") |
Una ruta antigua, con /communities/{communityId}/ | 404 |
| El recurso es de otra comunidad | 404: para la comunidad de la cabecera, no existe |
El 400 por falta de la cabecera es la causa número uno de errores en la API.
Ejemplo
curl -s https://api.memberfy.net/api/products \
-H "Authorization: Bearer $TOKEN" \
-H "X-CommunityId: $COMMUNITY_ID"
En el SDK
api.setCommunity('<uuid>') una vez, y el SDK envía la cabecera en todas las llamadas. Para cambiar de comunidad, vuelve a llamar a setCommunity. Consulta SDK de JavaScript.
Preguntas frecuentes
¿Una integración puede atender dos comunidades? Sí, con una cuenta que tenga rol en las dos: cambia la cabecera en cada llamada.
¿Las rutas de autenticación piden la cabecera?
No: el inicio de sesión, el registro y GET /api/auth/me funcionan sin ella.