Gestion des réseaux sociaux en marque blanche pour les agences et les SaaS
Envoyez à chaque client le lien d’une page de connexion avec votre logo, vos textes et votre thème. Il connecte son TikTok, son Instagram, sa chaîne YouTube ou son LinkedIn une seule fois. Ensuite, vous publiez et programmez pour lui via l’API, n8n ou Make.
Gratuit pour commencer, sans carte bancaire. La marque blanche est incluse à partir de l’offre Professional.
import { UploadPost } from 'upload-post';
const api = new UploadPost('YOUR_API_KEY');
// Un profil par client
const client = 'client-harbor';
await api.createUser(client);
// Lien de connexion à votre marque, valable 48 heures
const { access_url } = await api.generateJwt(client, {
logoImage: 'https://votreagence.fr/logo.png',
connectTitle: 'Connectez vos comptes',
redirectUrl: 'https://votreagence.fr/termine',
platforms: ['instagram', 'tiktok', 'linkedin']
});
// Envoyez access_url à votre client Vraies captures d’écran
Ce que voient vos clients
Voici la vraie page de connexion que votre client ouvre, affichée avec une marque d’exemple. Northwind Studio est une agence inventée et « Harbor Demo Cafe » un client inventé ; la page, la mise en page et les options sont les vraies.
platforms.
connect_theme: "dark". Un thème imposé masque le sélecteur clair/sombre, donc chaque client voit votre choix.
ui_labels : le surtitre, les titres de section, le texte de confidentialité et chaque bouton Connect disent désormais ce que veut l’agence.
platforms, le client voit tous les réseaux, les moins courants derrière « Show 9 more networks ». Reddit apparaissait comme indisponible le jour de la capture.
Ce que le client peut faire sur cette page
- Connecter TikTok, Instagram, YouTube, LinkedIn et les autres réseaux OAuth sur l’écran de connexion du réseau lui-même, donc son mot de passe n’arrive jamais ni chez vous ni chez Upload-Post. Bluesky, Telegram, Discord et quelques autres utilisent à la place un mot de passe d’application, un jeton de bot ou un webhook.
- Choisir la page Facebook, la page entreprise LinkedIn ou l’établissement Google Business sur lequel vous publierez.
- Reconnecter un compte dont l’accès a expiré, ou en déconnecter un à tout moment.
- Consulter le calendrier des publications programmées, si vous le laissez activé. Avec l’option lecture seule, c’est tout ce qu’il peut faire.
- Revenir sur votre site avec le bouton dont vous avez choisi le texte.
Le lien est lié à un seul profil. Un client ne peut voir et modifier que ses propres comptes, jamais vos autres clients ni votre clé API.
Comment ça marche pour une agence
Cinq étapes entre un nouveau client et sa première publication programmée. Chaque étape se fait depuis le tableau de bord ou par l’API.
- 1
Créez un profil par client
Dans le tableau de bord, allez dans Manage Users et ajoutez un profil, ou appelez
POST /api/uploadposts/usersavec un nom d’utilisateur commeclient-harbor. Un profil contient un compte par réseau. - 2
Générez le lien de connexion à votre marque
Cliquez sur Share à côté du profil et renseignez votre logo, le titre, la description, la langue, l’URL de retour, le texte du bouton et les réseaux. Ou envoyez les mêmes champs à
POST /api/uploadposts/users/generate-jwt. Vous recevez uneaccess_urlvalable 48 heures. - 3
Envoyez-le à votre client
Par e-mail, par messagerie ou dans votre propre parcours d’onboarding. Le client n’a pas besoin de compte Upload-Post et ne voit jamais votre tableau de bord.
- 4
Le client connecte ses comptes
Il se connecte sur TikTok, Instagram, YouTube ou LinkedIn et autorise l’accès. Les jetons sont stockés chiffrés et renouvelés pour vous. Si vous avez configuré un webhook, vous recevez un événement
social_account_connectedau moment même où cela se produit. - 5
Publiez et programmez pour lui
Publiez avec
user=client-harboret ajoutezscheduled_datepour programmer la publication. Faites-le depuis le tableau de bord, votre code, des templates n8n, un scénario Make ou un assistant IA via le serveur MCP. Récupérez les chiffres de chaque client avec le point d’accès analytics.
Toutes les options de personnalisation
Ce sont toutes des champs de l’appel generate-jwt, enregistrés sur le profil du client. La dernière colonne indique si vous pouvez aussi les régler depuis le tableau de bord.
| Option | Paramètre | Ce qu’elle fait | Exemple | Tableau de bord |
|---|---|---|---|---|
| Logo | logo_image | Affiche votre logo en haut de la page. N’importe quelle URL d’image publique en http(s). | "https://votreagence.fr/logo.png" | Oui |
| Titre de la page | connect_title | Remplace le titre principal, qui dit par défaut « Connectez vos comptes sociaux ». | "Connectez vos comptes à Northwind Studio" | Oui |
| Description | connect_description | Remplace la ligne de texte sous le titre. | "Associez les réseaux que nous allons gérer pour vous." | Oui |
| Réseaux affichés | platforms | Seuls les réseaux que vous listez apparaissent. Sans ce champ, le client voit tous les réseaux. | ["instagram", "tiktok", "linkedin"] | Oui |
| URL de retour | redirect_url | L’adresse où le bouton de retour renvoie le client une fois terminé. | "https://votreagence.fr/onboarding/termine" | Oui |
| Texte du bouton de retour | redirect_button_text | Le libellé de ce bouton de retour. | "Retour à Northwind Studio" | Oui |
| Langue | language | Impose l’anglais, l’espagnol, l’allemand, le français, le portugais, le polonais ou le turc. Sans ce champ, la page suit la langue du navigateur et se rabat sur l’anglais. | "fr" | Oui |
| N’importe quel texte de la page | ui_labels | Réécrit les textes de la page un par un, par leur clé : boutons, titres de section, texte de confidentialité. Jusqu’à 100 clés de 300 caractères chacune. | {"connect.card.connect": "Associer le compte"} | API uniquement |
| Thème | connect_theme | Impose le thème clair ou sombre et masque le sélecteur de thème. "auto" rend le choix au visiteur. | "dark" | API uniquement |
| Onglet calendrier | show_calendar | Affiche ou masque un onglet calendrier avec les publications programmées pour ce profil. Activé par défaut. | false | Oui |
| Calendrier en lecture seule | readonly_calendar | Le client voit uniquement le calendrier. Il ne peut ni modifier ni supprimer de publications, ni connecter ou déconnecter de comptes. | true | Oui |
Toutes les options en une requête
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://votreagence.fr/logo.png",
"connect_title": "Connectez vos comptes à Northwind Studio",
"connect_description": "Associez les réseaux que nous allons gérer pour vous.",
"platforms": ["instagram", "tiktok", "linkedin"],
"redirect_url": "https://votreagence.fr/onboarding/termine",
"redirect_button_text": "Retour à Northwind Studio",
"language": "fr",
"connect_theme": "light",
"ui_labels": { "connect.card.connect": "Associer le compte" },
"show_calendar": false
}' Bon à savoir
- Envoyez toute la personnalisation chaque fois que vous générez un lien. Le logo, le titre, la description, le texte du bouton, l’URL de retour, les réseaux et la langue sont effacés du profil si vous les omettez.
-
ui_labels,connect_themeet les deux options de calendrier ne changent que si vous les envoyez. Envoyeznullou{}pour réinitialiser les libellés. - Les libellés remplacent le texte dans la langue qu’affiche la page. Si vos libellés sont en français et que le navigateur d’un client est en anglais, le reste de la page reste en anglais : définissez donc aussi
language. - Les clés des libellés et la référence complète des paramètres se trouvent dans la documentation de l’API User Profiles.
Ce qui n’est pas en marque blanche
Mieux vaut le lire ici que l’apprendre par un client. Ces étapes du parcours affichent encore Upload-Post ou le réseau social.
L’adresse
La page hébergée se trouve sur app.upload-post.com/connect. Il n’y a pas d’option de domaine personnalisé ni de CNAME. Si vous avez besoin de votre propre domaine, construisez votre page avec la Connect API ; le retour OAuth passe quand même brièvement par app.upload-post.com.
Les écrans d’autorisation des réseaux
Quand le client se connecte, TikTok, Meta, Google, LinkedIn et les autres affichent leur propre écran avec l’application enregistrée chez eux, c’est-à-dire l’application approuvée d’Upload-Post. C’est aussi pour cela que vous évitez leurs processus de validation d’application.
L’encadré confidentialité
Une courte note « How your data is used » figure toujours sur la page, avec des liens vers la politique de confidentialité d’Upload-Post et [email protected]. Par défaut, elle désigne TONVI TECH SL, la société derrière Upload-Post, comme sous-traitant des données. Vous pouvez réécrire le texte avec ui_labels, mais l’encadré et ces liens restent.
Couleurs, titre de l’onglet et votre tableau de bord
Vous choisissez clair ou sombre, pas une couleur de marque : les boutons gardent l’indigo d’Upload-Post. Le titre et l’icône de l’onglet du navigateur sont ceux d’Upload-Post. Le tableau de bord sur lequel votre équipe se connecte est Upload-Post, pas une application renommée à votre marque.
Pourquoi ne pas développer les intégrations vous-même ?
Les intégrations directes, ce sont des validations d’application chez Meta et TikTok, une logique de renouvellement des jetons et des changements d’API qui cassent tout, pour chaque réseau. Avec une seule API, vous avez tous les réseaux derrière un seul point d’accès et la page de connexion en plus.
Agences
Un profil par client, votre marque sur le lien de connexion, publications et programmation au même endroit
Plateformes SaaS
Ajoutez la publication sur les réseaux sociaux à votre produit sans développer une intégration par réseau
Outils de création
Laissez vos utilisateurs partager ce qu’ils créent directement sur leurs propres comptes sociaux
Les appels API derrière tout ça
Pour les développeurs qui intègrent cela dans un SaaS ou un outil d’agence. Aucun flux OAuth à développer et aucun identifiant de plateforme à gérer.
Créez un profil pour chaque client ou utilisateur
Un profil regroupe les comptes sociaux d’un client (ou d’un utilisateur de votre application). Utilisez votre propre identifiant interne comme nom d’utilisateur, pour faire la correspondance sans effort.
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"}' Générez l’URL de connexion à votre marque
C’est ici que va la personnalisation : logo, titre, URL de retour, réseaux et le reste des options du tableau ci-dessus. La réponse contient access_url, valable 48 heures.
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"]
}' Le client connecte ses comptes
Envoyez le client ou l’utilisateur sur access_url. Sur les réseaux OAuth comme TikTok, Instagram et YouTube, il s’authentifie directement auprès du réseau, donc Upload-Post ne voit jamais son mot de passe, et les jetons obtenus sont stockés chiffrés.
Ce qu’Upload-Post gère pour vous
Flux OAuth 2.0
Renouvellement des jetons
Stockage chiffré
Publiez ou programmez en son nom
Indiquez le nom d’utilisateur du profil dans user dans n’importe quelle requête d’upload. Ajoutez scheduled_date pour publier plus tard plutôt que tout de suite.
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=Nouvelle carte d'automne" \
-F "platform[]=tiktok" \
-F "platform[]=instagram" \
-F "scheduled_date=2026-10-02T09:00:00Z" Une clé API, un profil par client
Tous vos clients sont sous un seul compte et une seule clé API, chacun dans son propre profil avec ses propres comptes sociaux.
Comment fonctionnent les profils
Chaque profil connecte un compte par réseau. Votre offre fixe le nombre de profils, et les profils ne plafonnent pas les comptes sociaux : avec Professional, vous pouvez avoir 25 comptes TikTok, 25 comptes Instagram et 25 comptes LinkedIn connectés en même temps.
- Identifiants séparés : les jetons sociaux de chaque client n’appartiennent qu’à son profil
- Un webhook par client : donnez à chaque profil sa propre URL pour les événements de connexion et d’upload
- Une seule facture : un seul abonnement couvre tous vos clients
Exemple de configuration
| Offre | Profils inclus | Facturation mensuelle | Facturation annuelle |
|---|---|---|---|
| Professional | 25 | 50 $/mois | 33 $/mois (400 $/an) |
| Advanced | 75 | 147 $/mois | 118 $/mois (1 411 $/an) |
| Business | 225, puis 1 $/mois par profil supplémentaire | 438 $/mois | 350 $/mois (4 205 $/an) |
Prix en dollars US en septembre 2026. Les prix en euros et les packs de profils supplémentaires pour Professional et Advanced figurent dans la section des tarifs, qui fait toujours foi.
Qui utilise l’intégration réseaux sociaux en marque blanche ?
Plateformes SaaS
CMS, plateformes d’automatisation marketing et logiciels métier.
Agences marketing
Agences de marketing digital et agences de gestion des réseaux sociaux.
Plateformes de contenu
Plateformes de blog, hébergeurs vidéo et outils de création de contenu.
Plateformes éducatives
Plateformes LMS et plateformes de contenus pédagogiques.
Plateformes e-commerce
Marketplaces et solutions e-commerce.
Plateformes vidéo
Hébergeurs vidéo et services de streaming.
Caractéristiques techniques et conformité
Plateformes prises en charge
Plus 11 autres, dont Google Business, Slack, Mastodon et WordPress. Voir les 22 plateformes
Sécurité
Les jetons des réseaux sociaux sont chiffrés au repos.
Sur les réseaux OAuth, les clients se connectent sur l’écran du réseau lui-même. Leur mot de passe ne passe jamais ni par vous ni par Upload-Post.
Chaque lien de connexion n’ouvre qu’un seul profil et expire au bout de 48 heures.
Mettez votre marque sur l’onboarding de vos clients
Créez un profil, cliquez sur Share, envoyez le lien. Votre première page de connexion à votre marque prend quelques minutes.
Gratuit pour commencer, sans carte bancaire. Marque blanche à partir de l’offre Professional.
Réseaux sociaux en marque blanche : FAQ
Les questions que posent les agences et les équipes SaaS avant d’envoyer leur premier lien de connexion à leur marque
Mes clients ont-ils besoin d’un compte Upload-Post ?
Non. Le lien de connexion contient un jeton valable pour ce seul profil client. Votre client l’ouvre, se connecte sur chaque réseau social et c’est terminé. Le lien est valable 48 heures ; ensuite, vous en générez un nouveau.
Puis-je mettre la page de connexion sur mon propre domaine ?
Pas la page hébergée : elle se trouve toujours sur app.upload-post.com/connect et les domaines personnalisés ne sont pas proposés. Si l’adresse compte pour vous, la Connect API vous permet de construire la page sur votre propre site. Même dans ce cas, le réseau renvoie brièvement le client par app.upload-post.com, car c’est l’adresse de retour OAuth enregistrée auprès de chaque plateforme.
Quelles offres incluent la marque blanche ?
Professional, Advanced et Business. Free et Basic ne l’incluent pas. Professional comprend 25 profils, Advanced 75 et Business 225, et sur Business chaque profil supplémentaire coûte 1 $ par mois. Pas d’appel commercial : vous choisissez l’offre sur la page des tarifs.
Combien de comptes client tiennent dans un profil ?
Un profil contient un compte par réseau, donc un profil peut être un client avec Instagram, TikTok, LinkedIn et YouTube connectés. 25 profils, c’est jusqu’à 25 comptes sur chaque réseau, pas 25 comptes au total. Un client avec deux comptes Instagram a besoin de deux profils.
Dois-je renvoyer la personnalisation à chaque nouveau lien ?
Oui, pour le logo, le titre, la description, le texte du bouton, l’URL de retour, les réseaux et la langue. Chaque appel à generate-jwt enregistre exactement ce que vous envoyez, donc un champ omis est effacé sur ce profil. ui_labels, connect_theme, show_calendar et readonly_calendar fonctionnent autrement : ils ne changent que si vous les envoyez.
Mes clients peuvent-ils voir ce qui est programmé ?
Oui. L’onglet calendrier est activé par défaut et affiche les publications programmées pour ce profil. Activez readonly_calendar et le lien devient un calendrier éditorial en lecture seule : le client regarde mais ne peut ni modifier, ni supprimer, ni changer les connexions. Envoyez-le sur /connect/calendar avec le même jeton pour l’ouvrir directement.
Quelles langues la page de connexion prend-elle en charge ?
L’anglais, l’espagnol, l’allemand, le français, le portugais, le polonais et le turc. Vous pouvez imposer une langue par profil avec le paramètre language ou laisser la page suivre le navigateur. Pour toute autre formulation, ui_labels vous permet d’écrire le texte vous-même.
Comment savoir quand un client a connecté un compte ?
Avec les webhooks. Upload-Post envoie les événements social_account_connected, social_account_disconnected, social_account_reauth_required et upload_completed. Chaque profil peut avoir sa propre URL de webhook, donc chaque client peut remonter vers un point d’accès différent de votre système.
Puis-je récupérer les statistiques par client ?
Oui. Le point d’accès analytics prend le nom d’utilisateur du profil, vous obtenez donc les chiffres d’un client à la fois et pouvez construire vos propres rapports par-dessus.
Proposez-vous des SDK ?
Il existe des SDK officiels pour Python (pip install upload-post) et JavaScript/Node (npm install upload-post). Pour le reste, c’est une API REST classique avec une clé API, donc tout langage ou outil no-code capable d’envoyer des requêtes HTTP fonctionne.
Combien de temps prend la mise en place ?
Sans code : créez un profil dans Manage Users, cliquez sur Share, remplissez votre personnalisation et envoyez le lien. Avec l’API, ce sont deux appels, un pour créer le profil et un pour générer le lien, plus les appels d’upload dont vous avez déjà besoin pour publier.
Quel support vais-je recevoir ?
Une documentation avec des exemples de code pour chaque point d’accès, et un support par e-mail à [email protected]. Advanced et Business incluent le support prioritaire.
Pour aller plus loin : API User Profiles, Connect API, Webhooks et SDK.