콘텐츠로 건너뛰기

Notify

POST https://api.pushwoosh.com/messaging/v2/notify

단일 메시지를 생성하고 예약합니다.

요청 구조

Anchor link to

요청 본문은 다음 두 종류 중 하나를 정확히 포함하는 NotifyRequest 입니다:

  • segment: 세그먼트 코드, seglang 표현식 또는 구조화된 필터 표현식으로 오디언스 세그먼트를 타겟팅합니다.
  • transactional: hwid, 사용자 ID, 푸시 토큰 또는 테스트 기기의 명시적 목록으로 전송합니다.
Shape
{
"segment": { ... }, // OR
"transactional": { ... },
"transaction_id": "unique-uuid"
}
필드유형설명
transaction_idstring선택 사항. 요청에 대한 멱등성 키 — segmenttransactional 모두에서 작동합니다. 5분 이내에 동일한 transaction_id 로 반복 호출하면 중복 메시지를 보내는 대신 원래의 message_code 를 반환합니다. 논리적 전송마다 고유한 UUID 또는 다른 값을 사용하세요.

NotifySegment

Anchor link to

오디언스 세그먼트 또는 필터 표현식과 일치하는 사용자를 타겟팅합니다.

필드유형설명
scheduleSchedule전송 시기 및 방법. 필수.
applicationstring애플리케이션 코드.
platformsarray of Platform메시지가 타겟팅하는 플랫폼.
codestring세그먼트 코드. expressionfilter_expression 과 상호 배타적입니다.
expressionstringSeglang 표현식.
filter_expressionFilterExpression구조화된 필터 표현식 (고급).
payloadPayload푸시 / SMS / Telegram / Kakao / LINE / WhatsApp / Viber 페이로드. email_payload 와 상호 배타적입니다.
email_payloadEmailPayload이메일 페이로드.
campaignstring이 메시지를 귀속시킬 캠페인 코드.
frequency_cappingFrequencyCapping사용자별 빈도 제한.
send_rateSendRate전송에 대한 스로틀링.
message_typeMessageTypeMESSAGE_TYPE_MARKETING (기본값) 또는 MESSAGE_TYPE_TRANSACTIONAL. 제어 그룹 필터링을 제어합니다.
dynamic_content_placeholdersmap<string, string>콘텐츠의 플레이스홀더를 대체합니다.
meta_dataobject다운스트림 분석으로 전달되는 자유 형식 메타데이터.

예시: 세그먼트로 전송

Anchor link to
Terminal window
curl -X POST https://api.pushwoosh.com/messaging/v2/notify \
-H "Authorization: Token YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"segment": {
"application": "XXXXX-XXXXX",
"platforms": ["IOS", "ANDROID"],
"code": "active_users",
"payload": {
"content": {
"localized_content": {
"en": {
"ios": { "body": "Hello!" },
"android": { "body": "Hello!" }
}
}
}
},
"schedule": { "at": "2026-05-01T12:00:00Z" },
"message_type": "MESSAGE_TYPE_MARKETING"
}
}'

NotifyTransactional

Anchor link to

명시적인 수신자 목록으로 전송합니다.

필드유형설명
scheduleSchedule필수.
applicationstring애플리케이션 코드.
platformsarray of Platform메시지가 타겟팅하는 플랫폼.
test_devicesbooltrue 인 경우, 앱의 테스트 기기로만 전송합니다.
hwids{ "list": [string, ...] }hwid 로만 전송합니다.
users{ "list": [string, ...] }사용자 ID 로만 전송합니다.
push_tokens{ "list": [string, ...] }푸시 토큰 으로만 전송합니다.
payloadPayload푸시 / SMS / Telegram / Kakao / LINE / WhatsApp / Viber 페이로드.
email_payloadEmailPayload이메일 페이로드.
return_unknown_identifiersbooltrue 인 경우, 응답의 unknown_identifiers 에 찾을 수 없는 식별자가 나열됩니다.
use_latest_user_deviceboolusers 를 타겟팅할 때만 적용됩니다. true 인 경우, 해당 사용자 ID에 연결된 모든 기기 대신 각 사용자의 가장 최근에 활성화된 기기(가장 최근의 Last Application Open을 가진 기기)로 메시지가 전달됩니다. 기본값은 false (모든 기기로 전송)입니다.
campaign, frequency_capping, send_rate, message_type, dynamic_content_placeholders, meta_data위의 NotifySegment 를 참조하세요.

