POST/api/v4/social/connections/disconnect

Disconnect a connection

Takes a connected social account offline immediately; its slot in the account-wide pool is held until the end of the billing period.

Requires an API key. See Authentication for header format and key rotation.

Parameters

Body

NameTypeRequiredDescription
inputobjectrequiredWrapper object. The entire request body must be nested under `input`.
input.socialProfileConnectedChannelIdstringrequiredUUID of the connection to remove, the `id` of a row from GET /social/brands/{brandId}/connections.

Sample request

Ready-to-paste body. Replace placeholder IDs and values with yours.

Request body
{  "input": {    "socialProfileConnectedChannelId": "b81d5b3c-4a90-4f6a-9c11-71e0dd2fa4a7"  }}

Responses

200Connection removed.
Response
{  "data": {    "disconnectSocialConnectedChannel": {      "success": true,      "error": null    }  }}
200The connection could not be removed, most often because it belongs to a different brand (`SY95052`) or has already been disconnected. The status is still 200: read `success`.
Response
{  "data": {    "disconnectSocialConnectedChannel": {      "success": false,      "error": {        "message": "SY95052: Connected channel does not belong to this brand",        "code": "SY95052",        "contextInfo": null      }    }  }}
401Unauthenticated, missing or invalid API key.

Removes one connected social account from its brand. The brand is not addressed directly: the connection ID identifies both. This is a one-way operation, with no cancel window and no undo. To restore the channel, issue a fresh connection link and have the user re-authorize.

Use case: a client revokes access to one channel. When a customer removes a Page from your control, disconnect that channel so scheduled posts stop trying to publish to it. Read the id from the brand's connections, disconnect it, then re-read the list to confirm.

Notes.

  • The request body must be wrapped in an input object. The field is socialProfileConnectedChannelId — the connection's own UUID, not the platform's connectedAccountId and not the brand ID.
  • Check success, not the HTTP status. A connection that belongs to a different brand, or that has already gone, returns HTTP 200 with success: false. The payload carries no ID, so keep your own record of which connection you asked to remove.
  • Mind the near-miss. This body field is socialProfileConnectedChannelId, with Profile in the middle. The adjacent insights endpoint takes socialConnectedChannelId — the same ID, one word shorter. They are one word apart and neither accepts the other's name.
  • Scheduled posts are not cancelled. A post that was scheduled to this channel will fail at publish time with SY95045 rather than being dropped. Cancel it first with POST /social/posts/cancel if you do not want the failure.
  • Already-published posts stay live. Disconnecting removes Synup's ability to publish and to read insights; it does not delete anything from the platform.
  • The slot returns to the pool at renewal, not on success. GET /social/limits shows this straight away as a lower usage.connectionsActive and a higher usage.connectionsReleased, with usage.connections — the billable number the cap is applied to — unchanged until the billing period turns. usage.connectionsReleased is how much capacity comes back at renewal. See Plans and add-ons.
  • Relinking the same account to the same brand is free. Reconnecting a social account you disconnected from that brand earlier in the same period reuses its existing slot: it moves back out of connectionsReleased into connectionsActive and the billable connections does not change. A slot is held per brand-and-account pair, so a different social account costs a new slot, and so does the same account on a different brand.
  • Archiving a brand disconnects every connection on it, so you do not need to call this first when archiving. The slots are held to period end there too — the release path makes no difference.

Write operation: not executed against the live account. The request and response shown are built from the API schema.

Request
curl -X POST 'https://listingsapi.com/api/v4/social/connections/disconnect' \  -H "Authorization: API $LISTINGSAPI_KEY" \  -H 'Content-Type: application/json' \  -d '{    "input": {      "socialProfileConnectedChannelId": "b81d5b3c-4a90-4f6a-9c11-71e0dd2fa4a7"    }  }'