Développeurs de produits
Ajoutez la publication à votre produit.
Une application fictive de journal ajoute une action confirmée par l’utilisateur pour programmer des publications sociales et afficher leurs résultats.
VOTRE PRODUIT + SOSOAPI
Parcours d’intégration illustratif- Votre produitPréparer et confirmer
- SosoAPIProgrammer une publication confirmée
- Compte socialSuivre le résultat
Trois étapes
Préparer le contenu
Rassembler le texte et les images dans votre produit.
Laisser les utilisateurs confirmer
Afficher le compte, le contenu et l’heure avant la programmation.
Récupérer les résultats
Afficher la progression et le résultat final de publication.
La publication sociale fait partie de votre produit.
Voir le tutoriel complet
Scénario
Ajoutez une action volontaire et vérifiable « programmer cette actualité » à un produit fictif de journal. Gardez visibles l’espace et le compte connecté exacts de l’utilisateur, et affichez l’état renvoyé sans suggérer une publication par le fournisseur.

Avant de commencer
- Créez et vérifiez votre compte SosoAPI, puis sélectionnez l’espace souhaité.
- Créez une clé API dans App Settings → Agents & API Access. Stockez-la sous SOSOAPI_API_KEY dans l’environnement du serveur ; ces exemples JavaScript utilisent Node.js 20+ et ne nécessitent pas le dépôt source SosoAPI.
- Choisissez un véritable UUID d’espace et de compte social Threads uniquement dans le périmètre actuellement autorisé. Le compte doit être éligible à une publication texte Threads.
- Le propriétaire de la clé API doit avoir l’accès editor ou owner à l’espace choisi. Conservez la clé sur votre serveur, hors du code navigateur, du JSON de requête et des journaux.
Exemples de données d’entrée
- Produit fictif
- Harborlight Journal · concept d’application de journal privé ; aucune intégration réelle n’est revendiquée.
- Intention utilisateur
- Programmer une note produit validée sur un compte Threads sélectionné à une heure locale future.
- Exemple de texte
- « Une petite note pour plus tard : Harborlight Journal fait une place aux réflexions quotidiennes plus courtes. Gardez une pensée ; laissez le reste pour demain. »
- Périmètre requis à l’exécution
- <workspace-uuid> et <threads-social-account-uuid> issus du périmètre actuellement autorisé par l’utilisateur ; ne jamais déduire les identifiants.
- Programmer
- <future ISO-8601 instant with offset>, avec display_timezone défini sur Asia/Hong_Kong.
- Identité de nouvelle tentative
- <unique stable idempotency key for this one user intent> ; réutilisez-la uniquement lors d’une nouvelle tentative sûre de la même requête.
Tutoriel
Concevoir la confirmation du produit avant l’appel API
Ouvrir cette section dans SosoAPIDans SosoAPI, sélectionnez l’espace souhaité et vérifiez son compte connecté. Dans la maquette de votre produit, affichez ces mêmes espace et compte sélectionnés par l’utilisateur au lieu d’en choisir silencieusement.
Présentez la légende exacte, le compte, l’heure locale et le fuseau dans une étape de confirmation. Exigez le choix Schedule par la personne ; ouvrir le formulaire ne doit rien envoyer.
Résultat attendu
Une personne peut voir la cible et l’heure avant l’écriture. La maquette du produit fictif est un exercice de conception, pas une intégration client installée.
Lire les Scheduled Posts actuels depuis votre serveur
Remplacez <workspace-uuid> par l’identifiant de l’espace de travail sélectionné, puis exécutez cette requête en lecture seule sur votre serveur :
const apiKey = process.env.SOSOAPI_API_KEY; if (!apiKey) throw new Error("Configure a SosoAPI API key on your server"); const response = await fetch( "https://gqeshlawtcexsapabaui.supabase.co/functions/v1/studio-api/scheduled-posts/list", { method: "POST", headers: { "Authorization": "Bearer " + apiKey, "Content-Type": "application/json" }, body: JSON.stringify({"workspace_id":"<workspace-uuid>"}) } ); const result = await response.json(); if (!response.ok) throw new Error("SosoAPI request failed: " + response.status); // Use result in your server response; never return or log the API key.Utilisez les données renvoyées pour actualiser la liste de votre produit. Gardez la confirmation de l’utilisateur distincte de cette lecture.
Résultat attendu
Vous recevez les publications actuelles de l’espace de travail ou une erreur d’autorisation/de validation. Cette requête en lecture seule ne crée aucune publication.
Envoyer uniquement après confirmation explicite de l’utilisateur
Ouvrez Calendar et choisissez New Post pour comparer l’étape de validation à la même action dans l’application.
Remplacez chaque valeur de substitution par vos identifiants autorisés, un horodatage ISO futur avec décalage et une clé d’idempotence unique. Vérifiez le compte, le texte et l’heure avant d’exécuter cette requête côté serveur.
const apiKey = process.env.SOSOAPI_API_KEY; if (!apiKey) throw new Error("Configure a SosoAPI API key on your server"); const response = await fetch( "https://gqeshlawtcexsapabaui.supabase.co/functions/v1/studio-api/scheduled-posts/create", { method: "POST", headers: { "Authorization": "Bearer " + apiKey, "Content-Type": "application/json" }, body: JSON.stringify({ "workspace_id": "<workspace-uuid>", "social_account_id": "<threads-social-account-uuid>", "caption": "A small note for later: Harborlight Journal is making room for shorter daily reflections. Keep one thought; leave the rest for tomorrow.", "hashtags": [], "media": [], "provider_payload": {"platform": "threads", "publish_options": {"post_type": "TEXT"}}, "scheduled_at": "<future ISO-8601 instant with offset>", "display_timezone": "Asia/Hong_Kong", "idempotency_key": "<unique-stable-key-for-this-intent>" }) } ); const result = await response.json(); if (!response.ok) throw new Error("SosoAPI request failed: " + response.status); // Use result in your server response; never return or log the API key.Cette requête crée une véritable programmation. Ne l’envoyez qu’après confirmation de l’utilisateur et n’exposez jamais la clé API à un navigateur.
Résultat attendu
Une réponse valide acceptée identifie le Scheduled Post créé ; elle ne prouve pas sa publication par un fournisseur. Une capacité refusée, un périmètre/compte invalide, un contenu non pris en charge ou une programmation rejetée doit apparaître comme une erreur, jamais comme une réussite.
Afficher l’état renvoyé et proposer un suivi sûr à l’utilisateur
Ouvrir cette section dans SosoAPIStockez l’identifiant Scheduled Post renvoyé et affichez son état actuel, sa destination et sa programmation dans le produit.
Donnez à l’utilisateur un lien vers le détail du Scheduled Post correspondant. Si la diffusion nécessite une personne, liez l’élément Needs Attention au lieu de soumettre à nouveau silencieusement.
N’étiquetez pas la requête comme publiée avant l’enregistrement du statut final confirmé par le fournisseur.
Résultat attendu
Le produit distingue l’accusé de réception des observations scheduled, publishing, published, failed et unknown. Les résultats inconnus sont réconciliés avec la publication existante avant toute nouvelle écriture.
Un accusé de réception. Puis un résultat de publication.
Les exemples ci-dessous présentent certains champs de réponse API avec des valeurs fictives. Après la création d’une programmation, enregistrez post.id et utilisez-le pour vérifier le résultat de cette publication.
1. Réponse de création
{
"post": {
"id": "10000000-0000-4000-8000-000000000001",
"status": "scheduled",
"scheduled_at": "2100-01-05T10:00:00+08:00",
"published_at": null,
"permalink": null
},
"deduped": false
}2. Lire la même publication
POST /studio-api/scheduled-posts/get
{
"id": "10000000-0000-4000-8000-000000000001"
}Après confirmation du fournisseur, la réponse détaillée peut inclure :
{
"post": {
"id": "10000000-0000-4000-8000-000000000001",
"status": "published",
"published_at": "2100-01-05T02:00:08Z",
"permalink": "https://www.threads.net/@example/post/EXAMPLE"
},
"delivery": {
"stage": "terminal",
"message": "Published on Threads."
}
}post.status- Utilisez l’état réel, par exemple scheduled, publishing, published ou failed. Si la connexion est interrompue, consultez la même publication avant de conclure sur ce qui s’est passé.
post.permalink- Le lien de la publication chez le fournisseur lorsqu’il est disponible ; il peut être null. L’URL ci-dessus est un exemple.
delivery / outcomes- La réponse détaillée indique la progression de la publication et les résultats disponibles de la plateforme. En cas d’échec, vérifiez ces détails et Needs Attention avant de décider de la suite.
Ce sont des exemples de champs, pas un reçu de publication en direct. Cette page n’effectue aucun appel API.
Signification de chaque statut
SubmittedRéponse à la requête- Votre requête a été reçue. Vérifiez l’état actuel de la publication avant de la considérer comme programmée ou publiée.
ScheduledDétails de la publication- Le Scheduled Post est accepté pour une heure future. Gardez sa destination et son heure programmée visibles pendant l’attente.
PublishingDétails de la publication- La diffusion est en cours. Attendez un résultat final ; un état en cours ne signifie pas réussite.
PublishedDétails de la publication- À utiliser uniquement après l’enregistrement par SosoAPI de la confirmation finale du fournisseur pour le Scheduled Post.
FailedDétails de la publication- Un échec final doit être examiné. Consultez les détails de la publication et l’action disponible avant de décider quoi modifier ou réessayer.
UnknownCe qu’affiche l’application- Si une connexion est interrompue et que le résultat est incertain, consultez Scheduled Posts et Needs Attention avant de soumettre à nouveau.
Guides associés
Le tutoriel inclut des exemples API côté serveur. Configurez vos identifiants autorisés et votre clé API avant de les exécuter ; la page elle-même n’effectue aucune requête.
Essayez votre premier parcours.
Créez votre compte et commencez avec Free.