Owner (tú) → Profiles (marcas/proyectos, máximo 1 cuenta por red social cada uno) → Accounts (cuentas conectadas: página FB, IG, WhatsApp…).
/profiles/profiles/accounts/accounts/healthconnected / needs_reconnection./adaccountsSe cobra por perfil, no por cuenta. Regla estructural: cada perfil admite 1 cuenta por red social (1 Facebook, 1 Instagram, 1 YouTube, 1 Meta Ads, 1 Google Ads, etc.) — para conectar otra cuenta de la misma red hay que crear otro perfil. El plan Free permite 1 perfil con hasta 3 cuentas en total; el Trial (14 días desde el registro) permite 1 perfil con todas las redes (1 c/u). GET /profiles devuelve estos límites en plan.limits. Si superas un límite, la API responde con un code: 409 one_per_network (ya hay una cuenta de esa red en el perfil), 402 plan_account_limit (superas el nº de cuentas de tu plan) o 402 plan_profile_limit (superas el nº de perfiles de tu plan).
Un mismo patrón genérico para las tres plataformas que usan OAuth:
/connect/:platform?profileId=…:platform es meta, tiktok o google. Devuelve { authUrl } para abrir en el navegador./connect/:platform/callback/app/connect-select con un connectToken para elegir página; TikTok y Google redirigen directo al Dashboard ya conectado. Si tu app registró un redirectUri en su API key, el callback vuelve a tu propia pantalla con ?profileId=&ct=&platform=meta&clientState= — ver Integración de agente.Para Meta hay un paso extra: elegir a qué Página de Facebook conectar (y su Instagram asociado). Las cuentas publicitarias (ad accounts) usan el mismo connectToken con su propio picker — no se auto-conecta ninguna, cada una se elige (y se cobra) aparte.
/profiles/:id/connect/meta/available?ct=<connectToken>/profiles/:id/connect/meta/profiles/:id/connect/meta/adaccounts/available?ct=<connectToken>/profiles/:id/connect/meta/adaccountsct del callback).WhatsApp (QR o Cloud API oficial) y Telegram (bot token) no pasan por un flujo OAuth de navegador — ver WhatsApp Business y Telegram.
# Crear un profile y arrancar OAuth con Meta curl -X POST https://zoosial.com/profiles \ -H "Authorization: Bearer $SC_API_KEY" -H "Content-Type: application/json" \ -d '{"name":"Mi marca"}' # → { "id": "prof_123", "name": "Mi marca" } curl "https://zoosial.com/connect/meta?profileId=prof_123" \ -H "Authorization: Bearer $SC_API_KEY" # → { "authUrl": "https://facebook.com/dialog/oauth?..." }