Skip to main content
GET
/
social-accounts
List connected channels
curl --request GET \
  --url http://localhost:4100/api/v1/social-accounts \
  --header 'Authorization: Bearer <token>'
[
  {
    "id": "<string>",
    "workspaceId": "<string>",
    "externalId": "<string>",
    "handle": "<string>",
    "displayName": "<string>",
    "avatarUrl": "<string>",
    "scopes": [
      "<string>"
    ],
    "connectedAt": "2023-11-07T05:31:56Z",
    "lastRefreshedAt": "2023-11-07T05:31:56Z",
    "tokenExpiresAt": "2023-11-07T05:31:56Z",
    "lastRefreshAttemptAt": "2023-11-07T05:31:56Z",
    "lastRefreshError": "<string>",
    "lastRefreshErrorStatus": 123,
    "meta": {},
    "defaultBoardId": "<string>"
  }
]

Authorizations

Authorization
string
header
required

Your Postbreeze API key

Query Parameters

workspaceId
string

Optional. When set, returns accounts in only this workspace. When omitted, returns accounts across every workspace the API key can reach.

Response

Connected channels visible to the caller, newest-connected first.

id
string

Prefixed cuid identifier of the connection.

workspaceId
string

Workspace this account is connected to. Returned on every row so fan-out listings can be grouped client-side without a second call.

platform
enum<string>

Which social platform this account lives on.

Available options:
INSTAGRAM,
FACEBOOK_PAGE,
X,
LINKEDIN_PERSON,
LINKEDIN_COMPANY,
TIKTOK_BUSINESS,
TIKTOK_PERSONAL,
YOUTUBE,
PINTEREST,
THREADS,
BLUESKY
externalId
string

Stable per-platform identifier (e.g. an Instagram user id). Combined with (workspaceId, platform) it's unique across the system.

handle
string

The account's user-facing handle (e.g. @brand).

displayName
string | null

Human-readable name. Some platforms (LinkedIn personal) only surface a real display name post-OAuth; null when unavailable.

avatarUrl
string | null

Profile avatar URL when the platform provides one.

status
enum<string>

Lifecycle status. ACTIVE is publishable; TOKEN_EXPIRED needs a reconnect before the next publish; DISCONNECTED rows are excluded from listings.

Available options:
ACTIVE,
TOKEN_EXPIRED,
REVOKED,
DISCONNECTED
scopes
string[]

OAuth scopes the connection was granted. Used by the publisher to fail fast when a needed scope is missing.

connectedAt
string<date-time>

When the connection was first established.

lastRefreshedAt
string<date-time> | null

Last successful token refresh. Null on accounts whose platform issues non-expiring tokens.

tokenExpiresAt
string<date-time> | null

When the current access token expires. Null when not applicable.

lastRefreshAttemptAt
string<date-time> | null

Last time the worker attempted to refresh tokens for this account, even if it failed.

lastRefreshError
string | null

Latest token-refresh failure reason. Surfaced by the UI to explain why a reconnect is required.

lastRefreshErrorStatus
integer | null

HTTP status code from the last failed refresh, when known.

meta
object

Free-form per-provider metadata (e.g. cached profile fields, Pinterest default board id, X premium flag).

defaultBoardId
string | null

Pinterest only — pre-fills the compose board dropdown when a default was picked at connect time.