POST/api/v4/social/posts

Crear una publicación en redes sociales

Crea una publicación en borrador, programada o inmediata en cuentas de Facebook, Instagram, X, LinkedIn y Pinterest conectadas a una marca.

Requiere una clave de API. Consulta Autenticación para conocer el formato del encabezado y la rotación de claves.

Parámetros

Cuerpo

NombreTipoObligatorioDescripción
inputobjectobligatorioWrapper object. Every field below is a property of `input`, the entire body must be nested under it.
input.socialProfileIdstringobligatorioUUID 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.namestringobligatorioInternal name for the post (not shown to the audience). Used to find it again in lists.
input.platformsarray of stringsobligatorioPlatforms to publish to: `FACEBOOK`, `INSTAGRAM`, `TWITTER` (X), `LINKEDIN`, `PINTEREST`.
input.contentstringobligatorioThe post body, published to every platform in `platforms`.
input.actionstringobligatorio`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.

Solicitud de ejemplo

Cuerpo listo para pegar. Sustituye los ID y valores de ejemplo por los tuyos.

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"  }}

Respuestas

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`).

Crea una publicación para una marca en una o varias de sus cuentas de redes sociales conectadas. La misma llamada abarca los tres ciclos de vida: guardar un DRAFT, poner un SCHEDULE en cola o PUBLISH de inmediato.

Caso de uso: programar una campaña desde tu propio calendario. Tu aplicación ya sabe qué quiere decir un cliente y cuándo. Para cada franja horaria, llama a este endpoint con action: "SCHEDULE" y con scheduledAt o con scheduleDate + scheduleTime, y pasa tu propio identificador de franja horaria como clientReference para poder relacionar los registros sin almacenar el UUID devuelto. Muestra la entrada como pendiente hasta que GET /social/posts/{postId} indique que se ha publicado en todos los canales, y ofrece un botón de cancelación conectado a POST /social/posts/cancel.

La publicación es asíncrona

action: "PUBLISH" no publica antes de responder. La llamada acepta la publicación, devuelve un socialPostId y la entrega al proceso de publicación. Para saber qué ha ocurrido realmente, consulta periódicamente GET /social/posts/{postId} y lee el array channels[] de resultados por canal: el status de cada entrada es el resultado de esa plataforma concreta. Una publicación puede completarse correctamente en Instagram y fallar en LinkedIn dentro de la misma solicitud, por lo que channels[] es la fuente de verdad y el status de la publicación es un resumen.

Elegir una programación

action: "SCHEDULE" requiere exactamente una de estas dos formas, nunca ambas:

FormaCamposSe interpreta según
Instante absolutoscheduledAt, ISO-8601 con un desfase horario (2026-10-02T09:30:00-04:00)El desfase horario que enviaste
Fecha y hora localesscheduleDate (YYYY-MM-DD) y scheduleTime (HH:MM)La zona horaria de la marca

Enviar ambas formas, enviar scheduleDate sin scheduleTime o enviar un scheduledAt sin desfase horario provoca el rechazo con SY95046. DRAFT y PUBLISH no deben incluir ninguna programación.

Notas.

  • El cuerpo de la solicitud debe estar contenido en un objeto input.
  • Comprueba success, no el estado HTTP. Los errores de validación se devuelven como HTTP 200 con success: false y una entrada en el array error por cada problema. No se crea nada cuando success es false.
  • La marca se identifica en el cuerpo como socialProfileId. brandId solo se utiliza como un elemento de la ruta de la URL, nunca como un campo del cuerpo.
  • Cada plataforma de platforms debe tener ya una conexión en la marca. Una plataforma sin un canal activo falla con SY95045; consulta primero las conexiones de la marca y dirige al usuario a un enlace de conexión para cualquier conexión que falte.
  • Los valores de plataforma son los nombres de enumeración en mayúsculas FACEBOOK, INSTAGRAM, TWITTER, LINKEDIN, PINTEREST. TWITTER es X; el valor conservó su nombre anterior y se rechaza cualquier valor en minúsculas.
  • Instagram y Pinterest no aceptan publicaciones que solo contengan texto: proporciona al menos una entrada en mediaUrls cuando cualquiera de las dos esté en platforms.
  • Los IDs de publicación son UUIDs simples, no los IDs relay en Base64 que usan las publicaciones de ubicación.
  • Para crear más de unas pocas publicaciones de una sola vez, usa POST /social/bulk-posts, que acepta la misma estructura de fila y valida todo el lote de antemano.

Operación de escritura: no se ha ejecutado en la cuenta real. La solicitud y la respuesta mostradas se han generado a partir del esquema de la API; al ejecutarse, esta operación publica en cuentas reales de redes sociales.

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"    }  }'