---
title: "Complete account recovery"
method: POST
path: "/v1/auth/recover/complete"
tags: ["auth"]
---

# Complete account recovery

`POST /v1/auth/recover/complete`

Complete the account recovery flow by providing verification.

**For email/SMS (cdp_otp)**:
1. Complete CDP OTP verification for the recovery identity
2. Provide the CDP token in `cdp_token` field

**For wallet (signature)**:
1. Sign the challenge message from recovery/start
2. Provide the signature in `signature` field

**On success:**
- Returns the Grove API key with the original primary identity subject
- The primary identity remains unchanged (immutable primary design)
- You regain full access to the account

**Security Note:** In the future, recovery will notify other verified identities.

## Request body

- RecoveryCompleteRequest — Request model for completing recovery.
  - `recovery_token` string, required — Signed session token from recovery/start
  - `cdp_token` string, nullable — CDP Auth token (for email/SMS recovery)
  - `signature` string, nullable — Wallet signature (for wallet recovery)

## Response `200`

Successful Response

- RecoveryCompleteResponse — Response model for recovery complete.
  - `account_id` string, required — Recovered account ID
  - `api_key` string, required — Grove API key (JWT)
  - `identity_type` string, required — Primary identity type
  - `identity_value` string, required — Primary identity value
  - `tipping_address` string, required — Server wallet address (for tipping)
  - `recovered` boolean — Indicates this was a recovery
  - `onchain_address` string, required

## Other responses

- `400` — Recovery session expired or invalid credential
- `401` — Credential verification failed
- `422` — Validation Error

---

[API](https://skmtc.net/grove/apis/grove-api.md) · [All operations](https://skmtc.net/grove/apis/grove-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/grove/grove-api/versions/f286b48a8105/schema)
