---
title: "Answer a challenge and unlock the key"
method: POST
path: "/api/v1/agent-key/answer"
tags: ["Credentials"]
---

# Answer a challenge and unlock the key

`POST /api/v1/agent-key/answer`

## Request

- Base URL: `https://data.useplinth.com`
- URL: `https://data.useplinth.com/api/v1/agent-key/answer`
- Auth: none required

Send the values of the fields the questions named. We re-read those calls to check, so nothing is stored at issue time and nothing can drift from the data it described.

## Request body

- AnswerRequest
  - `answers` string[], required: One value per question, in the order given. Compared case-insensitively; "yes"/"true" and "$1,234"/"1234" are equivalent.

## Response `200`

Unlocked, with the general call budget added.

- UnlockResult
  - `code` integer, required
  - `message` string
  - `calls_remaining` integer, required
  - `expires_at` string, date-time
  - `when_spent` object
  - `terms` object

## Other responses

- `400`: Wrong answers, or the wrong number of them. Which one was wrong is deliberately not said. The last attempt on a challenge REPLACES it: `error: challenge_replaced`, with fresh questions in the same body.
- `401`: No key, or not a live trial key.
- `409`: That key has no challenge outstanding.
- `429`: Too soon after a wrong answer. `Retry-After` and `retry_after_seconds` say how long; the attempt was neither counted nor checked.

---

[API](https://skmtc.dev/useplinth/apis/plinth-grants-api.md) · [All operations](https://skmtc.dev/useplinth/apis/plinth-grants-api/llms.txt) · [OpenAPI document](https://skmtc.dev/useplinth/apis/plinth-grants-api/revisions/15273cd72ecf?raw)
