Synupv1
Crear clave
v1Recursos/Posts

Posts

Cree, lea y publique publicaciones sociales y de Google Business Profile.

Devuelve las publicaciones de una ubicación, empezando por las creadas más recientemente, con el estado de envío por plataforma y estadísticas agregadas.

Listar publicaciones

get/api/v1/posts
posts:read
Parámetros de consulta
locationIdstringobligatorio
La ubicación cuyas publicaciones se listan. Obligatorio.
platformstringopcional
Restringe los resultados a publicaciones enviadas a esta plataforma.
typestring (announcement | event | offer)opcional
Restringe los resultados a un tipo de publicación.
statusstringopcional
Restringe los resultados a un estado de publicación.
fromstringopcional
Incluye solo publicaciones creadas en esta fecha o después.
tostringopcional
Incluye solo publicaciones creadas en esta fecha o antes.
searchstringopcional
Coincidencia sin distinción de mayúsculas con el nombre de la publicación.
pageintegeropcional
Número de página, empezando en 1. El valor predeterminado es 1.
perPageintegeropcional
Resultados por página, hasta 50. El valor predeterminado es 20.
Respuesta
dataobjectopcional
rowsarray of objectopcional
Las publicaciones que coinciden.
idstringopcional
Identificador único de la publicación.
namestringopcional
Nombre o etiqueta interna de la publicación.
typestringopcional
Tipo de publicación: announcement, event u offer.
statusstringopcional
Estado del ciclo de vida de la publicación: draft, scheduled, active o error.
postDatestringopcional
Fecha programada o de creación de la publicación, como marca de tiempo ISO 8601.
platformsarray of stringopcional
Las plataformas a las que apunta esta publicación.
firstMediaUrlstringopcional
URL del primer elemento multimedia de la publicación, o null.
firstMediaTypestringopcional
Tipo del primer elemento multimedia de la publicación (image o video), o null.
submissionsarray of objectopcional
Estado de envío por plataforma para esta publicación.
platformstringopcional
La plataforma a la que corresponde esta fila.
statusstringopcional
Estado de este envío a la plataforma: pending, active, error o deleted.
postLinkstringopcional
URL pública de la publicación publicada en esta plataforma, o null.
reviewStatestringopcional
Estado de moderación de Google (processing, live, rejected), o null para otras plataformas.
errorMessagestringopcional
Mensaje de error si este envío falló, o null.
messagePreviewstringopcional
Los primeros 140 caracteres del texto de la publicación, o null.
viewsnumberopcional
Total de vistas, o null si aún no está disponible.
clicksnumberopcional
Total de clics, o null si aún no está disponible.
errorMsgstringopcional
Mensaje de error del primer envío fallido, o null.
deletedOnstringopcional
Cuándo se retiró esta publicación, como marca de tiempo ISO 8601, o null.
totalnumberopcional
Número total de publicaciones que coinciden.
statsobjectopcional
Estadísticas agregadas de las publicaciones que coinciden.
totalPostsnumberopcional
Número de publicaciones que coinciden.
totalViewsnumberopcional
Total de vistas de las publicaciones que coinciden, o null.
totalClicksnumberopcional
Total de clics de las publicaciones que coinciden, o null.
totalEngagementnumberopcional
Total de reacciones, veces compartido y comentarios combinados de las publicaciones que coinciden.
Errores
400A la solicitud le falta un parámetro obligatorio o es inválida de otra forma.
401La clave de API falta, es inválida, expiró o fue revocada.
403A la clave le falta el permiso requerido, o no está autorizada para este cliente/ubicación.
429Demasiadas solicitudes. Reintente tras el número de segundos indicado en el encabezado Retry-After.
get/api/v1/posts
Su clave de API
locationId *
platform
type
status
from
to
search
page
perPage
{
  "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
    }
  }
}
v1Recursos/Posts/postCrear una publicación

Crea una publicación para una ubicación o cliente y la envía a las plataformas seleccionadas. Esto publica contenido real: a menos que se indique scheduledFor o draft sea true, la publicación se activa de inmediato en sus plataformas de destino. Una plataforma solicitada sin conexión activa, o una publicación a la que le falte un campo obligatorio para publicarse, nunca hace fallar la llamada — el contenido se guarda como borrador en su lugar; consulte el esquema de la respuesta para ver cómo se informa esto.

