
# 인증 코드 입력

`POST /fapi/v1/verifications/{verification_id}:attempt` · 환경의 로그인 호스트에서 호출

[인증 코드 전송](/docs/api/fapi/verifications/start) 후 사용자가 받은 6자리 코드를 확인합니다. 코드가 맞으면 이메일 주소가 인증된 것으로 표시되고 코드는 사용 완료되며, 응답은 `204`입니다. 코드가 틀리면 해당 코드의 시도 횟수 중 하나가 사용됩니다. 잘못된, 만료된, 이미 사용된 또는 시도 횟수를 모두 소진한 코드, 알 수 없는 ID, 다른 사용자의 ID는 모두 동일하게 `422 verification_invalid`를 반환합니다. 이 경우 사용자는 새 코드를 요청해야 합니다. 인증된 사용자의 `__Host-idp_session` 쿠키가 필요하며, 쿠키가 없거나 만료되었거나 취소된 경우 `401 unauthenticated`를 반환합니다. 다른 오리진의 자사 앱은 대신 프런트 API 액세스 토큰(DPoP 증명과 함께 `Authorization: DPoP <token>`)을 보낼 수 있습니다([프런트 API 액세스 토큰](/docs/api/fapi/front-api-token) 참조).

## 요청

경로 매개변수:

| 매개변수 | 설명 |
| --- | --- |
| `verification_id` | 전송 응답의 `id`. |

헤더:

| 헤더 | 필수 | 설명 |
| --- | --- | --- |
| `Idp-Client` | 예 | SDK 식별자. |
| `Origin` | 예 | 정확히 `https://<로그인 호스트>`여야 합니다. |
| `Content-Type` | 예 | `application/json`. |

본문:

| 필드 | 타입 | 필수 | 설명 |
| --- | --- | --- | --- |
| `code` | string | 예 | 이메일로 받은 6자리 코드. |

## 응답

`204 No Content`; 이메일 주소가 인증되었습니다.

## 오류

| 상태 | 코드 | 발생 시점 |
| --- | --- | --- |
| 400 | `malformed_request` | 본문이 올바른 JSON이 아닙니다. |
| 400 | `unknown_field` | 본문에 `code` 이외의 필드가 있습니다. |
| 401 | `unauthenticated` | 유효한 세션 쿠키가 없습니다. |
| 403 | `origin_not_allowed` | `Origin`이 없거나 잘못되었습니다. |
| 403 | `test_feature_not_in_production` | 코드가 고정 테스트 코드 `424242`이고 환경이 운영 환경입니다. 시도는 잘못된 코드와 같이 소진됩니다. |
| 413 | `payload_too_large` | 본문이 너무 큽니다. |
| 415 | `unsupported_media_type` | `Content-Type`이 `application/json`이 아닙니다. |
| 422 | `validation_failed` | `code`가 없습니다. |
| 422 | `verification_invalid` | 코드가 잘못되었거나, 만료되었거나, 사용되었거나, 시도 횟수를 모두 소진했거나, ID를 알 수 없습니다. |

## 예시

```bash
curl -X POST https://example.keenauth.app/fapi/v1/verifications/0190a5c4-1b2c-7d3e-8f40-5162738400ff:attempt \
  -H "Idp-Client: my-app/1.0.0 (node/22.0.0)" \
  -H "Origin: https://example.keenauth.app" \
  -H "Content-Type: application/json" \
  -b cookies.txt \
  -d '{"code": "123456"}'
```
