v1Recursos/Distribución/postPrevisualizar un paquete de contenido

Previsualizar un paquete de contenido

Valida un paquete para un cliente e informa, elemento por elemento, de lo que haría una importación. No se escribe nada.

post/api/v1/distribution/packages/preview
distribution:write
Parámetros de consulta
clientIdstringopcional
El cliente, cuando el cuerpo es un archivo text/markdown sin procesar.
Cuerpo de la solicitud
clientIdstringobligatorio
El cliente al que pertenece el paquete.
manifestobjectopcional
Un manifiesto synup.distribution/v1: la campaña, sus archivos (assets) y una variante por cada publicación de destino.
schemastring (synup.distribution/v1)obligatorio
campaignobjectobligatorio
externalIdstringobligatorio
versionintegerobligatorio
titlestringobligatorio
templatestringopcional
subjectstringopcional
canonicalUrlstringopcional
anchorVideoUrlstringopcional
customerReviewRequiredbooleanopcional
allowRawAssetsbooleanopcional
slackobjectopcional
teamIdstringopcional
channelIdstringopcional
threadTsstringopcional
assetsarray of objectobligatorio
idstringobligatorio
rolestring (video | image | cover | captions | document | raw)obligatorio
filenamestringobligatorio
mimestringobligatorio
bytesintegerobligatorio
sha256stringobligatorio
widthintegeropcional
heightintegeropcional
durationSecnumberopcional
languagestringopcional
sourceobjectopcional
urlstringopcional
provenanceobjectopcional
attributionRequiredbooleanopcional
customerReviewRequiredbooleanopcional
variantsarray of objectobligatorio
keystringobligatorio
platformstring (facebook | instagram | linkedin | x | pinterest | threads | bluesky | mastodon | reddit | medium | substack | vimeo | dailymotion | youtube | tiktok)obligatorio
connectionIdstringopcional
formatstring (feed | video | reel | short | image | carousel | article | link | text)opcional
textstringopcional
titlestringopcional
descriptionstringopcional
mediaarray of stringopcional
coverstringopcional
captionsstringopcional
firstCommentstringopcional
linkobjectopcional
urlstringopcional
utmobjectopcional
articleobjectopcional
titlestringopcional
subtitlestringopcional
htmlstringopcional
redditobjectopcional
subredditstringopcional
flairstringopcional
postTypestring (text | link | image | video)opcional
tagsarray of stringopcional
videoobjectopcional
privacystringopcional
categorystringopcional
isForKidsbooleanopcional
playlistIdstringopcional
tiktokobjectopcional
disableCommentbooleanopcional
disableDuetbooleanopcional
disableStitchbooleanopcional
brandContentbooleanopcional
suggestedAtstringopcional
timezonestringopcional
customerReviewRequiredbooleanopcional
markdownstringopcional
Un archivo Series Markdown, enviado en lugar de manifest.
fileNamestringopcional
El nombre del archivo Markdown. Un nombre .md marca la cadena como Markdown.
filesarray of objectopcional
Tamaño y sha256 de cada archivo que nombra el Markdown, emparejados por nombre de archivo. Obligatorio para importar una serie con archivos; la previsualización lo acepta sin ellos.
filenamestringobligatorio
bytesintegerobligatorio
sha256stringobligatorio
widthintegeropcional
heightintegeropcional
durationSecnumberopcional
urlstringopcional
Un enlace https desde el que Synup obtiene el archivo, en lugar de que lo subas tú.
intoSeriesIdstringopcional
Importa el archivo como la siguiente versión de esta serie existente.
Respuesta
dataobjectopcional
campaignobjectopcional
versionintegeropcional
versionStatestring (new | unchanged | conflict | older)opcional
itemsarray of objectopcional
kindstring (asset | variant)opcional
refstringopcional
outcomestring (created | revised | unchanged | update_available | published_unchanged | skipped)opcional
postIdstringopcional
assetIdstringopcional
messagesarray of stringopcional
countsobjectopcional
markdownobjectopcional
Los errores y advertencias propios del archivo Markdown, numerados por línea, además de las publicaciones y archivos que nombra. Los errores deben corregirse; las advertencias pueden importarse tal cual.
titlestringopcional
timezonestringopcional
errorsintegeropcional
warningsintegeropcional
issuesarray of objectopcional
lineintegerobligatorio
La línea del archivo, contando desde 1.
postIndexintegeropcional
La publicación a la que pertenece el problema (su sección ##), contando desde 0.
severitystring (error | warning)obligatorio
codestringobligatorio
Un código estable, por ejemplo unknown_network, file_not_declared o past_date.
paramsobjectobligatorio
postsarray of objectopcional
indexintegeropcional
lineintegeropcional
headingstringopcional
keystringopcional
platformstringopcional
includedbooleanopcional
filesarray of objectopcional
filenamestringopcional
assetIdstringopcional
rolestring (video | image | cover | captions | document)opcional
mimestringopcional
lineintegeropcional
attachedbooleanopcional
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.
409La solicitud entra en conflicto con el estado actual del recurso — por ejemplo, cambiar el correo electrónico o el teléfono de un destinatario al que ya se le ha enviado un mensaje, o una invitación de equipo que ya fue aceptada (o que aún no ha sido aceptada).
429Demasiadas solicitudes. Reintente tras el número de segundos indicado en el encabezado Retry-After.
post/api/v1/distribution/packages/preview
Su clave de API
clientId
Cuerpo de la solicitud*
{
  "data": {
    "campaign": {
      "externalId": "topic-local-seo-2026-10",
      "title": "Why local SEO still wins",
      "exists": false,
      "currentVersion": 0,
      "template": "topic",
      "customerReviewRequired": false
    },
    "version": 1,
    "versionState": "new",
    "items": [
      {
        "kind": "asset",
        "ref": "short-1",
        "outcome": "created",
        "messages": []
      },
      {
        "kind": "asset",
        "ref": "short-1-cover",
        "outcome": "created",
        "messages": []
      },
      {
        "kind": "variant",
        "ref": "short-1-linkedin",
        "outcome": "created",
        "messages": []
      },
      {
        "kind": "variant",
        "ref": "short-1-instagram",
        "outcome": "skipped",
        "messages": [
          "account con_999 is not one of this client's instagram accounts"
        ]
      }
    ],
    "counts": {
      "assets": 2,
      "variants": 2,
      "skipped": 0
    }
  }
}

¿Nuevo en la API de Synup?