/api/v4/social/brands/{brandId}/connections/linkObtener un enlace de conexión
Devuelve una URL alojada de corta duración que guía al usuario final para conectar una plataforma social a una marca.
Parámetros
Ruta
| Nombre | Tipo | Obligatorio | Descripción |
|---|---|---|---|
| brandId | string | obligatorio | Brand UUID the connection will be attached to. |
Cuerpo
| Nombre | Tipo | Obligatorio | Descripción |
|---|---|---|---|
| channel | string | obligatorio | Platform to connect: `FACEBOOK`, `INSTAGRAM`, `TWITTER` (X), `LINKEDIN` or `PINTEREST`. |
| redirectUrl | string | obligatorio | Absolute https URL in your application the user is returned to when the flow finishes. Must be a URL you control. |
| errorUrl | string | opcional | Absolute https URL the user is returned to if they cancel or the platform rejects the authorization. Defaults to `redirectUrl` when omitted. |
| state | string | opcional | Opaque string echoed back on the return URL unchanged. Use it to correlate the return with the session that started the flow; it is not validated or interpreted. |
Solicitud de ejemplo
Cuerpo listo para pegar. Sustituye los ID y valores de ejemplo por los tuyos.
{ "channel": "INSTAGRAM", "redirectUrl": "https://app.example.com/social/connected", "errorUrl": "https://app.example.com/social/connect-failed", "state": "sess_9f2c1e64"}Respuestas
200Link generated. Redirect the end user to `url`; `expiresIn` is how many seconds it stays valid.
{ "data": { "connectSocialAccount": { "status": "success", "url": "https://social.listingsapi.com/connect/start?token=bfac8e06-8d72-4810-9c50-ae7ee12a7b52", "title": null, "token": null, "expiresIn": 900 } }}200The link could not be issued. `status` is `failed` and `title` carries the reason: most often the account is at its connection cap (`SY95042`, counted on billable connections, so recent disconnects have not freed room) or the platform is not enabled for the account (`SY95044`).
{ "data": { "connectSocialAccount": { "status": "failed", "url": null, "title": "SY95042: Connection limit reached for this account", "token": null, "expiresIn": null } }}401Unauthenticated, missing or invalid API key.
404No brand with that ID on this account (`SY95043`).
Emite una URL de corta duración que conecta una plataforma social a una marca. Nunca gestionas las credenciales OAuth de la plataforma: redirige al usuario final a la url devuelta para que complete la pantalla de consentimiento de la plataforma y elija la página, el tablero o la organización donde publicar, tras lo cual se le redirige a tu redirectUrl.
Esta es la única operación de escritura de Social con un cuerpo sin anidamiento. Todas las demás operaciones de escritura de la Social API están envueltas en un objeto input; esta no. Envía channel, redirectUrl y, opcionalmente, errorUrl y state en el nivel superior.
Caso de uso: conexión de canales por parte del propio usuario dentro de tu producto. Muestra al usuario las 5 plataformas y, cuando elija una, llama a este endpoint con ese channel y un state que identifique su sesión. Redirígelo a url. Cuando vuelva a tu redirectUrl con status=success, consulta periódicamente GET /social/brands/{brandId}/connections hasta que aparezca el nuevo canal y, después, permítele redactar su primera publicación con POST /social/posts.
Adónde se redirige al usuario
Cuando finaliza el flujo, se redirige al usuario a tu redirectUrl (o errorUrl) con parámetros de consulta añadidos:
https://app.example.com/social/connected ?status=success &brandId=6f2c9a41-7b0e-4d55-9a2f-3c8e1d47b902 &platform=INSTAGRAM &state=sess_9f2c1e64 &connectedAccountId=b81d5b3c-4a90-4f6a-9c11-71e0dd2fa4a7Notas.
- El enlace caduca.
expiresIncontiene su tiempo de validez en segundos. Es de un solo uso: emítelo en el momento en que el usuario haga clic en "conectar", no antes, y nunca lo almacenes. Si el usuario abandona el flujo, vuelve a llamar a este endpoint para obtener una nueva URL. - La conexión se materializa de forma asíncrona. El usuario vuelve a tu
redirectUrlun instante antes de que exista el registro de la conexión, por lo que una consulta de la lista de conexiones realizada inmediatamente después de su regreso puede devolver un resultado sin ella de forma válida. Consulta periódicamente la lista de conexiones durante unos segundos en lugar de considerar la primera consulta vacía como un fallo. - Instagram requiere una cuenta de empresa o de creador vinculada a una página de Facebook. No se puede conectar una cuenta personal de Instagram, y la pantalla de consentimiento de la plataforma no ofrecerá ninguna. Si tus usuarios se encuentran con este problema, pídeles que conviertan la cuenta en la aplicación de Instagram y la vinculen a la página que administran; después, vuelve a emitir el enlace.
TWITTERes X. El valor de la enumeración se mantuvo comoTWITTERpor compatibilidad con versiones anteriores; el producto es X. Los valores de plataforma son nombres de enumeración en mayúsculas: si envías"instagram", se rechaza la solicitud.redirectUrlyerrorUrldeben ser URL absolutas de tipohttps. Una URL relativa o de tipohttpse rechaza conSY95049.- Las conexiones son el recurso cuyo uso se contabiliza. Cada vinculación consume capacidad de un único cupo compartido por toda la cuenta: 20 conexiones en Social Launch, 125 en Social Growth, más 5 por cada paquete de conexiones de $25/mes, hasta un máximo de 250 mediante autoservicio. Las marcas en sí son ilimitadas, por lo que siempre es esta llamada, nunca la de creación de marcas, la que se queda sin capacidad. Cuando el cupo está completo, la solicitud del enlace devuelve
status: "failed"conSY95042. Consulta Planes y complementos y comprueba tu capacidad disponible enGET /social/limits. - Este es el equivalente en Social del enlace de conexión de Facebook a nivel de ubicación, pero son 2 productos independientes y las conexiones realizadas en uno no son visibles en el otro.
Operación de escritura: no se ejecuta en la cuenta real. La solicitud y la respuesta que se muestran se construyen a partir del esquema de la API.
curl -X POST 'https://listingsapi.com/api/v4/social/brands/<brandId>/connections/link' \ -H "Authorization: API $LISTINGSAPI_KEY" \ -H 'Content-Type: application/json' \ -d '{ "channel": "INSTAGRAM", "redirectUrl": "https://app.example.com/social/connected", "errorUrl": "https://app.example.com/social/connect-failed", "state": "sess_9f2c1e64" }'