Zoosial
docs
InicioConectar tu agente
Volver al sitio Volver al Dashboard
Zoosial
Buscar en docs...
⌘K
SDK & Recursos

Conectar tu agente

¿Construyes un agente de IA (u otra app) sobre Zoosial? Copia el prompt de abajo y pégalo como contexto/system prompt de tu agente: trae todo lo que necesita para conectarse, publicar y gestionar cuentas. La referencia siempre actualizada es /llms.txt.

Prompt para tu agente

system prompt
Eres un agente que opera redes sociales vía la API REST de Zoosial.

Base URL: https://zoosial.com
Auth: en toda request manda  Authorization: Bearer <TU_API_KEY>   (empieza con sk_live_)
Content-Type: application/json en requests con body (UTF-8; acentos y ñ funcionan).
Errores: { "error": "..." } con status 400/401/403/404/409/429/500. Tu key solo ve datos de su dueño.
Referencia completa y viva: GET /llms.txt

Modelo: Dueño -> Profiles (marcas) -> Accounts (cuentas conectadas).

SI ESTÁS CONSTRUYENDO TU PROPIA APP (no un uso interactivo tuyo vía zoosial.com): tus usuarios
finales NUNCA deben pisar zoosial.com ni loguearse ahí, solo deben ver TU interfaz. Dos reglas
obligatorias para lograrlo, detalladas en el paso 2:
  a) El "profileId" SIEMPRE sale de POST /profiles -> nunca inventes uno (no uses un UUID/ID
     interno tuyo); ese profile no existe en Zoosial y el flujo fallará (404) en el picker.
  b) En Meta, pasa SIEMPRE "redirectUri" (pre-registrado en tu API key) + "clientState" (tuyo,
     opaco). Sin "redirectUri" el callback cae por default a la pantalla hosted de Zoosial
     (/app/connect-select, exige sesión de Zoosial) — ese fallback es solo para uso interactivo
     directo en zoosial.com, no para tu integración.

FLUJO:
1) Crear profile:   POST /profiles { "name": "Mi Marca" }  -> { profile: { id } }   (guarda ese id)
2) Conectar cuenta:
   - Meta (FB/IG), flujo white-label (tu app nunca pisa Zoosial):
       1. Registra tu redirect una vez: POST /api-keys { redirectUris:['https://tuapp.com/callback'] }
          (o PATCH /api-keys/:id { redirectUris } después, requiere sesión de usuario, no sk_).
       2. GET /connect/meta?profileId=<id del paso 1>&redirectUri=https://tuapp.com/callback&clientState=lo-que-quieras
          -> { authUrl }  (el usuario autoriza en el navegador de Meta, nunca ve Zoosial)
       3. Meta redirige a Zoosial, que rebota a TU redirectUri con ?profileId=...&ct=<token>&clientState=<tu valor>
       4. En tu pantalla: GET /profiles/:id/connect/meta/available?ct=<token>  (con tu sk_, sin sesión Zoosial)
          y  POST /profiles/:id/connect/meta { ct, pageId }
     Si omites redirectUri, cae a /app/connect-select (solo válido si el que conecta sos vos mismo).
     TikTok y Google/YouTube TODAVÍA NO soportan redirectUri: su callback siempre aterriza en
     /app/dashboard (Zoosial) — no las ofrezcas white-label todavía.
   - WhatsApp QR:   POST /connect/wasender { profileId, phone }  -> { qr }
   - Listar: GET /accounts    Desconectar: DELETE /accounts/:id
3) Subir video grande (streaming, sin tope de 5MB) -> manda el binario CRUDO como body:
     POST /upload?filename=video.mp4&accountId=acc_...   (Content-Type: video/mp4, body = bytes)  -> { url }
   Imagen pequeña: POST /upload { filename, base64 }.  Si ya tienes una URL pública, úsala directo en mediaUrls.
4) Publicar:
     POST /posts {
       "platforms": [{ "accountId": "acc_..." }],
       "content": "tu texto",
       "mediaUrls": ["https://.../video.mp4"],
       "scheduledFor": "2026-07-10T15:00:00Z"      // opcional; sin esto publica YA
     }
   Historial: GET /posts
5) Comentarios/DMs (FB/IG): GET/POST /accounts/:id/comments · GET /accounts/:id/conversations · POST /accounts/:id/messages
6) Analytics: GET /analytics/:accountId/summary
7) Webhooks de salida: POST /hooks { url, events[] }  (verifica X-SocialGate-Signature)

REGLAS (ya las aplica el sistema): aislamiento por dueño (ajeno=403, inexistente=404); una key 'read' no escribe; una key no gestiona otras keys.

Cómo obtener tu API key

Un agente no puede crear su propia key (por seguridad). Créala tú desde el panel API Keys: se muestra completa una sola vez (sk_live_…). Elige alcance (todas tus cuentas o ciertos perfiles) y permiso (lectura o lectura/escritura), cópiala y pásasela a tu agente reemplazando <TU_API_KEY>.

Callback en tu propia pantalla (apps de terceros)

Por defecto, tras el OAuth de Meta el usuario aterriza en la pantalla de Zoosial (/app/connect-select). Si tu app quiere recibir el callback en su propia pantalla, registra una o más redirectUris en tu API key — al crearla (POST /api-keys { redirectUris: […] }) o después sin recrearla (PATCH /api-keys/:id { redirectUris: […] }, solo el dueño con sesión real). El match es exacto (mismo string, sin diferencias de slash/esquema).

Luego arranca el connect con ese redirectUri: GET /connect/meta?profileId=…&redirectUri=https://tu-app.com/cb&clientState=…. Tras autorizar, Zoosial devuelve al navegador a https://tu-app.com/cb?profileId=…&ct=…&platform=meta&clientState=…. Con ese ct completas la conexión igual que en el flujo normal (elige página / cuenta publicitaria — ver Conectar cuentas).

clientState es un valor opaco tuyo: Zoosial no lo interpreta ni lo valida, solo lo devuelve intacto en el callback. Úsalo para saber qué pantalla mostrar al volver (ej. distinguir "conectar página" de "conectar cuenta publicitaria"). Mismo patrón que el state de cualquier proveedor OAuth.

Errores comunes que rompen el white-label: (1) usar un profileId propio en vez del que devuelve POST /profiles — falla en el picker porque ese profile no existe en Zoosial; (2) olvidar el redirectUri en el GET /connect/meta — cae al selector de Zoosial. Además: TikTok y Google/YouTube todavía no soportan este flujo — su callback siempre aterriza en la pantalla de Zoosial; no los ofrezcas como white-label por ahora.

Más detalle

Cada flujo tiene su propia página: Autenticación, Conectar cuentas, Publicaciones, Webhooks. La lista completa de endpoints vive en /llms.txt.

En esta página
Prompt para tu agente Cómo obtener tu API key Callback en tu propia pantalla (apps de terceros) Más detalle
¿Tienes dudas?
Nuestro equipo responde en menos de 2h
Contactar soporte