Crear una publicación

post/api/v1/posts
posts:write
Cuerpo de la solicitud
locationIdstringopcional
La ubicación a la que se publica. Indique esta o clientId.
clientIdstringopcional
El cliente al que se publica a nivel de marca. Indique este o locationId.
namestringobligatorio
Nombre o etiqueta interna de la publicación. Obligatorio, no vacío.
postTypestring (announcement | event | offer)obligatorio
Tipo de publicación. event y offer son exclusivos de Google.
platformsarray of string (google | facebook | instagram | x | linkedin | pinterest | mastodon | bluesky | threads | tiktok)obligatorio
Plataformas de destino. Se requiere al menos una.
connectionIdsarray of stringopcional
IDs de conexión explícitos por los que publicar, en lugar de resolver plataformas a conexiones.
messageGooglestringopcional
Texto para Google. Obligatorio cuando se selecciona google, salvo que sea draft.
messageFacebookstringopcional
Texto social compartido para cada plataforma seleccionada que no sea Google. Obligatorio salvo que sea draft.
ctaTypestring (learn_more | sign_up | order_online | book | buy | call_now)opcional
Tipo de llamada a la acción.
ctaUrlstringopcional
URL de destino de la llamada a la acción.
mediaUrlsarray of objectopcional
Medios a adjuntar, una entrada por adjunto de plataforma.
urlstringopcional
platformstringopcional
typestring (image | video)opcional
eventTitlestringopcional
Título del evento u oferta. Obligatorio para un evento/oferta de Google, salvo que sea draft.
eventStartAtstringopcional
Hora de inicio del evento u oferta, como marca de tiempo ISO 8601. Obligatorio para un evento/oferta de Google, salvo que sea draft.
eventEndAtstringopcional
Hora de fin del evento u oferta, como marca de tiempo ISO 8601. Debe ser posterior al inicio.
offerTermsstringopcional
Términos de la oferta.
offerCouponCodestringopcional
Código de cupón de la oferta.
offerRedeemUrlstringopcional
URL de canje de la oferta.
scheduledForstringopcional
Publicar en esta marca de tiempo ISO 8601 futura en lugar de inmediatamente.
draftbooleanopcional
Guardar sin publicar. Omite las validaciones de campos obligatorios; las validaciones estructurales (límites, reglas de medios) siguen aplicándose.
Respuesta
dataobjectopcional
Una plataforma solicitada sin conexión activa, o un campo obligatorio que la publicación necesita antes de poder publicarse, nunca hace fallar esta llamada — la publicación se guarda de todos modos. Cuando existe alguna de estas dos brechas, status es "no_connection" o "incomplete" y la publicación viaja debajo como post.{id,status}; en una publicación limpia, el id/status de nivel superior describen la publicación directamente.
idstringopcional
Identificador único de la publicación.
statusstringopcional
Estado del ciclo de vida de la publicación: draft, scheduled, active o error.
missingFieldsarray of stringopcional
Campos aún necesarios antes de que esta publicación pueda activarse, si los hay.
missingPlatformsarray of stringopcional
Plataformas solicitadas sin conexión activa, si las hay.
scopestring (location | client)opcional
Si la brecha de conexión/campo aplica a nivel de ubicación o de cliente.
postobjectopcional
La publicación que se creó o actualizó.
idstringopcional
Identificador único de la publicación.
statusstringopcional
Estado del ciclo de vida de la publicación: draft, scheduled, active o error.
Errores
400A la solicitud le falta un parámetro obligatorio o es inválida de otra forma.
401La clave de API falta, es inválida, expiró o fue revocada.
403A la clave le falta el permiso requerido, o no está autorizada para este cliente/ubicación.
422A la solicitud le falta un parámetro obligatorio o es inválida de otra forma.
429Demasiadas solicitudes. Reintente tras el número de segundos indicado en el encabezado Retry-After.
post/api/v1/posts
Su clave de API
Cuerpo de la solicitud*
{
  "data": {
    "id": "cm_post_abc123",
    "status": "scheduled"
  }
}
v1Recursos/Posts/getObtener analíticas de publicaciones

