POST/api/v4/social/brands

Crear una marca

Crea una marca social que agrupa cuentas sociales conectadas y sus publicaciones. Las marcas son ilimitadas en los planes de API.

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.profileNamestringobligatorioDisplay name of the brand. Shown wherever the brand is listed and used as the default author name in the composer.
input.timezoneobjectobligatorioThe brand's timezone as `{ label, tzCode, name, utc }`, all strings. `tzCode` is the one that matters: it is the IANA identifier the API validates and uses to interpret every `scheduleDate` / `scheduleTime` on this brand's posts. The other three are display labels.
input.businessIntentstringopcionalOne or two sentences describing what the business does, used to tailor content suggestions. Defaults to `general` when omitted.
input.categoriesarray of stringsopcionalBusiness categories for the brand, e.g. `["Furniture Store"]`. Defaults to an empty list.
input.siteUrlstringopcionalThe brand's website. Used to enrich content suggestions; setting it also queues a one-off read of the site.
input.logostringopcionalPublic https URL of the brand logo.
input.countryIsostringopcionalTwo-letter ISO country code for the brand, e.g. `US`.
input.biostringopcionalShort brand bio.
input.brandHashtagsarray of stringsopcionalHashtags that belong to the brand, offered as suggestions in the composer.
input.competitorHashtagsarray of stringsopcionalCompetitor hashtags to track alongside the brand's own.
input.contentPreferredLanguagestringopcionalPreferred language for generated content, e.g. `en`.

Solicitud de ejemplo

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

Request body
{  "input": {    "profileName": "Jenny Home",    "timezone": {      "label": "(GMT-05:00) Eastern Time",      "tzCode": "America/New_York",      "name": "Eastern Standard Time",      "utc": "-05:00"    },    "businessIntent": "A family-run home furnishings store selling handmade furniture and textiles.",    "categories": ["Furniture Store", "Home Goods"],    "siteUrl": "https://jennyhome.example",    "countryIso": "US",    "bio": "Handmade furniture for real homes.",    "brandHashtags": ["jennyhome", "handmadefurniture"]  }}

Respuestas

200Brand created. `socialProfile.id` is the `brandId` every other Social endpoint takes.
Response
{  "data": {    "createSocialProfile": {      "success": true,      "error": null,      "socialProfile": {        "id": "6f2c9a41-7b0e-4d55-9a2f-3c8e1d47b902",        "profileName": "Jenny Home",        "archived": false,        "logo": null,        "profileLogo": null,        "siteUrl": "https://jennyhome.example",        "countryIso": "US",        "bio": "Handmade furniture for real homes.",        "businessIntent": "A family-run home furnishings store selling handmade furniture and textiles.",        "categories": ["Furniture Store", "Home Goods"],        "brandHashtags": ["jennyhome", "handmadefurniture"],        "competitorHashtags": [],        "connectedChannelCount": 0,        "timezone": {          "label": "(GMT-05:00) Eastern Time",          "tzCode": "America/New_York",          "name": "Eastern Standard Time",          "utc": "-05:00"        },        "contentPreferredLanguage": "en"      }    }  }}
200Validation failed. The status is still 200: read `success`.
Response
{  "data": {    "createSocialProfile": {      "success": false,      "error": {        "message": "SY90003: timezone.tzCode is not a valid IANA identifier",        "code": "SY90003",        "contextInfo": null      },      "socialProfile": null    }  }}
401Unauthenticated, missing or invalid API key.

Crea una marca: el objeto de nivel superior de la Social API. A una marca le pertenecen las cuentas sociales que conectas a ella y todas las publicaciones realizadas desde esas cuentas. No se puede realizar ninguna otra llamada a la Social API hasta que exista al menos una marca, por lo que esta es la primera solicitud de cualquier integración con la Social API.

Caso de uso: incorporar a un cliente a la publicación en redes sociales. Cuando un cliente se registre en tu producto, crea una marca por cada negocio para el que quiera publicar. Guarda el socialProfile.id devuelto en tu propio registro de ese negocio: es el parámetro de ruta brandId en POST /social/brands/{brandId}/connections/link y GET /social/brands/{brandId}/posts, y el campo socialProfileId del cuerpo de cada publicación que crees. A continuación, dirige al usuario al enlace de conexión alojado para cada plataforma en la que quiera publicar.

Notas.

  • El cuerpo de la solicitud debe estar contenido en un objeto input. Todas las operaciones de escritura de la Social API usan esta estructura, con una excepción: el enlace de conexión acepta un cuerpo sin anidar.
  • Comprueba success, no el estado HTTP. Un fallo de validación —la ausencia de profileName o un timezone.tzCode desconocido— se devuelve como HTTP 200 con success: false y el motivo en error. Considera que la llamada se ha realizado correctamente solo cuando success sea true.
  • Solo profileName y timezone son obligatorios. Los valores predeterminados de businessIntent y categories son general y una lista vacía, respectivamente, por lo que una integración que no tenga campos equivalentes puede omitirlos por completo.
  • timezone.tzCode no es un adorno. Una publicación programada con scheduleDate + scheduleTime se interpreta según la zona horaria de la marca, no la de quien realiza la llamada ni UTC. Cambiarla más adelante no modifica la hora de las publicaciones ya programadas.
  • La marca siempre pertenece a la cuenta asociada a la clave de API. No hay forma de crear una marca en otra cuenta: se ignora cualquier identificador de cuenta incluido en el cuerpo.
  • Los ID de marca son UUID sin codificación adicional. No son los ID de Relay en Base64 que usan Locations y los Posts de ubicaciones, así que no los codifiques ni decodifiques. El mismo ID aparece como parámetro de ruta brandId y como campo socialProfileId del cuerpo: brandId solo se usa como parámetro de URL, nunca como campo del cuerpo.
  • No hay límite de marcas en un plan de API. Las marcas son ilimitadas y no se contabilizan como consumo, por lo que esta llamada nunca se rechaza por haber alcanzado un límite y no necesitas comprobar la capacidad disponible antes de crear una. Lo que se contabiliza son las conexiones: una cuenta social vinculada a una marca en una red. Consulta Planes y complementos para conocer los niveles de conexiones y el precio de un paquete de conexiones, y GET /social/limits para consultar tu capacidad de conexiones disponible antes de dirigir a un usuario a un enlace de conexión.

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.

Request
curl -X POST 'https://listingsapi.com/api/v4/social/brands' \  -H "Authorization: API $LISTINGSAPI_KEY" \  -H 'Content-Type: application/json' \  -d '{    "input": {      "profileName": "Jenny Home",      "timezone": {        "label": "(GMT-05:00) Eastern Time",        "tzCode": "America/New_York",        "name": "Eastern Standard Time",        "utc": "-05:00"      },      "businessIntent": "A family-run home furnishings store selling handmade furniture and textiles.",      "categories": [        "Furniture Store",        "Home Goods"      ],      "siteUrl": "https://jennyhome.example",      "countryIso": "US",      "bio": "Handmade furniture for real homes.",      "brandHashtags": [        "jennyhome",        "handmadefurniture"      ]    }  }'