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

Ottieni un link di connessione

Restituisce un URL ospitato di breve durata che guida un utente finale nel collegamento di una piattaforma social a un brand.

Richiede una chiave API. Consulta Autenticazione per il formato dell’header e la rotazione delle chiavi.

Parametri

Percorso

NomeTipoObbligatorioDescrizione
brandIdstringobbligatorioBrand UUID the connection will be attached to.

Corpo

NomeTipoObbligatorioDescrizione
channelstringobbligatorioPlatform to connect: `FACEBOOK`, `INSTAGRAM`, `TWITTER` (X), `LINKEDIN` or `PINTEREST`.
redirectUrlstringobbligatorioAbsolute https URL in your application the user is returned to when the flow finishes. Must be a URL you control.
errorUrlstringfacoltativoAbsolute https URL the user is returned to if they cancel or the platform rejects the authorization. Defaults to `redirectUrl` when omitted.
statestringfacoltativoOpaque 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.

Richiesta di esempio

Corpo pronto da incollare. Sostituisci gli ID e i valori segnaposto con i tuoi.

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

Risposte

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

Genera un URL di breve durata che collega una piattaforma social a un brand. Non gestisci mai le credenziali OAuth della piattaforma: reindirizza l'utente finale al valore url restituito; l'utente completa la schermata di consenso della piattaforma e sceglie la Pagina, la bacheca o l'organizzazione su cui pubblicare, quindi viene reindirizzato al tuo redirectUrl.

Questa è l'unica operazione di scrittura di Social con un corpo senza annidamento. Ogni altra operazione di scrittura nella Social API è racchiusa in un oggetto input; questa no. Invia channel, redirectUrl e, facoltativamente, errorUrl e state al livello principale.

Caso d'uso: connessione autonoma dei canali all'interno del tuo prodotto. Mostra all'utente le cinque piattaforme e, quando ne sceglie una, chiama questo endpoint con il relativo channel e un state che identifichi la sua sessione. Reindirizzalo a url. Quando torna al tuo redirectUrl con status=success, interroga periodicamente GET /social/brands/{brandId}/connections finché non compare il nuovo canale, quindi consentigli di comporre il suo primo post con POST /social/posts.

Dove viene reindirizzato l'utente

Al termine del flusso, l'utente viene reindirizzato al tuo redirectUrl (o errorUrl) con i parametri di query aggiunti:

ParametroSempre presenteDescrizione
statussìsuccess o error.
brandIdsìIl brand a cui è stata associata la connessione. Corrisponde al parametro di percorso utilizzato nella chiamata.
platformsìLa piattaforma collegata, e.g. INSTAGRAM.
statesolo se ne hai inviato unoIl tuo valore opaco, restituito invariato.
connectedAccountIdsolo in caso di status=successUUID della nuova connessione, lo stesso id che compare nell'elenco delle connessioni.
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

Note.

  • Il link scade. expiresIn ne indica la durata in secondi. È monouso: generalo nel momento in cui l'utente fa clic su "collega", non in anticipo, e non memorizzarlo mai. Se l'utente abbandona il flusso, chiama nuovamente questo endpoint per ottenere un nuovo URL.
  • La connessione viene creata in modo asincrono. L'utente torna al tuo redirectUrl un istante prima che esista la riga della connessione, quindi una lettura dell'elenco delle connessioni eseguita immediatamente al ritorno può legittimamente non includerla. Interroga periodicamente l'elenco delle connessioni per alcuni secondi invece di considerare la prima lettura vuota come un errore.
  • Instagram richiede un account Business o Creator collegato a una Pagina Facebook. Un account Instagram personale non può essere collegato e non verrà proposto nella schermata di consenso della piattaforma. Se i tuoi utenti riscontrano questo problema, chiedi loro di convertire l'account nell'app Instagram e collegarlo alla Pagina che gestiscono, quindi genera nuovamente il link.
  • TWITTER è X. Il valore dell'enum è rimasto TWITTER per compatibilità con le versioni precedenti; il prodotto è X. I valori della piattaforma sono nomi di enum in maiuscolo: l'invio di "instagram" viene rifiutato.
  • redirectUrl e errorUrl devono essere URL https assoluti. Un URL relativo o http viene rifiutato con SY95049.
  • Le connessioni sono la risorsa conteggiata a consumo. Ogni collegamento attinge a un unico contingente condiviso da tutto l'account: 20 connessioni con Social Launch, 125 con Social Growth, più cinque per ogni pacchetto di connessioni da $25/mese, fino a un massimo di 250 gestibile in autonomia. Il numero di brand è illimitato, quindi è sempre questa chiamata, mai la creazione di un brand, a esaurire lo spazio disponibile. Quando il contingente è esaurito, la richiesta del link restituisce status: "failed" con SY95042. Consulta Piani e componenti aggiuntivi e verifica la capacità residua tramite GET /social/limits.
  • Questo è l'equivalente Social del link di connessione a Facebook a livello di sede, ma i due sono prodotti separati e le connessioni effettuate in uno non sono visibili nell'altro.

Operazione di scrittura: non eseguita sull'account reale. La richiesta e la risposta mostrate sono generate a partire dallo schema dell'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"  }'