Devuelve un resumen de analíticas de interacción — totales generales, un desglose por plataforma, series de tendencia y las publicaciones destacadas — a través de las conexiones de plataforma a nivel de marca de un cliente.

Obtener analíticas de publicaciones

get/api/v1/posts/analytics
posts:read
Parámetros de consulta
clientIdstringobligatorio
El cliente a resumir. Obligatorio.
fromstringopcional
Inicio del período del informe. El valor predeterminado es hace 30 días.
tostringopcional
Fin del período del informe. El valor predeterminado es ahora.
Respuesta
dataobjectopcional
summaryobjectopcional
Totales de interacción del período actual.
totalPostsnumberopcional
Número de publicaciones en este período.
totalViewsnumberopcional
Total de vistas en este período.
totalReactionsnumberopcional
Total de reacciones en este período.
totalSharesnumberopcional
Total de veces compartido en este período.
totalCommentsnumberopcional
Total de comentarios en este período.
periodDaysnumberopcional
Duración del período del informe, en días.
prevSummaryobjectopcional
Totales de interacción del período anterior inmediato, de igual duración, para la comparación de variación.
totalPostsnumberopcional
Número de publicaciones en este período.
totalViewsnumberopcional
Total de vistas en este período.
totalReactionsnumberopcional
Total de reacciones en este período.
totalSharesnumberopcional
Total de veces compartido en este período.
totalCommentsnumberopcional
Total de comentarios en este período.
byPlatformarray of objectopcional
Totales de interacción desglosados por plataforma para este período.
platformstringopcional
La plataforma a la que corresponde esta fila.
labelstringopcional
Nombre visible de la plataforma.
totalPostsnumberopcional
Número de publicaciones en este período.
totalViewsnumberopcional
Total de vistas en este período.
totalReactionsnumberopcional
Total de reacciones en este período.
totalSharesnumberopcional
Total de veces compartido en este período.
totalCommentsnumberopcional
Total de comentarios en este período.
prevByPlatformarray of objectopcional
Totales de interacción desglosados por plataforma para el período anterior.
platformstringopcional
La plataforma a la que corresponde esta fila.
labelstringopcional
Nombre visible de la plataforma.
totalPostsnumberopcional
Número de publicaciones en este período.
totalViewsnumberopcional
Total de vistas en este período.
totalReactionsnumberopcional
Total de reacciones en este período.
totalSharesnumberopcional
Total de veces compartido en este período.
totalCommentsnumberopcional
Total de comentarios en este período.
trendobjectopcional
Recuentos diarios de vistas por plataforma a lo largo del período.
datesarray of stringopcional
Las fechas cubiertas por esta tendencia, como cadenas YYYY-MM-DD.
seriesarray of objectopcional
Una entrada por plataforma.
platformstringopcional
La plataforma a la que corresponde esta fila.
labelstringopcional
Nombre visible de la plataforma.
valuesarray of numberopcional
Un valor por fecha en dates, en el mismo orden.
engagementTrendobjectopcional
Vistas, reacciones, veces compartido, comentarios y alcance diarios por plataforma a lo largo del período.
datesarray of stringopcional
Las fechas cubiertas por esta tendencia, como cadenas YYYY-MM-DD.
seriesarray of objectopcional
Una entrada por plataforma.
platformstringopcional
La plataforma a la que corresponde esta fila.
labelstringopcional
Nombre visible de la plataforma.
viewsarray of numberopcional
reactionsarray of numberopcional
sharesarray of numberopcional
commentsarray of numberopcional
reacharray of numberopcional
Valores de alcance diarios, en el mismo orden que dates.
postsTrendobjectopcional
Recuentos diarios de publicaciones enviadas por plataforma a lo largo del período.
datesarray of stringopcional
Las fechas cubiertas por esta tendencia, como cadenas YYYY-MM-DD.
seriesarray of objectopcional
Una entrada por plataforma.
platformstringopcional
La plataforma a la que corresponde esta fila.
labelstringopcional
Nombre visible de la plataforma.
valuesarray of numberopcional
Un valor por fecha en dates, en el mismo orden.
allPostsarray of objectopcional
Los envíos individuales con los que se construye este resumen, ordenados por vistas.
submissionIdstringopcional
Identificador único del envío a la plataforma.
platformstringopcional
La plataforma a la que corresponde esta fila.
platformPostIdstringopcional
El id propio de la plataforma para la publicación publicada, o null.
postLinkstringopcional
URL pública de la publicación publicada en esta plataforma, o null.
publishedAtstringopcional
Cuándo se publicó este envío, como marca de tiempo ISO 8601, o null.
contentPreviewstringopcional
El nombre de la publicación, para mostrar.
totalViewsnumberopcional
Total de vistas en este período.
totalReactionsnumberopcional
Total de reacciones en este período.
totalSharesnumberopcional
Total de veces compartido en este período.
totalCommentsnumberopcional
Total de comentarios en este período.
totalReachnumberopcional
Alcance total de este envío.
engRatenumberopcional
Tasa de interacción — reacciones más veces compartido más comentarios, como porcentaje de las vistas — o null si aún no hay vistas.
Errores
400A la solicitud le falta un parámetro obligatorio o es inválida de otra forma.
401La clave de API falta, es inválida, expiró o fue revocada.
403A la clave le falta el permiso requerido, o no está autorizada para este cliente/ubicación.
429Demasiadas solicitudes. Reintente tras el número de segundos indicado en el encabezado Retry-After.
get/api/v1/posts/analytics
Su clave de API
clientId *
from
to
{
  "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
      }
    ]
  }
}
v1Recursos/Posts/getObtener una publicación

