/api/v4/social/brandsCrear una marca
Crea una marca social que agrupa cuentas sociales conectadas y sus publicaciones. Las marcas son ilimitadas en los planes de API.
Parámetros
Cuerpo
| Nombre | Tipo | Obligatorio | Descripción |
|---|---|---|---|
| input | object | obligatorio | Wrapper object. Every field below is a property of `input`, the entire body must be nested under it. |
| input.profileName | string | obligatorio | Display name of the brand. Shown wherever the brand is listed and used as the default author name in the composer. |
| input.timezone | object | obligatorio | The 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.businessIntent | string | opcional | One or two sentences describing what the business does, used to tailor content suggestions. Defaults to `general` when omitted. |
| input.categories | array of strings | opcional | Business categories for the brand, e.g. `["Furniture Store"]`. Defaults to an empty list. |
| input.siteUrl | string | opcional | The brand's website. Used to enrich content suggestions; setting it also queues a one-off read of the site. |
| input.logo | string | opcional | Public https URL of the brand logo. |
| input.countryIso | string | opcional | Two-letter ISO country code for the brand, e.g. `US`. |
| input.bio | string | opcional | Short brand bio. |
| input.brandHashtags | array of strings | opcional | Hashtags that belong to the brand, offered as suggestions in the composer. |
| input.competitorHashtags | array of strings | opcional | Competitor hashtags to track alongside the brand's own. |
| input.contentPreferredLanguage | string | opcional | Preferred language for generated content, e.g. `en`. |
Solicitud de ejemplo
Cuerpo listo para pegar. Sustituye los ID y valores de ejemplo por los tuyos.
{ "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.
{ "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`.
{ "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 deprofileNameo untimezone.tzCodedesconocido— se devuelve comoHTTP 200consuccess: falsey el motivo enerror. Considera que la llamada se ha realizado correctamente solo cuandosuccessseatrue. - Solo
profileNameytimezoneson obligatorios. Los valores predeterminados debusinessIntentycategoriessongeneraly una lista vacía, respectivamente, por lo que una integración que no tenga campos equivalentes puede omitirlos por completo. timezone.tzCodeno es un adorno. Una publicación programada conscheduleDate+scheduleTimese 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
brandIdy como camposocialProfileIddel cuerpo:brandIdsolo 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/limitspara 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.
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" ] } }'