test_devices, hwids, users, push_tokens 는 상호 배타적입니다. 정확히 하나만 설정해야 합니다.

예시: 사용자 ID를 통한 트랜잭션

Anchor link to
Terminal window
curl -X POST https://api.pushwoosh.com/messaging/v2/notify \
-H "Authorization: Token YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"transactional": {
"application": "XXXXX-XXXXX",
"platforms": ["IOS", "ANDROID"],
"users": { "list": ["user-123", "user-456"] },
"payload": {
"content": {
"localized_content": {
"en": { "ios": { "body": "Your order has shipped." } }
}
}
},
"schedule": { "at": "2026-05-01T12:00:00Z" },
"message_type": "MESSAGE_TYPE_TRANSACTIONAL",
"return_unknown_identifiers": true,
"use_latest_user_device": true
}
}'
{
"result": {
"message_code": "XXXXX-XXXXX-XXXXX",
"unknown_identifiers": []
}
}
필드유형설명
message_codestring고유한 메시지 코드. /getMessageDetails 및 메시지 통계 엔드포인트와 함께 사용하세요.
unknown_identifiersarray of string계정에서 찾을 수 없는 식별자. transactional 종류에 return_unknown_identifiers: true 가 설정된 경우에만 채워집니다.

공유 유형

Anchor link to
{
"at": "2026-05-01T12:00:00Z",
"follow_user_timezone": true,
"past_timezones_behaviour": "PAST_TIMEZONES_BEHAVIOUR_SEND_IMMEDIATELY"
}
필드유형설명
attimestamp절대 전송 시간 (RFC 3339). 과거인 경우 메시지가 즉시 전송됩니다. 최대 14일 후까지 설정 가능합니다.
afterdurationat 의 대안. “지금”으로부터 이 오프셋 이후에 전송합니다 (예: "3600s").
follow_user_timezonebooltrue 인 경우, 각 기기는 현지 시간대의 at 시간에 메시지를 수신합니다.
past_timezones_behaviourenumPAST_TIMEZONES_BEHAVIOUR_SEND_IMMEDIATELY (기본값), PAST_TIMEZONES_BEHAVIOUR_DO_NOT_SEND, 또는 PAST_TIMEZONES_BEHAVIOUR_NEXT_DAY. follow_user_timezonetrue 일 때만 의미가 있습니다.

FrequencyCapping

Anchor link to

마케팅 전송에 대한 사용자별 빈도 제한. 제한을 비활성화하려면 frequency_capping 을 완전히 생략하거나 days: 0count: 0 을 함께 보내세요.

{ "days": 7, "count": 3, "exclude": false, "avoid": true }
  • days (int, 1–30, 또는 0 으로 설정 시 제한 비활성화): 되돌아보는 기간. count 와 함께 전송해야 합니다 — 하나가 0 이면 다른 하나도 0 이어야 합니다; 하나를 0 으로 보내고 다른 하나가 0이 아니면 400 을 반환합니다.
  • count (int, 1 이상, 또는 0 으로 설정 시 제한 비활성화): days 내에 허용되는 최대 메시지 수. 위의 days 와 동일한 페어링 규칙이 적용됩니다.
  • exclude (bool): 이미 상한에 도달한 사용자를 완전히 제외합니다.
  • avoid (bool): 이미 상한에 도달한 사용자를 부드럽게 회피합니다 (분석에는 계속 포함됨).
{ "value": 500, "bucket": "1s", "avoid": false }

전송을 스로틀링합니다. valuebucket 당 메시지 수이며, 일반적인 bucket"1s" 입니다.

Platform 열거형

Anchor link to

IOS, ANDROID, OSX, WINDOWS, AMAZON, SAFARI, CHROME, FIREFOX, IE, EMAIL, BAIDU_ANDROID, HUAWEI_ANDROID, SMS, WEB, KAKAO, TELEGRAM, LINE, WHATS_APP, VIBER.

MessageType 열거형

Anchor link to
  • MESSAGE_TYPE_UNSPECIFIED: MESSAGE_TYPE_MARKETING 과 동일합니다.
  • MESSAGE_TYPE_MARKETING: 제어 그룹 필터링 및 빈도 제한의 대상이 됩니다.
  • MESSAGE_TYPE_TRANSACTIONAL: 제어 그룹 필터링 및 빈도 제한을 건너뜁니다. 주문 확인, OTP 및 유사한 중요한 흐름에 사용하세요.

관련 항목

Anchor link to