Devuelve una sola publicación, incluido su rendimiento de envío por plataforma.

Obtener una publicación

get/api/v1/posts/{id}
posts:read
Parámetros de consulta
idstringobligatorio
La publicación a consultar.
Respuesta
dataobjectopcional
Puede haber campos internos adicionales que no forman parte del contrato estable — dependa únicamente de los campos documentados aquí.
idstringopcional
Identificador único de la publicación.
namestringopcional
Nombre o etiqueta interna de la publicación.
typestringopcional
Tipo de publicación (duplicado de postType, mantenido por compatibilidad).
statusstring (draft | scheduled | active | error)opcional
Estado del ciclo de vida de la publicación: draft, scheduled, active o error.
postTypestring (announcement | event | offer)opcional
Tipo de publicación: announcement, event u offer.
clientIdstringopcional
ID del cliente al que pertenece esta publicación.
locationIdstringopcional
ID de la ubicación a la que pertenece esta publicación, o null para una publicación a nivel de marca.
locationNamestringopcional
Nombre visible de la ubicación de la publicación, o null.
clientNamestringopcional
Nombre visible del cliente de la publicación, o null.
platformsarray of stringopcional
Las plataformas a las que apunta esta publicación.
messageGooglestringopcional
Texto usado para Google, o null.
messageFacebookstringopcional
Texto social compartido usado por cada plataforma que no sea Google, o null.
ctaTypestringopcional
Tipo de llamada a la acción, o null.
ctaUrlstringopcional
URL de la llamada a la acción, o null.
ctaUrlFacebookstringopcional
URL de llamada a la acción específica de Facebook, o null.
xThreadbooleanopcional
Si el modo de hilo de X está activado (evita el límite de 280 caracteres).
ctaJsonobjectopcional
Configuración sin procesar de llamada a la acción y segmentación por plataforma.
mediaUrlsarray of objectopcional
Medios adjuntos a la publicación, una entrada por adjunto de plataforma.
urlstringopcional
platformstringopcional
typestring (image | video)opcional
eventTitlestringopcional
Título del evento u oferta, o null.
eventStartAtstringopcional
Hora de inicio del evento u oferta, como marca de tiempo ISO 8601, o null.
eventEndAtstringopcional
Hora de fin del evento u oferta, como marca de tiempo ISO 8601, o null.
offerTermsstringopcional
Términos de la oferta, o null.
offerCouponCodestringopcional
Código de cupón de la oferta, o null.
offerRedeemUrlstringopcional
URL de canje de la oferta, o null.
scheduledForstringopcional
Cuándo está programada la publicación para publicarse, como marca de tiempo ISO 8601, o null para publicar de inmediato.
createdAtstringopcional
Fecha de creación de la publicación, como marca de tiempo ISO 8601.
performancearray of objectopcional
Rendimiento de envío por plataforma para esta publicación.
submissionIdstringopcional
Identificador único del envío a la plataforma.
connectionIdstringopcional
ID de la conexión a través de la cual se envió este envío.
sitestringopcional
La plataforma a la que apunta este envío.
viewsnumberopcional
Total de vistas, o null si aún no está disponible.
clicksnumberopcional
Total de clics, o null si aún no está disponible.
reactionsnumberopcional
Total de reacciones.
sharesnumberopcional
Total de veces compartido.
commentsnumberopcional
Total de comentarios.
statusstringopcional
Estado de este envío a la plataforma: pending, active, error o deleted.
platformPostIdstringopcional
El id propio de la plataforma para la publicación publicada, o null.
postLinkstringopcional
URL pública de la publicación publicada en esta plataforma, o null.
reviewStatestringopcional
Estado de moderación de Google (processing, live, rejected), o null para otras plataformas.
errorMessagestringopcional
Mensaje de error si este envío falló, o null.
Errores
401La clave de API falta, es inválida, expiró o fue revocada.
403A la clave le falta el permiso requerido, o no está autorizada para este cliente/ubicación.
404El recurso no se encontró, o no pertenece a su agencia.
429Demasiadas solicitudes. Reintente tras el número de segundos indicado en el encabezado Retry-After.
get/api/v1/posts/{id}
Su clave de API
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
      }
    ]
  }
}
v1Recursos/Posts/patchActualizar una publicación

