---
title: Review an unlock response
description: Accept or reject an unlock response
method: POST
path: /api/v1/workspaces/{slug}/unlock-responses/{responseID}/accept
group: Unlock Forms
scopes: certificates:write
---

# Review an unlock response

# Review an unlock response

A response moves through the same three states as a certificate request or a
correction: `pending`, `approved`, `rejected`.

| Action                                          | Effect                                                                       |
| ----------------------------------------------- | ---------------------------------------------------------------------------- |
| `POST .../unlock-responses/{responseID}/accept` | Approves the response and releases the recipient's existing pending certificate |
| `POST .../unlock-responses/{responseID}/reject` | Keeps the issue pending, mints a fresh link for the recipient, and emails it with your reason so they can resubmit |

Rejecting is not a dead end and does not need undoing: the recipient keeps a
working link, and accepting a rejected response releases it as normal.

Accepting releases the issue exactly once: a repeated accept on an
already-released certificate answers `409 unlock_already_released` rather than
charging a second credit.

Releasing a recipient who never responded is a separate, deliberate action
(`POST /api/v1/workspaces/{slug}/issues/{issueID}/issue`). It does not fabricate
an accepted response — the record continues to show that none was accepted.

## Authorization

```http
Authorization: Bearer vc_...
```

Requires `certificates:write` (or full access) and an active Pro seat.

## Body parameters

Reject only:

  
- `reason?` string — What the recipient should change. Shown to them in the email and on their form. Example: `Please add a link to your project.`.

## Request

```bash
curl -X POST "https://api.verifycate.com/api/v1/workspaces/acme/unlock-responses/c1a2b3d4-5e67-4890-a123-456789abcdef/accept" \
  -H "Authorization: Bearer vc_your_api_key"
```

## Response

### 200

Returns the reviewed response, with `issue_status` now `active` after an accept.
