---
title: "Paid plans: revoke every key of the subscription and return a new one, given the billing email and the invoice link (View invoice / Download invoice) from any receipt email"
method: POST
path: "/v1/keys/recover"
---

# Paid plans: revoke every key of the subscription and return a new one, given the billing email and the invoice link (View invoice / Download invoice) from any receipt email

`POST /v1/keys/recover`

## Request

- Base URL: `https://shotkiln.com`
- URL: `https://shotkiln.com/v1/keys/recover`
- Auth: none required

## Request body

- object
  - `email` string, email, required
  - `receipt_url` string, uri, required

## Response `200`

{ api_key, plan, note } (key shown once)

## Other responses

- `400`: Invalid parameter or blocked URL (code: invalid_parameter, invalid_url, url_blocked, blocked_url)
- `404`: recovery_failed: no subscription matches that email and link
- `429`: Rate limit, daily limit or monthly quota exceeded (see Retry-After)

## Changes

- **2026-10-20** `8123a05b6719`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/shotkiln/apis/shotkiln-api/changes/v1/keys/recover/post.md)

---

[API](https://skmtc.dev/shotkiln/apis/shotkiln-api.md) · [All operations](https://skmtc.dev/shotkiln/apis/shotkiln-api/llms.txt) · [OpenAPI document](https://skmtc.dev/shotkiln/apis/shotkiln-api/revisions/8123a05b6719?raw)