Actualiza una publicación editable (draft, scheduled, error o active) y reconcilia sus envíos por plataforma para que coincidan. Si la publicación no está programada ni guardada como borrador, esto puede publicar o cambiar lo que ya está activo en sus plataformas.

Actualizar una publicación

patch/api/v1/posts/{id}
posts:write
Parámetros de consulta
idstringobligatorio
La publicación a actualizar.
Cuerpo de la solicitud
locationIdstringopcional
La ubicación a la que se publica. Indique esta o clientId.
clientIdstringopcional
El cliente al que se publica a nivel de marca. Indique este o locationId.
namestringopcional
Nombre o etiqueta interna de la publicación. Obligatorio, no vacío.
postTypestring (announcement | event | offer)opcional
Tipo de publicación. event y offer son exclusivos de Google.
platformsarray of string (google | facebook | instagram | x | linkedin | pinterest | mastodon | bluesky | threads | tiktok)opcional
Plataformas de destino. Se requiere al menos una.
connectionIdsarray of stringopcional
IDs de conexión explícitos por los que publicar, en lugar de resolver plataformas a conexiones.
messageGooglestringopcional
Texto para Google. Obligatorio cuando se selecciona google, salvo que sea draft.
messageFacebookstringopcional
Texto social compartido para cada plataforma seleccionada que no sea Google. Obligatorio salvo que sea draft.
ctaTypestring (learn_more | sign_up | order_online | book | buy | call_now)opcional
Tipo de llamada a la acción.
ctaUrlstringopcional
URL de destino de la llamada a la acción.
mediaUrlsarray of objectopcional
Medios a adjuntar, una entrada por adjunto de plataforma.
urlstringopcional
platformstringopcional
typestring (image | video)opcional
eventTitlestringopcional
Título del evento u oferta. Obligatorio para un evento/oferta de Google, salvo que sea draft.
eventStartAtstringopcional
Hora de inicio del evento u oferta, como marca de tiempo ISO 8601. Obligatorio para un evento/oferta de Google, salvo que sea draft.
eventEndAtstringopcional
Hora de fin del evento u oferta, como marca de tiempo ISO 8601. Debe ser posterior al inicio.
offerTermsstringopcional
Términos de la oferta.
offerCouponCodestringopcional
Código de cupón de la oferta.
offerRedeemUrlstringopcional
URL de canje de la oferta.
scheduledForstringopcional
Publicar en esta marca de tiempo ISO 8601 futura en lugar de inmediatamente.
draftbooleanopcional
Guardar sin publicar. Omite las validaciones de campos obligatorios; las validaciones estructurales (límites, reglas de medios) siguen aplicándose.
Respuesta
dataobjectopcional
Una plataforma solicitada sin conexión activa, o un campo obligatorio que la publicación necesita antes de poder publicarse, nunca hace fallar esta llamada — la publicación se guarda de todos modos. Cuando existe alguna de estas dos brechas, status es "no_connection" o "incomplete" y la publicación viaja debajo como post.{id,status}; en una publicación limpia, el id/status de nivel superior describen la publicación directamente.
idstringopcional
Identificador único de la publicación.
statusstringopcional
Estado del ciclo de vida de la publicación: draft, scheduled, active o error.
missingFieldsarray of stringopcional
Campos aún necesarios antes de que esta publicación pueda activarse, si los hay.
missingPlatformsarray of stringopcional
Plataformas solicitadas sin conexión activa, si las hay.
scopestring (location | client)opcional
Si la brecha de conexión/campo aplica a nivel de ubicación o de cliente.
postobjectopcional
La publicación que se creó o actualizó.
idstringopcional
Identificador único de la publicación.
statusstringopcional
Estado del ciclo de vida de la publicación: draft, scheduled, active o error.
Errores
400A la solicitud le falta un parámetro obligatorio o es inválida de otra forma.
401La clave de API falta, es inválida, expiró o fue revocada.
403A la clave le falta el permiso requerido, o no está autorizada para este cliente/ubicación.
404El recurso no se encontró, o no pertenece a su agencia.
422A la solicitud le falta un parámetro obligatorio o es inválida de otra forma.
429Demasiadas solicitudes. Reintente tras el número de segundos indicado en el encabezado Retry-After.
patch/api/v1/posts/{id}
Su clave de API
id *
Cuerpo de la solicitud
{
  "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": []
  }
}
v1Recursos/Posts/deleteRetirar y eliminar una publicación

