/api/v4/social/postsCriar 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.
Parâmetros
Corpo
| Nome | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| input | object | obrigatório | Wrapper object. Every field below is a property of `input`, the entire body must be nested under it. |
| input.socialProfileId | string | obrigatório | UUID 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.name | string | obrigatório | Internal name for the post (not shown to the audience). Used to find it again in lists. |
| input.platforms | array of strings | obrigatório | Platforms to publish to: `FACEBOOK`, `INSTAGRAM`, `TWITTER` (X), `LINKEDIN`, `PINTEREST`. |
| input.content | string | obrigatório | The post body, published to every platform in `platforms`. |
| input.action | string | obrigatório | `DRAFT` to save without publishing, `SCHEDULE` to publish at a future time (requires a schedule), or `PUBLISH` to publish now. |
| input.mediaUrls | array of strings | opcional | Public https image URLs to attach. Instagram and Pinterest require at least one. |
| input.videoUrls | array of strings | opcional | Public https video URLs to attach. |
| input.link | string | opcional | Link to attach to the post where the platform supports one. |
| input.scheduledAt | string | opcional | Publish 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.scheduleDate | string | opcional | Publish date as `YYYY-MM-DD`, interpreted in the **brand's** timezone. Must be sent together with `scheduleTime`. |
| input.scheduleTime | string | opcional | Publish time as `HH:MM` (24-hour), interpreted in the **brand's** timezone. Must be sent together with `scheduleDate`. |
| input.connectedChannelIds | array of strings | opcional | Restrict publishing to specific connections by their `id` from the connections list. Defaults to the brand's active connection for each platform in `platforms`. |
| input.clientReference | string | opcional | Your 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.
{ "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.
{ "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.
{ "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:
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 comoHTTP 200comsuccess: falsee uma entrada no arrayerrorpara cada problema. Nada é criado quandosuccessé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
platformsjá deve ter uma conexão na marca. Uma plataforma sem um canal ativo falha comSY95045; 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
mediaUrlsquando qualquer um deles estiver emplatforms. - 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.
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" } }'