# API 기반 진입

<Aside type="caution" icon="setting" title="개발자 지원 필요">
 API 기반 진입 여정을 설정하려면 개발팀의 도움이 필요합니다. 이 가이드를 개발팀과 공유해 주세요.
</Aside>

## 작동 방식

API 기반 진입을 사용하면 특정 비즈니스 이벤트가 발생하는 순간에 고객 여정을 시작할 수 있습니다. 캠페인을 시작하려면 특별한 API 요청을 보내야 합니다.

다음은 API 기반 진입의 몇 가지 사용 사례입니다:

* 상품이 재입고되었을 때 고객에게 알림
* 인기 상품의 가격이 하락했을 때 사용자에게 알림
* 새로운 팟캐스트 에피소드가 나왔을 때 구독자에게 알림

일반적인 이벤트와 달리, 이러한 모든 비즈니스 이벤트는 앱 외부에서 발생할 수 있습니다. 예를 들어, 상품의 재고 여부는 외부 데이터베이스에서만 확인할 수 있습니다. 이때 API 기반 진입이 유용합니다. 앱 외부(예: 외부 데이터베이스)에서 특정 변경 사항이 발생할 때마다 여정을 시작하는 요청을 보내도록 설정할 수 있습니다.

<img src="/shared-33.webp" alt="여정 캔버스 위의 API 기반 진입 요소"/>

작동 방식은 다음과 같습니다:

1. API 기반 진입으로 여정을 만듭니다. 진입 설정에서 여정을 시작하는 요청의 템플릿을 찾을 수 있습니다.
2. [세분화 언어](/ko/developer/api-reference/segmentation-filters-api/segmentation-language)를 사용하여 요청에 세분화 조건을 추가합니다. 또한 요청에 콘텐츠 플레이스홀더를 추가하여 컨텍스트에 따라 메시지 내용을 변경할 수 있습니다.
3. 필요한 경우 요청을 자동화합니다. 예를 들어, 가격 변동에 대한 정보는 데이터베이스에서 웹훅으로 즉시 전송될 수 있습니다. 이 경우 웹훅은 여정을 시작하기 위한 요청을 자동으로 보내야 합니다. 자동화가 필요하지 않은 경우 요청을 수동으로 보낼 수도 있습니다.

세분화 조건이나 메시지 내용을 변경하기 위해 요청을 무제한으로 보낼 수 있습니다.

자세한 내용은 아래 지침을 따르십시오.

## API 기반 진입으로 여정 설정하기

1. API 기반 진입으로 여정을 만듭니다:

<video src="/journey-elements-api-based-entry-1.webm" title="새 여정을 만들고 API 기반 진입 선택하기" autoplay loop muted playsinline />

2. API 기반 진입 단계를 더블 클릭합니다. 진입 설정 창이 열립니다.

3. 콘텐츠 플레이스홀더를 사용하여 여정이 시작될 때마다 푸시 및 이메일 콘텐츠를 수정할 수 있습니다. 각 플레이스홀더의 값은 요청에서 변경할 수 있습니다. 이 옵션이 필요하지 않은 경우 이 단계를 건너뛸 수 있습니다.

> 예를 들어, 새로운 팟캐스트 에피소드가 공개될 때 구독자에게 알리는 여정을 만들고 있습니다. 콘텐츠 플레이스홀더를 사용하면 여정을 시작할 때마다 팟캐스트 제목을 변경할 수 있습니다.

먼저, API 기반 진입 설정 창에서 플레이스홀더 이름을 추가합니다. 편리한 이름을 사용할 수 있습니다.

<img src="/journey-elements-api-based-entry-2.webp" alt="API 기반 진입 설정 창에서 콘텐츠 플레이스홀더 이름 추가하기"/>

이제 [푸시 프리셋](/ko/product/content/push-presets) 또는 [이메일 콘텐츠](/ko/product/content/email-content/)를 만들고 수정하려는 텍스트 대신 플레이스홀더를 삽입합니다. 플레이스홀더는 필요에 따라 다음 형식 중 하나여야 합니다:

* `{placeholder_name|format_modifier|}` – 캠페인 시작 시 플레이스홀더 값이 지정되지 않은 경우, 사용자는 그 자리에 빈 공간을 보게 됩니다.
* `{placeholder_name|format_modifier}` – 플레이스홀더 값이 지정되지 않았고 이전에 사용자에게 할당되지 않은 경우(플레이스홀더로 태그를 사용한 경우), 메시지가 전송되지 않습니다.

<details>

<summary>포맷 수정자</summary>

* **CapitalizeFirst** – 플레이스홀더 값의 첫 글자를 대문자로 만듭니다.
* **CapitalizeAllFirst** – 플레이스홀더 값의 모든 단어의 첫 글자를 대문자로 만듭니다.
* **UPPERCASE** – 모든 글자를 대문자로 전환합니다.
* **lowercase** – 모든 글자를 소문자로 전환합니다.
* **regular** – 요청에 지정된 대로 플레이스홀더 값을 정확하게 삽입합니다.

</details>

