POST/api/v4/social/posts

Criar uma publicação nas redes sociais

Cria uma publicação como rascunho, agendada ou publicada imediatamente nas contas conectadas de uma marca no Facebook, Instagram, X, LinkedIn e Pinterest.

Requer uma chave de API. Consulte Autenticação para ver o formato do cabeçalho e a rotação de chaves.

Parâmetros

Corpo

NomeTipoObrigatórioDescrição
inputobjectobrigatórioWrapper object. Every field below is a property of `input`, the entire body must be nested under it.
input.socialProfileIdstringobrigatórioUUID of the brand publishing the post, the same value used as the `brandId` path token elsewhere. Every platform in `platforms` must already have a connection on this brand.
input.namestringobrigatórioInternal name for the post (not shown to the audience). Used to find it again in lists.
input.platformsarray of stringsobrigatórioPlatforms to publish to: `FACEBOOK`, `INSTAGRAM`, `TWITTER` (X), `LINKEDIN`, `PINTEREST`.
input.contentstringobrigatórioThe post body, published to every platform in `platforms`.
input.actionstringobrigatório`DRAFT` to save without publishing, `SCHEDULE` to publish at a future time (requires a schedule), or `PUBLISH` to publish now.
input.mediaUrlsarray of stringsopcionalPublic https image URLs to attach. Instagram and Pinterest require at least one.
input.videoUrlsarray of stringsopcionalPublic https video URLs to attach.
input.linkstringopcionalLink to attach to the post where the platform supports one.
input.scheduledAtstringopcionalPublish time as an ISO-8601 timestamp with an offset, e.g. `2026-10-02T09:30:00-04:00`. Required when `action` is `SCHEDULE` unless you send `scheduleDate` + `scheduleTime`. Never send both forms.
input.scheduleDatestringopcionalPublish date as `YYYY-MM-DD`, interpreted in the **brand's** timezone. Must be sent together with `scheduleTime`.
input.scheduleTimestringopcionalPublish time as `HH:MM` (24-hour), interpreted in the **brand's** timezone. Must be sent together with `scheduleDate`.
input.connectedChannelIdsarray of stringsopcionalRestrict publishing to specific connections by their `id` from the connections list. Defaults to the brand's active connection for each platform in `platforms`.
input.clientReferencestringopcionalYour own identifier for this post, stored and echoed back. Use it to reconcile the post against your own records without holding onto the returned UUID.

Exemplo de requisição

Corpo pronto para colar. Substitua os IDs e valores de exemplo pelos seus.

Request body
{  "input": {    "socialProfileId": "6f2c9a41-7b0e-4d55-9a2f-3c8e1d47b902",    "name": "Autumn collection launch",    "platforms": ["INSTAGRAM", "FACEBOOK", "LINKEDIN"],    "content": "Our autumn collection lands today. Solid oak, hand-finished, made two blocks from the shop. Come see it in person this weekend.",    "mediaUrls": ["https://cdn.example.com/social/autumn-collection.jpg"],    "link": "https://jennyhome.example/autumn",    "action": "SCHEDULE",    "scheduleDate": "2026-10-02",    "scheduleTime": "09:30",    "clientReference": "campaign-4471-slot-01"  }}

Respostas

200Post accepted. Publishing runs asynchronously, poll GET /social/posts/{postId} for per-channel status.
Response
{  "data": {    "createSimpleSocialMediaPost": {      "success": true,      "error": [],      "socialPostId": "c47a1e58-2b93-4f10-a6d7-58e0c9b12345",      "status": "SCHEDULED"    }  }}
200Validation failed. Nothing was created. The status is still 200: read `success` and the `error` array.
Response
{  "data": {    "createSimpleSocialMediaPost": {      "success": false,      "error": [        {          "message": "SY95045: No connected channel for PINTEREST on this brand",          "code": "SY95045",          "contextInfo": [{ "key": "platform", "value": "PINTEREST" }]        },        {          "message": "SY95046: scheduleTime must be HH:MM in the brand's timezone",          "code": "SY95046",          "contextInfo": null        }      ],      "socialPostId": null,      "status": null    }  }}
401Unauthenticated, missing or invalid API key.
404No brand with that ID on this account (`SY95043`).

