POST/api/v4/social/brands/{brandId}/connections/link

Obter um link de conexão

Retorna uma URL hospedada de curta duração que orienta o usuário final na conexão de uma plataforma social a uma marca.

Requer uma chave de API. Consulte Autenticação para ver o formato do cabeçalho e a rotação de chaves.

Parâmetros

Caminho

NomeTipoObrigatórioDescrição
brandIdstringobrigatórioBrand UUID the connection will be attached to.

Corpo

NomeTipoObrigatórioDescrição
channelstringobrigatórioPlatform to connect: `FACEBOOK`, `INSTAGRAM`, `TWITTER` (X), `LINKEDIN` or `PINTEREST`.
redirectUrlstringobrigatórioAbsolute https URL in your application the user is returned to when the flow finishes. Must be a URL you control.
errorUrlstringopcionalAbsolute https URL the user is returned to if they cancel or the platform rejects the authorization. Defaults to `redirectUrl` when omitted.
statestringopcionalOpaque 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.

Exemplo de requisição

Corpo pronto para colar. Substitua os IDs e valores de exemplo pelos seus.

Request body
{  "channel": "INSTAGRAM",  "redirectUrl": "https://app.example.com/social/connected",  "errorUrl": "https://app.example.com/social/connect-failed",  "state": "sess_9f2c1e64"}

Respostas

200Link generated. Redirect the end user to `url`; `expiresIn` is how many seconds it stays valid.
Response
{  "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`).
Response
{  "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 uma URL de curta duração que conecta uma plataforma social a uma marca. Você nunca lida com as credenciais OAuth da plataforma: redirecione seu usuário final para o url retornado; ele conclui a tela de consentimento da plataforma, escolhe a Página, o painel ou a organização em que deseja publicar e é redirecionado de volta para o seu redirectUrl.

Esta é a única operação de escrita do Social com um corpo plano. Todas as outras operações de escrita na Social API são encapsuladas em um objeto input; esta não é. Envie channel, redirectUrl e, opcionalmente, errorUrl e state no nível superior.

Caso de uso: conexão de canais por autoatendimento dentro do seu produto. Mostre ao usuário as cinco plataformas e, quando ele escolher uma, chame este endpoint com esse channel e um state que identifique a sessão dele. Redirecione-o para url. Quando ele retornar ao seu redirectUrl com status=success, consulte GET /social/brands/{brandId}/connections periodicamente até que o novo canal apareça e, em seguida, permita que ele escreva sua primeira publicação com POST /social/posts.

Para onde o usuário é redirecionado de volta

Quando o fluxo termina, o usuário é enviado ao seu redirectUrl (ou errorUrl) com parâmetros de consulta adicionados:

ParâmetroSempre presenteDescrição
statussimsuccess ou error.
brandIdsimA marca à qual a conexão foi associada. Corresponde ao parâmetro de caminho usado na sua chamada.
platformsimA plataforma que foi conectada, e.g. INSTAGRAM.
statesomente se você enviou umSeu valor opaco, devolvido sem alterações.
connectedAccountIdsomente em status=successUUID da nova conexão, o mesmo id que aparece na lista de conexões.
Code
https://app.example.com/social/connected  ?status=success  &brandId=6f2c9a41-7b0e-4d55-9a2f-3c8e1d47b902  &platform=INSTAGRAM  &state=sess_9f2c1e64  &connectedAccountId=b81d5b3c-4a90-4f6a-9c11-71e0dd2fa4a7

Observações.

  • O link expira. expiresIn contém seu tempo de validade em segundos. Ele é de uso único: emita-o no momento em que o usuário clicar em "conectar", não com antecedência, e nunca o armazene. Se o usuário abandonar o fluxo, chame este endpoint novamente para obter uma nova URL.
  • A conexão é materializada de forma assíncrona. O usuário retorna ao seu redirectUrl um instante antes de o registro da conexão existir, portanto uma leitura da lista de conexões feita imediatamente após o retorno pode legitimamente não incluí-lo. Consulte a lista de conexões periodicamente por alguns segundos, em vez de tratar a primeira leitura vazia como uma falha.
  • O Instagram exige uma conta comercial ou de criador de conteúdo vinculada a uma Página do Facebook. Uma conta pessoal do Instagram não pode ser conectada, e a tela de consentimento da plataforma não oferecerá essa opção. Se seus usuários encontrarem essa situação, peça que convertam a conta no aplicativo do Instagram e a vinculem à Página que gerenciam; depois, emita o link novamente.
  • TWITTER é o X. O valor do enum permaneceu TWITTER para manter a compatibilidade com versões anteriores; o produto é o X. Os valores de plataforma são nomes de enum em letras maiúsculas — o envio de "instagram" é rejeitado.
  • redirectUrl e errorUrl devem ser URLs https absolutas. Uma URL relativa ou http é rejeitada com SY95049.
  • As conexões são o recurso medido. Cada vínculo consome uma vaga de um único conjunto compartilhado por toda a conta — 20 conexões no Social Launch, 125 no Social Growth, mais cinco para cada pacote de conexões de $25/mês, até o limite de autoatendimento de 250. As marcas em si são ilimitadas, portanto é sempre esta chamada, nunca a criação de marca, que fica sem espaço disponível. Quando todas as vagas estão ocupadas, a solicitação do link retorna status: "failed" com SY95042. Consulte Planos e complementos e confira sua capacidade restante em GET /social/limits.
  • Este é o equivalente no Social ao link de conexão com o Facebook no nível do local, mas os dois são produtos separados, e as conexões feitas em um não são visíveis no outro.

Operação de escrita: não executada na conta real. A solicitação e a resposta mostradas são construídas a partir do esquema da API.

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