---
title: "Challenge replaced — Anis Developers"
description: "The proof answered a challenge that has been replaced: Anis staff restarted the enrolment, which issues a new invitation and a new challenge. (A proof that is simply too late is not refused — it comes back with `proofState: \"failed\"`.)"
url: https://developers.anis.ly/errors/challenge-expired/
language: en
---

> Every page of this documentation: https://developers.anis.ly/llms.txt

[Error codes](https://developers.anis.ly/errors.md) · Enrolling a key

# Challenge replaced

- **Code:** `challenge_expired`
- **Status:** 409
- **If this was an order:** Never returned when buying
- **Send it again unchanged?** No — change something first
- **.NET SDK:** `EnrollmentRefusedException`

## What it means

The proof answered a challenge that has been replaced: Anis staff restarted the enrolment, which issues a new invitation and a new challenge. (A proof that is simply too late is not refused — it comes back with `proofState: "failed"`.)

## What to do

- Use the new invitation token Anis staff sent, and enrol again from the key submission.
- If your key lives in a vault that needs an approval to sign, arrange that approval before you submit the key: the proof must follow within about 30 minutes.

## Where you can meet it

- POST [Prove you hold the key](https://developers.anis.ly/reference/submit-proof.md) `/v1/enrollments/{invitationId}/proof`

## Example

The body of the refusal. Its `type` is the address of this page.

```
{
  "type": "https://developers.anis.ly/errors/challenge-expired",
  "title": "Challenge replaced",
  "status": 409,
  "code": "challenge_expired",
  "requestId": "01J9R2K8T4V6XQ0M3B7C5D9E1F"
}
```