Cria uma publicação para uma marca em uma ou mais de suas contas conectadas nas redes sociais. A mesma chamada abrange os três ciclos de vida: salvar um DRAFT, colocar um SCHEDULE na fila ou PUBLISH imediatamente.

Caso de uso: agendar uma campanha a partir do seu próprio calendário. Seu aplicativo já sabe o que um cliente quer dizer e quando. Para cada horário, chame este endpoint com action: "SCHEDULE" e com scheduledAt ou scheduleDate + scheduleTime e passe seu próprio identificador de horário como clientReference para que você possa fazer a conciliação sem armazenar o UUID retornado. Exiba a entrada como pendente até que GET /social/posts/{postId} informe que a publicação está disponível em todos os canais e ofereça um botão de cancelamento vinculado a POST /social/posts/cancel.

A publicação é assíncrona

action: "PUBLISH" não publica antes de responder. A chamada aceita a publicação, retorna um socialPostId e a encaminha para o fluxo de publicação. Para descobrir o que realmente aconteceu, consulte GET /social/posts/{postId} periodicamente e leia o array channels[] por canal: o status de cada entrada é o resultado daquela plataforma específica. Uma publicação pode ter sucesso no Instagram e falhar no LinkedIn na mesma solicitação, portanto, channels[] é a fonte de verdade e o status no nível da publicação é um resumo.

Escolher um agendamento

action: "SCHEDULE" exige exatamente uma de duas formas, nunca ambas:

FormaCamposInterpretado em
Instante absolutoscheduledAt, ISO-8601 com um deslocamento de fuso horário (2026-10-02T09:30:00-04:00)O deslocamento de fuso horário que você enviou
Horário do relógio localscheduleDate (YYYY-MM-DD) e scheduleTime (HH:MM)O fuso horário da marca

Enviar ambas as formas, enviar scheduleDate sem scheduleTime ou enviar um scheduledAt sem deslocamento de fuso horário resulta em rejeição com SY95046. DRAFT e PUBLISH não devem conter nenhum agendamento.

Observações.

  • O corpo da solicitação deve estar encapsulado em um objeto input.
  • Verifique success, não o status HTTP. Falhas de validação são retornadas como HTTP 200 com success: false e uma entrada no array error para cada problema. Nada é criado quando success é false.
  • A marca é identificada no corpo como socialProfileId. brandId é sempre apenas um token no caminho da URL, nunca um campo do corpo.
  • Toda plataforma em platforms já deve ter uma conexão na marca. Uma plataforma sem um canal ativo falha com SY95045; consulte primeiro as conexões da marca e encaminhe o usuário a um link de conexão para qualquer conexão ausente.
  • Os valores de plataforma são os nomes de enum em letras maiúsculas FACEBOOK, INSTAGRAM, TWITTER, LINKEDIN, PINTEREST. TWITTER é o X; o valor manteve seu nome antigo, e um valor em letras minúsculas é rejeitado.
  • O Instagram e o Pinterest não aceitam publicações contendo apenas texto: forneça pelo menos uma entrada em mediaUrls quando qualquer um deles estiver em platforms.
  • Os IDs de publicações são UUIDs simples, não os IDs de relay em Base64 usados pelas publicações de locais.
  • Para mais do que algumas publicações de uma só vez, use POST /social/bulk-posts, que aceita a mesma estrutura de linha e valida todo o lote antecipadamente.

Operação de escrita: não executada na conta real. A solicitação e a resposta exibidas são construídas a partir do esquema da API; esta operação publica em contas reais de redes sociais quando executada.

Request
curl -X POST 'https://listingsapi.com/api/v4/social/posts' \  -H "Authorization: API $LISTINGSAPI_KEY" \  -H 'Content-Type: application/json' \  -d '{    "input": {      "socialProfileId": "6f2c9a41-7b0e-4d55-9a2f-3c8e1d47b902",      "name": "Autumn collection launch",      "platforms": [        "INSTAGRAM",        "FACEBOOK",        "LINKEDIN"      ],      "content": "Our autumn collection lands today. Solid oak, hand-finished, made two blocks from the shop. Come see it in person this weekend.",      "mediaUrls": [        "https://cdn.example.com/social/autumn-collection.jpg"      ],      "link": "https://jennyhome.example/autumn",      "action": "SCHEDULE",      "scheduleDate": "2026-10-02",      "scheduleTime": "09:30",      "clientReference": "campaign-4471-slot-01"    }  }'