v1Recursos/Distribuição/postPré-visualizar um pacote de conteúdo

Pré-visualizar um pacote de conteúdo

Valida um pacote para um cliente e informa, item por item, o que uma importação faria. Nada é gravado.

post/api/v1/distribution/packages/preview
distribution:write
Parâmetros de consulta
clientIdstringopcional
O cliente, quando o corpo é um arquivo text/markdown bruto.
Corpo da solicitação
clientIdstringobrigatório
O cliente ao qual o pacote pertence.
manifestobjectopcional
Um manifesto synup.distribution/v1: a campanha, seus arquivos (assets) e uma variante por publicação de destino.
schemastring (synup.distribution/v1)obrigatório
campaignobjectobrigatório
externalIdstringobrigatório
versionintegerobrigatório
titlestringobrigatório
templatestringopcional
subjectstringopcional
canonicalUrlstringopcional
anchorVideoUrlstringopcional
customerReviewRequiredbooleanopcional
allowRawAssetsbooleanopcional
slackobjectopcional
teamIdstringopcional
channelIdstringopcional
threadTsstringopcional
assetsarray of objectobrigatório
idstringobrigatório
rolestring (video | image | cover | captions | document | raw)obrigatório
filenamestringobrigatório
mimestringobrigatório
bytesintegerobrigatório
sha256stringobrigatório
widthintegeropcional
heightintegeropcional
durationSecnumberopcional
languagestringopcional
sourceobjectopcional
urlstringopcional
provenanceobjectopcional
attributionRequiredbooleanopcional
customerReviewRequiredbooleanopcional
variantsarray of objectobrigatório
keystringobrigatório
platformstring (facebook | instagram | linkedin | x | pinterest | threads | bluesky | mastodon | reddit | medium | substack | vimeo | dailymotion | youtube | tiktok)obrigatório
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
Um arquivo Series Markdown, enviado no lugar de manifest.
fileNamestringopcional
O nome do arquivo Markdown. Um nome .md marca a string como Markdown.
filesarray of objectopcional
Tamanho e sha256 de cada arquivo que o Markdown nomeia, associados pelo nome do arquivo. Obrigatório para importar uma série com arquivos; a pré-visualização aceita sem eles.
filenamestringobrigatório
bytesintegerobrigatório
sha256stringobrigatório
widthintegeropcional
heightintegeropcional
durationSecnumberopcional
urlstringopcional
Um link https do qual o Synup busca o arquivo, em vez de você fazer o upload.
intoSeriesIdstringopcional
Importa o arquivo como a próxima versão desta série existente.
Resposta
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
Os erros e avisos do próprio arquivo Markdown, numerados por linha, além das publicações e arquivos que ele nomeia. Erros precisam ser corrigidos; avisos podem ser importados como estão.
titlestringopcional
timezonestringopcional
errorsintegeropcional
warningsintegeropcional
issuesarray of objectopcional
lineintegerobrigatório
A linha no arquivo, contando a partir de 1.
postIndexintegeropcional
A publicação à qual o problema pertence (sua seção ##), contando a partir de 0.
severitystring (error | warning)obrigatório
codestringobrigatório
Um código estável, por exemplo unknown_network, file_not_declared ou past_date.
paramsobjectobrigatório
postsarray of objectopcional
indexintegeropcional
lineintegeropcional
headingstringopcional
keystringopcional
platformstringopcional
includedbooleanopcional
filesarray of objectopcional
filenamestringopcional
assetIdstringopcional
rolestring (video | image | cover | captions | document)opcional
mimestringopcional
lineintegeropcional
attachedbooleanopcional
Erros
400Falta um parâmetro obrigatório na solicitação, ou ela é inválida de outra forma.
401Chave de API ausente, inválida, expirada ou revogada.
403A chave não tem a permissão exigida, ou não está autorizada para este cliente/local.
404O recurso não foi encontrado, ou não pertence à sua agência.
409A solicitação entra em conflito com o estado atual do recurso — por exemplo, alterar o e-mail ou telefone de um destinatário que já recebeu uma mensagem, ou um convite de equipe que já foi aceito (ou que ainda não foi aceito).
429Muitas solicitações. Tente novamente após o número de segundos indicado no cabeçalho Retry-After.
post/api/v1/distribution/packages/preview
Sua chave de API
clientId
Corpo da solicitação*
{
  "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
    }
  }
}

Novo na API da Synup?