---
title: "Get the caller's recovery account"
method: GET
path: "/v1/me/recovery"
tags: ["Disaster Recovery"]
---

# Get the caller's recovery account

`GET /v1/me/recovery`

## Request

- Base URL: `https://api.subscriby.net`
- URL: `https://api.subscriby.net/v1/me/recovery`
- Auth: HTTP bearer

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

Recovering the creator's sign-in account, and keeping a backup account ahead of a ban, are two-sided **handshakes**: the API mints a code, the creator taps the link (or types the code) from the account to detect, the connector records which account that was, and the API confirms. Both sides have to agree, which is what keeps a leaked link from binding a stranger. These endpoints live under `/v1/me` because they are about the caller, never a project, and the actions behind them refuse anyone but the account holder.

These flows are deliberately not offered as MCP tools: moving a sign-in is a human act, and [`get_me`](https://docs.subscriby.net/mcp/v1/tools/account/get-me) already shows which accounts are linked.

- `primary_display_name` and `backup_display_name` name the accounts as the connector reported them; their identifiers on the connector never appear.
- `relink_handshake` and `backup_handshake` are the newest handshake of each kind, in whatever state, so a client can pick up a flow the creator started on the dashboard or in the bot.

## Response `200`

200 with the summary.

- object
  - `data` RecoveryAccountResource, required: Where the creator's own account stands for recovery: the accounts by display name only, whether a backup is kept, and the newest handshake of each kind.
    - `primary_display_name` string, nullable, required: The account that signs the creator in, as the connector reported it (display name, else handle, else the platform's id); null when none is linked. Connector identifiers never appear.
    - `backup_identity_registered` boolean, required: Whether a backup account is kept ahead of a ban.
    - `backup_display_name` string, nullable, required: The backup account as the connector reported it; null when none is kept.
    - `relink_handshake` unknown[], nullable, required: The newest handshake that moves the sign-in, in whatever state, so a client can pick up a flow the creator started on the dashboard or in the bot; null when none was ever opened.
      - unknown
    - `backup_handshake` unknown[], nullable, required: The newest handshake that registers a backup, in whatever state; null when none was ever opened.
      - unknown

## Other responses

- `401`: `AUTHENTICATION_REQUIRED`: the request carries no bearer token, or one that is revoked, malformed, or minted for another environment (an `sbt_test_` token on production).
- `403`: `TOKEN_MISSING_ABILITY`: 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.
- `429`: `RATE_LIMITED`: the token has spent its 300 requests a minute or 10,000 an hour; `Retry-After` says when the next one is accepted.

---

[API](https://skmtc.dev/memberpass/apis/subscriby-rest-api.md) · [All operations](https://skmtc.dev/memberpass/apis/subscriby-rest-api/llms.txt) · [OpenAPI document](https://skmtc.dev/memberpass/apis/subscriby-rest-api/revisions/59c4df91d764?raw)
