Context API
사용자 ID로 설치 유입 정보와 구매 및 이탈 예측값을 조회하는 요청과 응답 규격입니다.
Context API는 앱 사용자 ID를 받아 설치에 기여한 광고 정보와 구매 및 이탈 예측값을 반환합니다. 호출하려면 앱의 CUE 사용 설정과 예측 데이터가 준비돼 있어야 합니다. 연동을 테스트할 때는 예측 데이터가 준비된 테스트 사용자 ID를 사용해야 합니다. 자세한 준비 과정은 시작하기에서 확인할 수 있습니다.
Endpoint
POST https://api.airbridge.io/entry/inference/v1/context서버나 CRM에서 API를 호출해 주세요. CUE는 인증 토큰으로 대상 앱을 확인합니다. 요청 본문에는 appId를 넣지 않아야 합니다.
요청
전체 요청
외부 사용자 ID로 조회하는 전체 요청입니다. 토큰과 사용자 ID를 실제 값으로 바꿔 주세요. 다른 ID를 사용하는 요청은 아래 Payload 예시에서 확인할 수 있습니다.
POST /entry/inference/v1/context HTTP/1.1
Host: api.airbridge.io
Authorization: Bearer <AIRBRIDGE_APP_TOKEN>
Content-Type: application/json
{
"airbridgeExternalUserId": "abc-123"
}Headers
Content-Typestringapplication/json을 보내 주세요.
토큰은 에어브릿지 대시보드 [설정]>[토큰 관리]에서 확인할 수 있습니다. 서버나 CRM의 안전한 설정에 보관해야 합니다. 자세한 내용은 토큰 확인 방법에서 확인할 수 있습니다.
Request body
사용자 식별자
objectuserIdstring에어브릿지가 앱 사용자에게 부여한 Airbridge Generated UUID를 보내 주세요.
brazeDeviceIdstring브레이즈 SDK의 Device ID를 보내 주세요.
airbridgeExternalUserIdstring서비스에서 에어브릿지에 전송한 외부 사용자 ID를 보내 주세요.
API는 ID의 앞뒤 공백을 제거합니다. 공백을 제거한 뒤에도 값이 남아 있는 문자열을 보내야 합니다. 인증 토큰에 해당하는 앱에서 수집한 ID를 사용해야 합니다. Braze Device ID나 외부 사용자 ID로 조회하려면 해당 ID와 에어브릿지 사용자를 연결한 정보가 있어야 합니다.
brazeDeviceId는 브레이즈 SDK의 Device ID이며, 브레이즈의external_id와 다른 값입니다.
요청 본문의 최대 크기는 65,536바이트입니다. 아래 경우에는 422 VALIDATION_ERROR가 반환됩니다.
- ID를 생략하거나 2개 이상 보낸 경우
- ID에 빈 문자열을 보낸 경우
appId처럼 정의되지 않은 필드를 추가한 경우
Payload 예시
사용할 ID에 맞는 요청 예시를 탭별로 확인할 수 있습니다. 예시의 ID를 예측 데이터가 준비된 실제 테스트 사용자 ID로 바꿔 주세요.
{
"airbridgeExternalUserId": "abc-123"
}응답
Context API가 요청을 정상적으로 처리하면 HTTP 200과 JSON 본문을 반환합니다. context.lastTouchpoint는 설치에 기여한 광고 정보입니다. predictions에는 구매와 이탈 모델 각각의 probability와 tier가 모두 포함됩니다.
응답 예시
아래 응답은 외부 사용자 ID abc-123으로 요청한 경우의 예시입니다. ID와 수치는 설명용 값입니다.
HTTP/1.1 200 OK
Content-Type: application/json
X-Request-Id: 01915c8e-7a12-7d3f-8b2a-1f2e3d4c5b6a
{
"requestId": "01915c8e-7a12-7d3f-8b2a-1f2e3d4c5b6a",
"appId": 1234,
"user": {
"id": "abc-123",
"type": "airbridge_external_user_id"
},
"context": {
"lastTouchpoint": {
"channel": "media_A",
"campaign": "moving_service",
"adGroup": "moving_quote",
"adCreative": "moving_guide_video",
"term": null
}
},
"predictions": {
"d3_purchase": {
"probability": 0.723,
"tier": "high"
},
"d3_churn": {
"probability": 0.812,
"tier": "high"
}
}
}Response body
requestIdstring호출마다 발급되는 요청 ID입니다. 응답 헤더의
X-Request-Id와 같은 값이며, 오류를 확인하거나 문의할 때 사용합니다.
appIdinteger서버가 인증 토큰으로 확인한 앱 ID입니다.
userobject사용자 정보
idstring요청에 사용한 ID에서 앞뒤 공백을 제거한 값입니다. 외부 사용자 ID로 요청하면 그 외부 사용자 ID를 반환합니다.
typestring요청에 사용한 ID의 종류입니다.
가능한 값airbridge_generated_uuidbraze_device_idairbridge_external_user_id
contextobject유입 정보
lastTouchpointobject | null설치 유입 정보요청한 사용자 ID로 확인한 기기의 앱 설치에 기여한 광고 정보입니다. 조회에 성공했지만 설치 기여 결과가 없으면 null을 반환합니다.
channelstring | null설치에 기여한 채널입니다.
campaignstring | null설치에 기여한 캠페인입니다.
adGroupstring | null설치에 기여한 캠페인의 광고 그룹입니다.
adCreativestring | null설치에 기여한 광고 소재입니다.
termstring | null광고에 설정한 키워드입니다. 앱 사용자가 실제로 입력한 검색어와 같다고 보장하지 않습니다.
predictionsobject예측 결과
d3_purchaseobject구매 예측앱 설치 후 3일 이내의 구매 가능성입니다.
probabilitynumber0 ≤ value ≤ 1
앱 설치 후 3일 이내에 표준 주문 완료 이벤트가 발생할 확률입니다.
tierstringlow / medium / high
구매 모델의 학습 데이터에 대한 예측 확률 분포를 기준으로 정한 등급입니다.
d3_churnobject이탈 예측앱 설치 후 3일이 지난 뒤부터 30일까지의 이탈 가능성입니다.
probabilitynumber0 ≤ value ≤ 1
앱 설치 후 3일이 지난 뒤부터 30일까지 활동 이벤트가 관측되지 않을 확률입니다.
tierstringlow / medium / high
이탈 모델의 학습 데이터에 대한 예측 확률 분포를 기준으로 정한 등급입니다.
응답 해석
구매와 이탈 모델의 예측 기간은 앱 설치 시점을 기준으로 합니다. 구매 모델이 예측하는 표준 주문 완료 이벤트는 airbridge.ecommerce.order.completed입니다.
예측 확률은 소수점 셋째 자리까지 반올림됩니다. 예시의 0.723은 72.3%를 뜻합니다. 등급은 반올림 전 확률과 각 모델의 학습 데이터에 대한 예측 확률 분포를 기준으로 정합니다. 서비스에서는 반환된 tier를 등급 조건으로 사용할 수 있습니다.
구매 모델과 이탈 모델은 서로 다른 사건을 예측합니다. 구매와 이탈 등급이 모두 high일 수 있습니다.
설치 유입 정보 해석
context.lastTouchpoint는 설치에 기여한 채널과 캠페인 정보를 제공합니다. 설치 기여 결과가 없으면 객체 전체가 null입니다. 일부 정보만 없으면 해당 필드가 null이며, 객체에는 5개 키가 모두 포함됩니다.
restricted처럼 제공이 제한된 값은 전달받은 그대로 반환합니다. unattributed는 정보가 마스킹된 결과일 수 있습니다. 두 값 모두 null과 다르며, 이 값만으로 자연 유입 여부를 판단할 수 없습니다. 정보 제공이 제한되는 조건은 확장된 프라이버시 제어(EPC)에서 확인할 수 있습니다.
정상 값, 객체 전체의 null, 일부 필드의 null, restricted와 unattributed의 차이는 설치 유입 정보의 응답 사례 비교에서 확인할 수 있습니다. 캠페인과 예측값을 조합해 화면이나 메시지를 바꾸는 예시는 Context 활용하기에서 확인할 수 있습니다.
오류 응답
Context API가 요청을 처리하지 못하면 오류에 해당하는 HTTP 상태 코드와 error를 반환합니다. 아래는 식별자 연결이나 예측 데이터를 찾지 못한 경우의 응답입니다.
HTTP/1.1 404 Not Found
Content-Type: application/json
X-Request-Id: 01915c8e-7a12-7d3f-8b2a-1f2e3d4c5b6a
{
"requestId": "01915c8e-7a12-7d3f-8b2a-1f2e3d4c5b6a",
"error": {
"code": "CONTEXT_DATA_NOT_FOUND",
"message": "Context identifier or features were not found.",
"retryable": false
}
}프로그램에서는 error.code로 오류를 구분하고 error.retryable로 재시도 여부를 판단해야 합니다. 오류 메시지의 문구를 실행 조건으로 사용하지 않아야 합니다. 전체 오류 코드와 기본 동작은 오류 처리에서 확인할 수 있습니다.