Gestión de redes sociales en marca blanca para agencias y SaaS
Envía a cada cliente un enlace a una página de conexión con tu logo, tus textos y tu tema. Tu cliente conecta su TikTok, Instagram, YouTube o LinkedIn una sola vez. A partir de ahí, publicas y programas por él a través de la API, n8n o Make.
Empiezas gratis, sin tarjeta. La marca blanca está incluida desde el plan Professional.
import { UploadPost } from 'upload-post';
const api = new UploadPost('YOUR_API_KEY');
// Un perfil por cliente
const client = 'client-harbor';
await api.createUser(client);
// Enlace de conexión con tu marca, válido 48 horas
const { access_url } = await api.generateJwt(client, {
logoImage: 'https://tuagencia.com/logo.png',
connectTitle: 'Conecta tus cuentas',
redirectUrl: 'https://tuagencia.com/listo',
platforms: ['instagram', 'tiktok', 'linkedin']
});
// Envía access_url a tu cliente Capturas reales
Lo que ven tus clientes
Esta es la página de conexión real que abre tu cliente, mostrada con una marca de ejemplo. Northwind Studio es una agencia inventada y "Harbor Demo Cafe" un cliente inventado; la página, el diseño y las opciones son los reales.
platforms.
connect_theme: "dark". Un tema forzado oculta el selector claro/oscuro, así que todos tus clientes ven lo que has elegido.
ui_labels: el antetítulo, los títulos de sección, el texto de privacidad y todos los botones de conectar dicen ahora lo que quiere la agencia.
platforms, el cliente ve todas las redes, con las menos habituales detrás del botón "Ver 9 redes más". El día de la captura, Reddit aparecía como no disponible.
Qué puede hacer el cliente en esa página
- Conectar TikTok, Instagram, YouTube, LinkedIn y el resto de redes con OAuth en la pantalla de inicio de sesión de la propia red, así que su contraseña nunca llega ni a ti ni a Upload-Post. Bluesky, Telegram, Discord y algunas otras usan en su lugar una contraseña de aplicación, un token de bot o un webhook.
- Elegir en qué página de Facebook, página de empresa de LinkedIn o ubicación de Google Business vas a publicar.
- Volver a conectar una cuenta cuyo acceso ha caducado, o desconectar una cuando quiera.
- Ver el calendario de publicaciones programadas, si lo dejas activado. Con la opción de solo lectura, es lo único que puede hacer.
- Volver a tu web con el botón que tú has rotulado.
El enlace está ligado a un solo perfil. Un cliente solo puede ver y cambiar sus propias cuentas, nunca las de tus otros clientes ni tu API key.
Cómo funciona para una agencia
Cinco pasos desde un cliente nuevo hasta su primera publicación programada. Todos se pueden hacer desde el panel o desde la API.
- 1
Crea un perfil por cliente
En el panel, entra en Manage Users y añade un perfil, o llama a
POST /api/uploadposts/userscon un username comoclient-harbor. Un perfil admite una cuenta por red. - 2
Genera el enlace de conexión con tu marca
Pulsa Share junto al perfil y rellena tu logo, título, descripción, idioma, URL de retorno, texto del botón y redes. O envía esos mismos campos a
POST /api/uploadposts/users/generate-jwt. Recibes unaccess_urlque funciona durante 48 horas. - 3
Envíaselo a tu cliente
Por email, por chat o dentro de tu propio proceso de alta. El cliente no necesita una cuenta de Upload-Post y nunca ve tu panel.
- 4
El cliente conecta sus cuentas
Inicia sesión en TikTok, Instagram, YouTube o LinkedIn y autoriza el acceso. Los tokens se guardan cifrados y se renuevan solos. Si configuras un webhook, recibes un evento
social_account_connecteden el momento en que ocurre. - 5
Publica y programa por él
Publica con
user=client-harbory añadescheduled_datepara programarlo. Hazlo desde el panel, desde tu código, con plantillas de n8n, con un escenario de Make o con un asistente de IA a través del servidor MCP. Saca las cifras de cada cliente del endpoint de analíticas.
Todas las opciones de marca
Todas son campos de la llamada generate-jwt y se guardan en el perfil del cliente. La última columna indica si también puedes configurarla desde el panel.
| Opción | Parámetro | Qué hace | Ejemplo | Panel |
|---|---|---|---|---|
| Logo | logo_image | Muestra tu logo en la parte superior de la página. Vale cualquier URL pública de imagen http(s). | "https://tuagencia.com/logo.png" | Sí |
| Título de la página | connect_title | Sustituye el título principal, que por defecto dice "Conecta tus cuentas sociales". | "Conecta tus cuentas con Northwind Studio" | Sí |
| Descripción | connect_description | Sustituye la línea de texto que va debajo del título. | "Vincula los canales que vamos a gestionar por ti." | Sí |
| Redes visibles | platforms | Solo aparecen las redes que indiques. Si no lo envías, el cliente ve todas las redes. | ["instagram", "tiktok", "linkedin"] | Sí |
| URL de retorno | redirect_url | A dónde lleva el botón de volver cuando el cliente termina. | "https://tuagencia.com/onboarding/listo" | Sí |
| Texto del botón de volver | redirect_button_text | El texto de ese botón de volver. | "Volver a Northwind Studio" | Sí |
| Idioma | language | Fuerza inglés, español, alemán, francés, portugués, polaco o turco. Sin él, la página sigue el idioma del navegador y, si no lo tiene, usa inglés. | "es" | Sí |
| Cualquier texto de la página | ui_labels | Reescribe textos sueltos de la página por su clave: botones, títulos de sección, el aviso de privacidad. Hasta 100 claves, de 300 caracteres cada una. | {"connect.card.connect": "Vincular cuenta"} | Solo API |
| Tema | connect_theme | Fuerza el tema claro u oscuro y oculta el selector de tema. "auto" devuelve la elección al visitante. | "dark" | Solo API |
| Pestaña de calendario | show_calendar | Muestra u oculta una pestaña de calendario con las publicaciones programadas de ese perfil. Viene activada por defecto. | false | Sí |
| Calendario de solo lectura | readonly_calendar | El cliente solo ve el calendario. No puede editar ni borrar publicaciones, ni conectar o desconectar cuentas. | true | Sí |
Todas las opciones en una petición
curl -X POST https://api.upload-post.com/api/uploadposts/users/generate-jwt \
-H "Authorization: ApiKey YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"username": "client-harbor",
"logo_image": "https://tuagencia.com/logo.png",
"connect_title": "Conecta tus cuentas con Northwind Studio",
"connect_description": "Vincula los canales que vamos a gestionar por ti.",
"platforms": ["instagram", "tiktok", "linkedin"],
"redirect_url": "https://tuagencia.com/onboarding/listo",
"redirect_button_text": "Volver a Northwind Studio",
"language": "es",
"connect_theme": "light",
"ui_labels": { "connect.card.connect": "Vincular cuenta" },
"show_calendar": false
}' Conviene saber
- Envía la marca completa cada vez que generes un enlace. El logo, el título, la descripción, el texto del botón, la URL de retorno, las redes y el idioma se borran del perfil si no los incluyes.
-
ui_labels,connect_themey los dos interruptores del calendario solo cambian cuando los envías. Envíanullo{}para restablecer los textos. - Los textos sustituyen al idioma que esté mostrando la página. Si tus textos están en español y el navegador de un cliente está en francés, el resto de la página sale en francés, así que configura también
language. - Las claves de los textos y la referencia completa de parámetros están en la documentación de la API de User Profiles.
Lo que no va en marca blanca
Mejor que lo leas aquí a que te lo descubra un cliente. Estas partes del proceso siguen mostrando Upload-Post o la red social.
La dirección
La página alojada está en app.upload-post.com/connect. No hay opción de dominio propio ni CNAME. Si necesitas tu dominio, monta tu propia página con la Connect API; la vuelta de OAuth sigue pasando un instante por app.upload-post.com.
Las pantallas de permisos de las redes
Cuando el cliente inicia sesión, TikTok, Meta, Google, LinkedIn y las demás muestran su propia pantalla con la app registrada allí, que es la app aprobada de Upload-Post. Por eso mismo te ahorras sus revisiones de apps.
El recuadro de privacidad
En la página siempre aparece una nota breve de "Cómo se usan tus datos", con enlaces a la política de privacidad de Upload-Post y a [email protected]. Por defecto nombra a TONVI TECH SL, la empresa detrás de Upload-Post, como encargada del tratamiento. Puedes reescribir el texto con ui_labels, pero el recuadro y esos enlaces se quedan.
Colores, título de la pestaña y tu panel
Eliges claro u oscuro, no un color de marca: los botones mantienen el índigo de Upload-Post. El título y el icono de la pestaña del navegador son los de Upload-Post. El panel en el que entra tu equipo es Upload-Post, no una app con tu marca.
¿Por qué no construir tú las integraciones?
Las integraciones directas implican revisiones de apps con Meta y TikTok, lógica para renovar tokens y cambios de API que rompen cosas, una vez por cada red. Con una sola API tienes todas las redes detrás de un endpoint y la página de conexión encima.
Agencias
Un perfil por cliente, tu marca en el enlace de conexión, y publicaciones y programación desde un solo sitio
Plataformas SaaS
Añade publicación en redes sociales a tu producto sin construir una integración por cada red
Herramientas de contenido
Deja que tus usuarios compartan lo que crean directamente en sus propias cuentas
Las llamadas a la API que hay detrás
Para desarrolladores que lo integran en un SaaS o en una herramienta de agencia. Sin flujos OAuth que construir y sin credenciales de plataformas que gestionar.
Crea un perfil para cada cliente o usuario
Un perfil es el contenedor de las cuentas sociales de un cliente (o de un usuario de tu app). Usa tu propio ID interno como username y relacionarlos después será inmediato.
curl -X POST https://api.upload-post.com/api/uploadposts/users \
-H "Authorization: ApiKey YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"username": "your-internal-user-id-123"}' Genera la URL de conexión con tu marca
Aquí va la marca: logo, título, URL de retorno, redes y el resto de opciones de la tabla de arriba. La respuesta incluye access_url, válida durante 48 horas.
curl -X POST https://api.upload-post.com/api/uploadposts/users/generate-jwt \
-H "Authorization: ApiKey YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"username": "your-internal-user-id-123",
"redirect_url": "https://yourapp.com/social-connected",
"logo_image": "https://yourapp.com/logo.png",
"platforms": ["tiktok", "instagram", "youtube"]
}' El cliente conecta sus cuentas
Envía al cliente o usuario a access_url. En redes con OAuth como TikTok, Instagram y YouTube se autentica directamente con la red, así que Upload-Post nunca ve su contraseña, y los tokens resultantes se guardan cifrados.
Lo que Upload-Post gestiona por ti
Flujos OAuth 2.0
Renovación de tokens
Almacenamiento cifrado
Publica o programa en su nombre
Incluye el username del perfil como user en cualquier petición de subida. Añade scheduled_date para publicar más tarde en lugar de ahora.
curl -X POST https://api.upload-post.com/api/upload \
-H "Authorization: ApiKey YOUR_API_KEY" \
-F "user=your-internal-user-id-123" \
-F "video=@/path/to/video.mp4" \
-F "title=Nueva carta de otoño" \
-F "platform[]=tiktok" \
-F "platform[]=instagram" \
-F "scheduled_date=2026-10-02T09:00:00Z" Una API key, un perfil por cliente
Todos tus clientes están bajo una sola cuenta y una sola API key, cada uno en su propio perfil con sus propias cuentas sociales.
Cómo funcionan los perfiles
Cada perfil conecta una cuenta por red. Tu plan fija cuántos perfiles tienes, y los perfiles no son un tope de cuentas sociales: en Professional puedes tener 25 cuentas de TikTok, 25 de Instagram y 25 de LinkedIn conectadas a la vez.
- Credenciales separadas: los tokens sociales de cada cliente pertenecen solo a su perfil
- Webhook por cliente: da a cada perfil su propia URL para los eventos de conexión y de subida
- Una sola factura: una única suscripción cubre a todos los clientes
Ejemplo de configuración
| Plan | Perfiles incluidos | Pago mensual | Pago anual |
|---|---|---|---|
| Professional | 25 | 50 $/mes | 33 $/mes (400 $/año) |
| Advanced | 75 | 147 $/mes | 118 $/mes (1.411 $/año) |
| Business | 225, después 1 $/mes por perfil extra | 438 $/mes | 350 $/mes (4.205 $/año) |
Precios en USD a septiembre de 2026. Los precios en euros y los packs de perfiles extra de Professional y Advanced están en la sección de precios, que siempre es la fuente actualizada.
¿Quién usa la integración de redes sociales en marca blanca?
Plataformas SaaS
Gestores de contenido, plataformas de automatización de marketing y software de empresa.
Agencias de marketing
Agencias de marketing digital y empresas de gestión de redes sociales.
Plataformas de contenido
Plataformas de blogs, webs de alojamiento de vídeo y herramientas de creación de contenido.
Plataformas educativas
Plataformas de formación online (LMS) y de contenido educativo.
Plataformas de e-commerce
Marketplaces y soluciones de comercio electrónico.
Plataformas de vídeo
Plataformas de alojamiento de vídeo y servicios de streaming.
Especificaciones técnicas y cumplimiento
Redes compatibles
Y 11 más, entre ellas Google Business, Slack, Mastodon y WordPress. Ver las 22 plataformas
Seguridad
Los tokens de las redes sociales se guardan cifrados en reposo.
En las redes con OAuth, los clientes inician sesión en la pantalla de la propia red. Su contraseña nunca pasa ni por ti ni por Upload-Post.
Cada enlace de conexión abre un solo perfil y caduca a las 48 horas.
Pon tu marca en el alta de tus clientes
Crea un perfil, pulsa Share y envía el enlace. Tu primera página de conexión con tu marca está lista en unos minutos.
Empiezas gratis, sin tarjeta. Marca blanca desde el plan Professional.
Redes sociales en marca blanca: preguntas frecuentes
Lo que preguntan las agencias y los equipos de SaaS antes de enviar su primer enlace de conexión con su marca
¿Mis clientes necesitan una cuenta de Upload-Post?
No. El enlace de conexión lleva un token solo para ese perfil de cliente. Tu cliente lo abre, inicia sesión en cada red social y listo. El enlace vale 48 horas; pasado ese tiempo, generas uno nuevo.
¿Puedo poner la página de conexión en mi propio dominio?
La página alojada no: siempre está en app.upload-post.com/connect y no hay dominios personalizados. Si la dirección es importante para ti, la Connect API te permite montar la página en tu propia web. Aun así, la red devuelve al cliente un instante por app.upload-post.com, porque esa es la URL de retorno OAuth registrada en cada plataforma.
¿Qué planes incluyen la marca blanca?
Professional, Advanced y Business. Free y Basic no la incluyen. Professional trae 25 perfiles, Advanced 75 y Business 225, y en Business cada perfil extra cuesta 1 $ al mes. Sin llamada comercial: eliges el plan en la sección de precios.
¿Cuántas cuentas de cliente caben en un perfil?
Un perfil admite una cuenta por red, así que un perfil puede ser un cliente con Instagram, TikTok, LinkedIn y YouTube conectados. 25 perfiles significa hasta 25 cuentas en cada red, no 25 cuentas en total. Un cliente con dos cuentas de Instagram necesita dos perfiles.
¿Tengo que enviar la marca cada vez que creo un enlace?
Sí, en el caso del logo, el título, la descripción, el texto del botón, la URL de retorno, las redes y el idioma. Cada llamada a generate-jwt guarda exactamente lo que envías, así que un campo que no incluyas se borra de ese perfil. ui_labels, connect_theme, show_calendar y readonly_calendar son distintos: solo cambian cuando los envías.
¿Mis clientes pueden ver lo que hay programado?
Sí. La pestaña de calendario viene activada por defecto y muestra las publicaciones programadas de ese perfil. Activa readonly_calendar y el enlace se convierte en un calendario de contenidos de solo lectura: el cliente puede mirar, pero no editar, borrar ni cambiar conexiones. Envíale a /connect/calendar con el mismo token para abrirlo directamente.
¿En qué idiomas está la página de conexión?
Inglés, español, alemán, francés, portugués, polaco y turco. Puedes forzar uno por perfil con el parámetro language o dejar que la página siga el idioma del navegador. Para cualquier otro texto, ui_labels te deja escribirlo tú.
¿Cómo sé cuándo un cliente ha conectado una cuenta?
Con webhooks. Upload-Post envía los eventos social_account_connected, social_account_disconnected, social_account_reauth_required y upload_completed. Cada perfil puede tener su propia URL de webhook, así que cada cliente puede avisar a un endpoint distinto de tu sistema.
¿Puedo sacar analíticas por cliente?
Sí. El endpoint de analíticas recibe el username del perfil, así que obtienes las cifras de un cliente cada vez y puedes montar tus propios informes encima.
¿Tenéis SDK?
Hay SDK oficiales para Python (pip install upload-post) y JavaScript/Node (npm install upload-post). Todo lo demás es una API REST normal con API key, así que sirve cualquier lenguaje o herramienta no-code capaz de enviar peticiones HTTP.
¿Cuánto se tarda en configurarlo?
Sin código: crea un perfil en Manage Users, pulsa Share, rellena tu marca y envía el enlace. Con la API son dos llamadas, una para crear el perfil y otra para generar el enlace, más las llamadas de subida que ya necesitas para publicar.
¿Qué soporte tengo?
Documentación con ejemplos de código para cada endpoint y soporte por email en [email protected]. Advanced y Business incluyen soporte prioritario.
Más detalle: API de User Profiles, Connect API, Webhooks y SDK.