Retira una publicación de todas las plataformas a las que se envió — una acción real e inmediata que no se puede deshacer. Solo cuando la retirada tiene éxito en todas las plataformas, la publicación también desaparece de esta API; si alguna plataforma falla, no se archiva nada y la publicación permanece visible para poder reintentar el fallo. Esta API nunca elimina permanentemente el registro de la publicación.

Retirar y eliminar una publicación

delete/api/v1/posts/{id}
posts:write
Parámetros de consulta
idstringobligatorio
La publicación a eliminar.
Respuesta
dataobjectopcional
idstringopcional
Identificador único de la publicación.
okbooleanopcional
Si todos los envíos a las plataformas se retiraron correctamente.
deletednumberopcional
Número de envíos a plataformas retirados correctamente.
failedarray of objectopcional
Envíos a plataformas que no se pudieron retirar, si los hay.
connectionIdstringopcional
ID de la conexión cuya retirada falló.
platformstringopcional
La plataforma a la que corresponde esta fila.
errorstringopcional
Mensaje de error que describe por qué falló la retirada.
Errores
401La clave de API falta, es inválida, expiró o fue revocada.
403A la clave le falta el permiso requerido, o no está autorizada para este cliente/ubicación.
404El recurso no se encontró, o no pertenece a su agencia.
429Demasiadas solicitudes. Reintente tras el número de segundos indicado en el encabezado Retry-After.
delete/api/v1/posts/{id}
Su clave de API
id *
{
  "data": {
    "id": "cm_post_abc123",
    "ok": true,
    "deleted": 2,
    "failed": []
  }
}
v1Recursos/Posts/postPublicar una publicación ahora

Fuerza el envío inmediato de una publicación en borrador o con error, reintentando cualquier envío por plataforma pendiente o fallido. Esto envía contenido real a las plataformas conectadas de la publicación en este momento.

Publicar una publicación ahora

post/api/v1/posts/{id}/publish
posts:write
Parámetros de consulta
idstringobligatorio
La publicación a publicar.
Respuesta
dataobjectopcional
retryingnumberopcional
Número de envíos a plataformas reencolados para su entrega.
Errores
401La clave de API falta, es inválida, expiró o fue revocada.
403A la clave le falta el permiso requerido, o no está autorizada para este cliente/ubicación.
404El recurso no se encontró, o no pertenece a su agencia.
422A la solicitud le falta un parámetro obligatorio o es inválida de otra forma.
429Demasiadas solicitudes. Reintente tras el número de segundos indicado en el encabezado Retry-After.
post/api/v1/posts/{id}/publish
Su clave de API
id *
{
  "data": {
    "retrying": 2
  }
}