<img src="/journey-elements-api-based-entry-3.webp" alt="동적 콘텐츠를 위해 푸시 프리셋에 플레이스홀더 삽입하기"/>

<Aside type="tip">
플레이스홀더 이름 대신 [기존 태그](/ko/product/audience-data-and-segmentation/user-data-tags/) 이름을 사용할 수도 있습니다. 이 경우, 아래 설명된 대로 요청에 지정된 값으로 이 태그 값을 덮어쓰도록 설정해야 합니다.
</Aside>

여정에서 푸시 또는 이메일 요소를 설정할 때, 생성된 프리셋을 선택하고 **이벤트 속성으로 메시지 개인화** 옵션을 켭니다.

여정을 시작할 때 요청에서 수정하려는 플레이스홀더를 선택합니다. 소스로 **API 기반 진입**을 선택하고 동적 속성으로 플레이스홀더 이름을 선택합니다:

<video src="/journey-elements-api-based-entry-4.webm" title="API 기반 진입의 이벤트 속성으로 메시지 개인화하기" autoplay loop muted playsinline />

**적용**을 클릭하여 변경 사항을 저장합니다.

4. 진입 설정 창에서 요청 템플릿을 복사하여 수정합니다:

<img src="/journey-elements-api-based-entry-5.webp" alt="API 기반 진입 설정 창에서 요청 템플릿 복사하기"/>
<Aside> 
API를 통해 여정을 시작하려면 Authorization 헤더에 유효한 인증 토큰을 포함해야 합니다.

**필수 헤더 형식**

  ```http
  Authorization: Api <your_api_token>
  ```
  **예시**

  ```http
  Authorization: Api c8dc6435-xxxxxxxxxxxxxxx
  ```
  
 </Aside>


5. [세분화 언어](/ko/developer/api-reference/segmentation-filters-api/segmentation-language)를 사용하여 `"filter"` 매개변수에 오디언스 필터를 추가하거나, 세그먼트에서 [세분화 로직을 복사](/ko/product/audience-data-and-segmentation/segmentation/#copy-segment-logic)합니다. 필요한 [태그](/ko/product/audience-data-and-segmentation/user-data-tags/tags)를 미리 설정해 두세요.

예를 들어, _Socks_ 아이템을 _Wishlist_에 추가한 사용자를 타겟팅하려면 `"filter"` 값은 다음과 같아야 합니다:

`"filter": "A(\"12345-12345\") * "T(\"Wishlist\", EQ, \"Socks\")"`

이 예에서는 앱에 _Wishlist_ 태그가 설정되어 있어야 합니다.

<Aside type="note">
애플리케이션 코드는 `A(\"12345-12345\")` 형식으로 `"filter"` 매개변수에 자동으로 추가됩니다. 이를 제거하거나 수정하지 마십시오.

또한, JSON 쿼리에서는 따옴표("")와 백슬래시(\)를 백슬래시(\)로 이스케이프해야 한다는 점을 명심하십시오.
</Aside>

<Aside type="tip">
필터를 사용하는 대신 `"hwids"` 매개변수에 HWID 배열을 전달하거나 `"users"` 매개변수에 사용자 ID를 전달하여 특정 기기나 사용자를 직접 타겟팅할 수도 있습니다:

```json
"users": ["user_id_1", "user_id_2", ...],
"hwids": ["hwid_1", "hwid_2", ...]
```
</Aside>

6. 플레이스홀더를 설정했다면, 원하는 콘텐츠를 값으로 지정합니다:

<img src="/journey-elements-api-based-entry-6.webp" alt="여정을 시작하기 위한 API 요청에서 플레이스홀더 값 지정하기"/>


7. 캠페인을 자주 다시 시작할 계획이고 동일한 사용자가 여정에 여러 번 진입하는 것을 원하지 않는 경우, [캠페인 진입 제한](/ko/product/customer-journey/journey-settings#campaign-entry-limit)을 설정하십시오.

> 예를 들어, 특정 제품의 가격 인하를 사용자에게 알리는 캠페인을 만들었습니다. 여러 요청을 다른 오디언스 필터와 함께 보내 여정을 몇 번 다시 시작하려고 합니다. 이 경우, 여러 필터에 일치하는 사용자에게 알림이 반복적으로 전송되지 않도록 캠페인 진입 제한을 추가할 수 있습니다.

8. 특정 비즈니스 이벤트가 발생할 때마다 여정이 시작되기를 원한다면, 웹훅을 사용하여 요청을 자동화하십시오. 이벤트가 발생하면 웹훅은 여정을 시작하기 위한 요청을 자동으로 보내야 합니다.

자동화가 필요하지 않은 경우 요청을 수동으로 보낼 수도 있습니다.

<Aside type="note">
* 새 요청을 보낼 때 세분화 조건을 변경해도 이미 여정에 진입한 사용자에게는 영향을 미치지 않습니다.
* 새 요청을 보낼 때 메시지 내용을 변경하면, 모든 사용자가 새 버전의 메시지를 받게 됩니다(이미 여정에 진입했지만 아직 이 메시지를 받지 않은 사용자 포함).
</Aside>