Version

Identities API

A linked identity is an account you hold on a connector, tied to your Subscriby creator account.

A linked identity is an account you hold on a connector, tied to your Subscriby creator account. It is what lets the platform bot reach you, lets you manage projects from it, and lets the connector's sign-in button sign you in. The dashboard shows the same list under Settings → Security → Linked accounts.

These routes are about the caller's own account, so they live under /v1/me and need no project or team in the path. A member's connected accounts are a different thing, read under Members.

Endpoints

curl https://api.subscriby.net/v1/me/identities \  -H "Authorization: Bearer $SUBSCRIBY_TOKEN"

Every account linked to the caller's creator account, by connector then purpose. Never paginated.

  • purpose is primary (the account that signs you in and receives alerts) or backup (the account registered for Disaster Recovery).
  • source says how the link was proven: handshake (you completed a link from Settings), bot (the account came in through the connector's own flow), backfill (migrated from before connectors), portal or adopted.
  • external_id is the platform's own id for the account, username its handle when the platform has one. Secrets and chat rows are never returned.

Linking has no endpoint. Linking is a two-sided proof: you open it from Settings → Security → Linked accounts and finish it from the account itself, by opening the link or sending the code to the connector's bot. A token cannot stand in for a person on the connector, so there is nothing to POST here.

GET
/v1/me/identities

Requires ability

The token must hold this ability, or the call is refused with 403.

MCP tool

Runs the same action from an agent, behind the same ability.

Authorization

bearerToken
AuthorizationBearer <token>

A personal access token minted on the dashboard under Settings, then Tokens, sent as Authorization: Bearer sbt_live_…. The token carries the abilities each endpoint lists under Requires ability and is frozen to one team.

In: header

Responses

200OK

Array of UserIdentityResource

401Unauthorized

The request carries no bearer token, or one that is revoked, malformed, or minted for another environment (an sbt_test_ token on production).

403Forbidden

The token is valid but does not carry the ability this endpoint requires; error.context.required_ability names the one to grant. An endpoint that also checks who owns a row or which tier the account is on answers FORBIDDEN, TEAM_TIER_REQUIRED or CONNECTOR_TIER_REQUIRED with the same status, and says so in its own description.

429Too many requests

The token has spent its 300 requests a minute or 10,000 an hour; Retry-After says when the next one is accepted.

DELETE
curl -X DELETE https://api.subscriby.net/v1/me/identities/$IDENTITY_ID \  -H "Authorization: Bearer $SUBSCRIBY_TOKEN" \  -H "Idempotency-Key: $(uuidgen)"

Drops a primary link at once and answers an empty 204. You keep your password and passkeys, so nothing locks you out; what you lose until you link again is the connector side: its bot can no longer reach you or manage your projects, and its sign-in button no longer signs you in.

DELETE
/v1/me/identities/{identity}

Requires ability

The token must hold this ability, or the call is refused with 403.

Idempotent

Send the header on every call; the same key replays the original response for 24 hours.

Authorization

bearerToken
AuthorizationBearer <token>

A personal access token minted on the dashboard under Settings, then Tokens, sent as Authorization: Bearer sbt_live_…. The token carries the abilities each endpoint lists under Requires ability and is frozen to one team.

In: header

Path Parameters

identity*string

One of the caller's links, resolved by the route binder.

Formatuuid

Header Parameters

Idempotency-Key*string

A key unique to this operation, such as a fresh UUID. The same key replays the original 2xx response for 24 hours (with Idempotent-Replay: true), so a retry after a timeout never repeats the write; the same key with a different body is refused with 409.

Formatuuid

Responses

204No content

No content

400Bad request

Every write needs an Idempotency-Key header. Send a fresh UUID per distinct operation.

401Unauthorized

The request carries no bearer token, or one that is revoked, malformed, or minted for another environment (an sbt_test_ token on production).

403Forbidden

The token is valid but does not carry the ability this endpoint requires; error.context.required_ability names the one to grant. An endpoint that also checks who owns a row or which tier the account is on answers FORBIDDEN, TEAM_TIER_REQUIRED or CONNECTOR_TIER_REQUIRED with the same status, and says so in its own description.

404Not found

An id in the path names nothing the token can see. TENANT_MISMATCH: the project sits outside the token's scope:project: allow-list, or the token carries no team scope. Both answer 404 rather than 403 so that existence outside the token's scope cannot be inferred. On this endpoint: RESOURCE_NOT_FOUND: for an id that is not one of the caller's own links, so the API cannot be used to probe which ids exist.

409Conflict

The key was already used in the last 24 hours with a different request body.

422Validation failed

For a **backup** account: it is removed from the Disaster Recovery page, where the change is recorded, not from here.

425Too early

The first request with this key is still running; retry in a few seconds and the original response is replayed.

429Too many requests

The token has spent its 300 requests a minute or 10,000 an hour; Retry-After says when the next one is accepted.

How is this guide?

Version

On this page

Subscriby is a product
designed by you — for you.
No boardroom full of executives deciding what we ships next. Our roadmap always shaped by you with your feedback.

Share feedback or a request