Posts
Créez, consultez et publiez des posts sociaux et des posts Google Business Profile.
Renvoie les posts d'un établissement, les plus récemment créés en premier, avec l'état de soumission par plateforme et des statistiques agrégées.
Lister les posts
/api/v1/posts{
"data": {
"rows": [
{
"id": "cm_post_abc123",
"name": "Fall Special Announcement",
"type": "announcement",
"status": "scheduled",
"postDate": "2026-02-10T15:00:00.000Z",
"platforms": [
"google",
"facebook"
],
"firstMediaUrl": "https://cdn.synup.com/uploads/a1/promo.jpg",
"firstMediaType": "image",
"submissions": [
{
"platform": "google",
"status": "pending",
"postLink": null,
"reviewState": null,
"errorMessage": null
},
{
"platform": "facebook",
"status": "pending",
"postLink": null,
"reviewState": null,
"errorMessage": null
}
],
"messagePreview": "Join us this weekend for our fall special — 20% off all services!",
"views": null,
"clicks": null,
"errorMsg": null,
"deletedOn": null
}
],
"total": 1,
"stats": {
"totalPosts": 12,
"totalViews": 4300,
"totalClicks": 210,
"totalEngagement": 96
}
}
}Crée un post pour un établissement ou un client et le soumet aux plateformes sélectionnées. Ceci publie du contenu réel : sauf si scheduledFor est défini ou si draft vaut true, le post est immédiatement mis en ligne sur ses plateformes cibles. Une plateforme demandée sans connexion active, ou un post à qui manque un champ requis pour être mis en ligne, ne fait jamais échouer l'appel — le contenu est plutôt enregistré comme brouillon ; voir le schéma de réponse pour savoir comment cela est signalé.
Créer un post
/api/v1/posts{
"data": {
"id": "cm_post_abc123",
"status": "scheduled"
}
}Renvoie une synthèse des statistiques d'engagement — totaux résumés, répartition par plateforme, séries de tendance et posts les plus performants — à travers les connexions de plateforme de niveau marque d'un client.
Obtenir les statistiques d'un post
/api/v1/posts/analytics{
"data": {
"summary": {
"totalPosts": 18,
"totalViews": 5400,
"totalReactions": 320,
"totalShares": 44,
"totalComments": 61,
"periodDays": 30
},
"prevSummary": {
"totalPosts": 14,
"totalViews": 4100,
"totalReactions": 260,
"totalShares": 30,
"totalComments": 48
},
"byPlatform": [
{
"platform": "facebook",
"label": "Facebook",
"totalPosts": 10,
"totalViews": 3200,
"totalReactions": 210,
"totalShares": 30,
"totalComments": 40
},
{
"platform": "instagram",
"label": "Instagram",
"totalPosts": 8,
"totalViews": 2200,
"totalReactions": 110,
"totalShares": 14,
"totalComments": 21
}
],
"prevByPlatform": [
{
"platform": "facebook",
"label": "Facebook",
"totalPosts": 8,
"totalViews": 2500,
"totalReactions": 170,
"totalShares": 20,
"totalComments": 32
}
],
"trend": {
"dates": [
"2026-01-15",
"2026-01-16"
],
"series": [
{
"platform": "facebook",
"label": "Facebook",
"values": [
4,
6
]
}
]
},
"engagementTrend": {
"dates": [
"2026-01-15",
"2026-01-16"
],
"series": [
{
"platform": "facebook",
"label": "Facebook",
"views": [
180,
210
],
"reactions": [
12,
15
],
"shares": [
2,
3
],
"comments": [
4,
5
],
"reach": [
900,
1100
]
}
]
},
"postsTrend": {
"dates": [
"2026-01-15",
"2026-01-16"
],
"series": [
{
"platform": "facebook",
"label": "Facebook",
"values": [
1,
2
]
}
]
},
"allPosts": [
{
"submissionId": "cm_sub_xyz789",
"platform": "facebook",
"platformPostId": "1234567890",
"postLink": "https://www.facebook.com/1234567890",
"publishedAt": "2026-01-16T14:00:00.000Z",
"contentPreview": "Join us this weekend for our fall special — 20% off all services!",
"totalViews": 890,
"totalReactions": 42,
"totalShares": 6,
"totalComments": 9,
"totalReach": 1450,
"engRate": 0.064
}
]
}
}Renvoie un seul post, y compris sa performance de soumission par plateforme.
Obtenir un post
/api/v1/posts/{id}{
"data": {
"id": "cm_post_abc123",
"name": "Fall Special Announcement",
"type": "announcement",
"status": "scheduled",
"postType": "announcement",
"clientId": "cm_client_1",
"locationId": "cm_loc_1",
"locationName": "Acme Dental — Downtown",
"clientName": "Acme Dental",
"platforms": [
"google",
"facebook"
],
"messageGoogle": "Join us this weekend for our fall special — 20% off all services!",
"messageFacebook": "Join us this weekend for our fall special — 20% off all services!",
"ctaType": "learn_more",
"ctaUrl": "https://acmedental.example.com/fall-special",
"ctaUrlFacebook": null,
"xThread": false,
"ctaJson": {
"ctaType": "learn_more",
"ctaUrl": "https://acmedental.example.com/fall-special",
"ctaUrlFacebook": null,
"xThread": false
},
"mediaUrls": [
{
"url": "https://cdn.synup.com/uploads/a1/promo.jpg",
"platform": "facebook",
"type": "image"
}
],
"eventTitle": null,
"eventStartAt": null,
"eventEndAt": null,
"offerTerms": null,
"offerCouponCode": null,
"offerRedeemUrl": null,
"scheduledFor": "2026-02-10T15:00:00.000Z",
"createdAt": "2026-01-20T09:12:00.000Z",
"performance": [
{
"submissionId": "cm_sub_xyz789",
"connectionId": "cm_conn_1",
"site": "facebook",
"views": 890,
"clicks": null,
"reactions": 42,
"shares": 6,
"comments": 9,
"status": "active",
"platformPostId": "1234567890",
"postLink": "https://www.facebook.com/1234567890",
"reviewState": null,
"errorMessage": null
}
]
}
}Met à jour un post modifiable (draft, scheduled, error ou active) et réconcilie ses soumissions par plateforme en conséquence. Si le post n'est ni programmé ni enregistré comme brouillon, cela peut publier ou modifier ce qui est déjà en ligne sur ses plateformes.
Mettre à jour un post
/api/v1/posts/{id}{
"data": {
"id": "cm_post_abc123",
"name": "Fall Special Announcement (updated)",
"type": "announcement",
"status": "scheduled",
"postType": "announcement",
"clientId": "cm_client_1",
"locationId": "cm_loc_1",
"platforms": [
"google",
"facebook"
],
"messageGoogle": "Join us this weekend — now 25% off all services!",
"messageFacebook": "Join us this weekend — now 25% off all services!",
"ctaType": "learn_more",
"ctaUrl": "https://acmedental.example.com/fall-special",
"ctaUrlFacebook": null,
"xThread": false,
"ctaJson": {
"ctaType": "learn_more",
"ctaUrl": "https://acmedental.example.com/fall-special",
"ctaUrlFacebook": null,
"xThread": false
},
"mediaUrls": [
{
"url": "https://cdn.synup.com/uploads/a1/promo.jpg",
"platform": "facebook",
"type": "image"
}
],
"eventTitle": null,
"eventStartAt": null,
"eventEndAt": null,
"offerTerms": null,
"offerCouponCode": null,
"offerRedeemUrl": null,
"scheduledFor": "2026-02-10T15:00:00.000Z",
"createdAt": "2026-01-20T09:12:00.000Z",
"performance": []
}
}Dépublie un post de chaque plateforme sur laquelle il avait été soumis — une action réelle et immédiate, irréversible. Ce n'est que lorsque la dépublication réussit sur toutes les plateformes que le post disparaît aussi de cette API ; si une plateforme échoue, rien n'est archivé et le post reste visible afin que l'échec puisse être retenté. Cette API ne supprime jamais définitivement l'enregistrement du post.
Dépublier et supprimer un post
/api/v1/posts/{id}{
"data": {
"id": "cm_post_abc123",
"ok": true,
"deleted": 2,
"failed": []
}
}Force la soumission immédiate d'un post en brouillon ou en erreur, en relançant les soumissions par plateforme en attente ou échouées. Cela envoie du contenu réel aux plateformes connectées du post, dès maintenant.
Publier un post immédiatement
/api/v1/posts/{id}/publish{
"data": {
"retrying": 2
}
}