
# 브랜딩 미리 보기 링크 만들기

`POST /v1/branding:preview-link` · 권한 `branding:write`

게시하기 전에 환경의 현재 브랜딩 초안을 적용한 호스팅 로그인 페이지를 보여 주는 링크를 만듭니다. 페이지는 항상 최신 초안을 그립니다. 초안을 변경한 뒤 페이지를 새로 고치면 변경 사항이 보입니다. 페이지 상단에는 미리 보기임을 알리는 배너가 표시되고, 모든 로그인 컨트롤은 비활성화됩니다. 초안의 텍스트 재정의는 페이지의 언어로 표시되며, 미리 보기 배너는 바꿀 수 없습니다.

링크는 10분 동안 유효하며 취소할 수 없습니다. 그 이후에는 `404`를 반환합니다. 링크를 가진 사람은 누구나 초안을 볼 수 있으므로, 디자인을 검토할 사람에게만 공유하십시오. 환경에는 동시에 유효한 링크가 최대 20개까지 있을 수 있습니다.

## 요청

본문은 선택 사항입니다. 본문이 없으면 페이지에 환경 초안만 표시됩니다.

| 필드 | 유형 | 필수 | 설명 |
|---|---|---|---|
| `application_id` | string | 아니요 | 이 애플리케이션의 초안도 적용합니다 (`app_…`). |
| `org_id` | string | 아니요 | 이 조직의 초안도 적용합니다 (`org_…`): 로고와 기본 색상. |

## 응답

`200 OK`. `url`은 이 응답에서만 반환되며 `Cache-Control: no-store` 헤더가 함께 전달됩니다. 같은 `Idempotency-Key`로 반복한 요청은 `url` 대신 `secret_redacted: true`를 반환합니다. 이때는 새 링크를 만드십시오.

```json
{
  "url": "https://acme.eu1.keenauth.app/u/preview?token=…",
  "expires_at": "2026-10-19T12:10:00Z"
}
```

## 오류

| HTTP | code | 발생 조건 |
|---|---|---|
| 400 | `unknown_field` | 본문에 알 수 없는 필드가 있거나 JSON 객체가 아닙니다. |
| 404 | `not_found` | 이 환경에 해당 애플리케이션이 없습니다. |
| 422 | `validation_failed` | `application_id` 또는 `org_id`가 올바른 ID가 아닙니다 (`invalid_value`). |
| 401 | `unauthenticated` | 자격 증명이 없거나 잘못되었거나 취소되었습니다. |
| 403 | `insufficient_permissions` | 자격 증명에 필요한 권한이 없습니다. |
| 429 | `rate_limited` | 환경에 유효한 링크가 이미 20개 있거나 속도 제한을 초과했습니다. `Retry-After` 기간이 지난 후에 다시 시도하십시오. |
| 503 | `service_unavailable` | 종속 서비스를 일시적으로 사용할 수 없습니다. `Retry-After` 기간이 지난 후에 다시 시도하십시오. |

## 예시

```bash
curl -X POST https://api.eu.keenauth.com/v1/branding:preview-link \
  -H "Authorization: Bearer $KEENAUTH_SECRET_KEY" \
  -H "Content-Type: application/json" \
  -d '{"application_id":"app_01jb…"}'
```

CLI 사용:

```bash
keenauth branding preview-link --application-id app_01jb…
```
