# Approving a plan

> **Historical. This product is retired.** This page describes the earlier browser-testing product and is kept only as history. Its service, API, console and accounts are closed: do not run the install commands or call the endpoints shown here.

The one step only a person can take, and why an API key cannot.

- **Outcome:** You can approve a plan, and you know why a script or an assistant cannot.
- **Does not do:** An approval covers one plan on one site. It does not approve changes to that plan.

Before the first run of a claim, a person approves the plan Vraelis wrote from it: the requirements it will judge and the browser steps that will prove them. The approval is its own recorded event, saying who approved which plan and when. The run then executes exactly that plan.

## Where the approval happens

- In the console, under Review.
- At the approval link a check returns: `approve_url` in the API, the link the CLI prints and opens, and the link an AI assistant hands you. It opens `app.vraelis.com/review/` followed by the plan id.
- In ChatGPT and Claude, the Vraelis card carries a Review and approve button that opens the same page.

## Why an API key cannot approve

`POST /v1/verifications/plans/{id}/approve` refuses every API key with `403 plan_requires_human` and returns the `approve_url`, so the caller can hand it to a person. `GET /v1/verifications/plans/{id}` reads the plan and its `approval_state`, and carries `approve_url` while the plan is still pending.

> **Removed.** This example called the earlier service, which is retired. Its commands and endpoints are no longer shown.

> **Honest boundary.** A plan is approved or refused as a whole. Nothing inside an approved plan is singled out for its own hold.

---

Vraelis documentation, Earlier references. https://docs.vraelis.com/review
