
# 이메일 주소 추가

`POST /fapi/v1/me/emails` · 환경의 로그인 호스트에서 호출

인증된 사용자에게 이메일 주소를 미인증 상태의 기본이 아닌 주소로 추가하고, 해당 주소로 인증 링크를 보냅니다. 사용자가 링크를 열면 이 주소를 사용할 수 있습니다. 요청이 접수되면 이 주소가 이미 사용자의 주소이더라도 항상 본문 없이 `202`를 반환합니다. 응답으로는 해당 주소가 다른 계정에서 사용 중인지 알 수 없습니다. 기본 주소를 포함하여 사용자는 최대 10개의 주소를 가질 수 있습니다. 인증된 사용자의 `__Host-idp_session` 쿠키가 필요하며, 쿠키가 없거나 만료되었거나 폐기된 경우 `401 unauthenticated`를 반환합니다. 다른 출처의 자사 앱은 대신 프론트 API 액세스 토큰(DPoP 증명과 함께 `Authorization: DPoP <token>`)을 보낼 수 있습니다([프론트 API 액세스 토큰](/docs/api/fapi/front-api-token) 참조).

세션은 최근 5분 이내에 인증되어야 합니다. 사용자에게 두 번째 요소가 설정되어 있다면, 세션도 두 번째 요소(`urn:idp:acr:mfa`)로 열려 있어야 합니다.

## 요청

헤더:

| 헤더 | 필수 | 설명 |
| --- | --- | --- |
| `Idp-Client` | 예 | SDK 식별자입니다. |
| `Origin` | 예 | 정확히 `https://<sign-in host>`이어야 합니다. |
| `Content-Type` | 예 | `application/json`. |

본문:

| 필드 | 타입 | 필수 | 설명 |
| --- | --- | --- | --- |
| `email` | string | 예 | 추가할 주소입니다(최대 320자). |

## 응답

`202 Accepted`, 본문 없음.

## 오류

| 상태 | 코드 | 발생 조건 |
| --- | --- | --- |
| 400 | `malformed_request` | 본문이 올바른 JSON이 아닙니다. |
| 400 | `unknown_field` | 본문에 `email` 외의 필드가 있습니다. |
| 401 | `unauthenticated` | 유효한 세션 쿠키가 없습니다. |
| 401 | `step_up_required` | 세션이 최근 5분 이내에 인증되지 않았거나 두 번째 요소가 필요합니다. `WWW-Authenticate` 헤더의 `max_age=300`(해당하는 경우 `acr_values`)으로 다시 인증하십시오. |
| 403 | `origin_not_allowed` | `Origin`이 없거나 잘못되었습니다. |
| 409 | `email_limit_reached` | 사용자가 이미 이메일 주소 10개를 보유하고 있습니다. |
| 413 | `payload_too_large` | 본문이 너무 큽니다. |
| 415 | `unsupported_media_type` | `Content-Type`이 `application/json`이 아닙니다. |
| 422 | `validation_failed` | `email`이 없습니다. |
| 422 | `email_invalid` | `email`이 올바른 이메일 주소가 아닙니다. |
| 422 | `email_domain_not_allowed` | 환경에서 이 도메인의 주소를 허용하지 않습니다. |
| 429 | `verification_rate_limited` | 최근 인증 메시지를 너무 많이 보냈습니다. 나중에 다시 시도하십시오. |

## 예시

```bash
curl -X POST https://example.keenauth.app/fapi/v1/me/emails \
  -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 '{"email": "ada@example.org"}'
```

## 개인정보

이 엔드포인트는 최종 사용자 프로필이라는 개인정보를 다룹니다. [KeenAuth API의 개인정보](/docs/policies/personal-data)에서 저장되는 항목, 보관 기간, 삭제 방법을 확인하십시오. 어떤 필드에도 특수 범주의 개인정보(건강, 생체 정보, 종교, 정치적 견해, 성적 指向)를 보내지 마십시오.
