HTTP API
Notifly HTTP API의 전체 요청량 제한은 초당 5,000회입니다. 안정적인 서비스 이용을 위해 클라이언트별 초당 요청량을 50-100건 이내로 유지해 주시기 바랍니다. 요청량 초과 시 4xx 응 답 코드가 반환될 수 있습니다. 이를 방지하기 위해 지수 백오프 방식의 재시도 로직 구현이나 요청량 조절을 권장드립니다.
2024-04-05 부터, projectID는 projectId로, userID는 userId로 변경되었습니다.
(호환성을 위해 이전 필드명도 계속 사용 가능합니다.)
1. Authentication
이 endpoint 를 통해 인증 토큰을 받아올 수 있습니다. 인증 토큰은 notifly 서버 API 활용에 필수적입니다. 발급받은 인증 토큰의 유효기간은 1시간입니다. 과도한 API 호출을 방지하기 위해 1시간 이내의 재호출은 기존에 발급 받으신 토큰을 재활용 하시는 것을 권장해드립니다.
Endpoint
POST https://api.notifly.tech/authenticate
Specifications
Request Headers
| Parameter | Value | Description |
|---|---|---|
| Content-Type | application/json | Request body 의 MIME Type |
Request Body
| Parameter | Type | Required | Description |
|---|---|---|---|
| accessKey | String | Yes | Notifly의 설정 페이지에서 확인하실 수 있습니다. 프러덕트 별로 하나의 Access Key가 생성됩니다. 문의 사항은 contact@notifly.tech 으로 이메일 부탁드립니다. |
| secretKey | String | Yes | Notifly의 설정 페이지에서 확인하실 수 있습니다. 프러덕트 별로 하나의 Secret Key가 생성됩니다. 문의 사항은 contact@notifly.tech 으로 이메일 부탁드립니다. |
Response Headers
| Parameter | Value |
|---|---|
| Status code | 200 OK |
| Content-Type | application/json |
Response Body
{
"data": "<auth-key>",
"error": null
}
Sample Request
POST https://api.notifly.tech/authenticate
Content-Type: application/json
{
"accessKey": "<access_key>",
"secretKey": "<secret-key>"
}
2. Track Event
이 endpoint 를 통해 notifly 엔진에 이벤트 데이터를 보낼 수 있습니다. Notifly 엔진은 수신한 이벤트 데이터를 모으고 분석해 캠페인 진행 시 메시지 발송 타이밍, 사용자 세그먼트 설정 등에 활용할 수 있게 준비합니다.
Endpoint
POST https://api.notifly.tech/track-event
Specifications
Request Headers
| Parameter | Value | Description |
|---|---|---|
| Content-Type | application/json | Request body 의 MIME Type |
| Authorization | <auth-key> | Authentication endpoint 를 통해 수령한 인증 토큰 |
Request Body
| Parameter | Type | Required | Description |
|---|---|---|---|
| projectId | String | Yes | Notifly 팀에서 제공드리는 project ID 입니다. 문의 사항은 contact@notifly.tech 으로 이메일 부탁드립니다. |
| userId | String | Yes | 서비스 유저 ID |
| eventName | String | Yes | 이벤트명 |
| eventParams | Object | No | 이벤트 파라미터 값들 |
| segmentationEventParamKeys | List | No | 정교한 캠페인 집행을 위해 특정 파라미터들을 notifly 엔진에서 특수하게 처리합니다. 문의 사항은 contact@notifly.tech 으로 이메일 부탁드립니다. |
- 한번에 여러 이벤트를 로깅 할 수도 있습니다. 같은 형식의 Object들을 Array 형태로 호출 해주시면 됩니다.
- 1회 호출당 최대 500개의 이벤트 까지만 로깅 가능합니다.
Response Headers
| Parameter | Value |
|---|---|
| Status code | 200 OK |
| Content-Type | application/json |
Response Body
{
"data": "some-success-response-from-notifly-engine",
"error": null
}
Sample Request
POST https://api.notifly.tech/track-event
Content-Type: application/json
Authorization: <auth-key>
[
{
"projectId": "project-id",
"userId": "user-id",
"eventName": "event-name",
"eventParams": {},
"segmentationEventParamKeys": []
}
]
3. Set User Properties
이 endpoint 를 통해 notifly 엔진에 사용자 속성들을 등록할 수 있습니다. 등록된 속성값들은 캠페인 진행 시 사용자 세그먼트 설정에 활용하여 보다 효율적인 마케팅이 가능합니다.
Endpoint
POST https://api.notifly.tech/set-user-properties
Specifications
Request Headers
| Parameter | Value | Description |
|---|---|---|
| Content-Type | application/json | Request body 의 MIME Type |
| Authorization | <auth-key> | Authentication endpoint 를 통해 수령한 인증 토큰 |
Request Body
| Parameter | Type | Required | Description |
|---|---|---|---|
| projectId | String | Yes | Notifly 팀에서 제공드리는 project ID 입니다. 문의 사항은 contact@notifly.tech 으로 이메일 부탁드립니다. |
| userId | String | Yes | 유저 ID |
| userProperties | Object | Yes | 업데이트 할 사용자 속성값들 |
- 한번에 여러 사용자의 정보를 업데이트 할 수도 있습니다. 같은 형식의 Object들을 Array 형태로 호출 해주시면 됩니다.
- 1회 호출당 최대 1,000명의 사용자 까지만 업데이트 가능합니다.
이메일과 전화번호 정보는 userProperties에 반드시 $email, $phone_number를 키값으로 정의해주어야 정상 등록됩니다. 아래 Example를 참고해주세요.
Response Headers
| Parameter | Value |
|---|---|
| Status code | 200 OK |
| Content-Type | application/json |
Response Body
{
"data": "업데이트 된 row count",
"error": null
}
Sample Request
POST https://api.notifly.tech/set-user-properties
Content-Type: application/json
Authorization: <auth-key>
[
{
"projectId": "project-id",
"userProperties": {
"$email": "user1@example.com",
"$phone_number": "010-5555-5555"
},
"userId": "user-id-1"
},
{
"projectId": "project-id",
"userProperties": {
"$email": "user2@example.com",
"$phone_number": "010-7777-7777"
},
"userId": "user-id-2"
}
]
4. Delete Users
이 endpoint 를 통해 notifly에 등록된 사용자들을 삭제할 수 있습니다.
Endpoint
DELETE https://api.notifly.tech/users
Specifications
Request Headers
| Parameter | Value | Description |
|---|---|---|
| Content-Type | application/json | Request body 의 MIME Type |
| Authorization | <auth-key> | Authentication endpoint 를 통해 수령한 인증 토큰 |
Request Body
| Parameter | Type | Required | Description |
|---|---|---|---|
| projectId | String | Yes | Notifly 팀에서 제공드리는 project ID 입니다. 문의 사항은 contact@notifly.tech 으로 이메일 부탁드립니다. |
| userId | String | No | 삭제할 유저 ID |
| userProperties | Object | No | 삭제할 유저의 사용자 속성 |
| String | No | 삭제할 유저의 이메일 주소 | |
| - $phone_number | String | No | 삭제할 유저의 전화번호 |
- 한번에 여러 사용자의 정보를 삭제 할 수도 있습니다. 같은 형식의 Object들을 Array 형태로 호출 해주시면 됩니다.
- 1회 호출당 최대 1,000명의 사용자 까지만 삭제 가능합니다.
- 유저 ID, 이메일, 전화번호를 기준으로 삭제할 수 있습니 다.
- 전화번호는 정확히 일치해야 합니다. (010-1234-1234 != 01012341234)
Response Headers
| Parameter | Value |
|---|---|
| Status code | 200 OK |
| Content-Type | application/json |
Response Body
{
"data": "삭제된 row count",
"error": null
}
Sample Request
DELETE https://api.notifly.tech/users
Content-Type: application/json
Authorization: <auth-key>
{
"projectId": "<project-id>",
"userId": "<user-id>"
}
5. Campaign Triggering
이 endpoint 를 통해 캠페인을 트리거링할 수 있습니다. 등록된 유저 및 디바이스의 속성 뿐만 아니라 API Request Body의 파라미터까지 모두 사용하여 메시지를 개인화할 수 있습니다.
주의 사항
- HTTP API를 이용한 캠페인 발송의 경우, 캠페인의 발송 시간 유형이 API 기반 발송으로 설정되어있는 경우에만 사용 가능합니다.
Endpoint
POST https://api.notifly.tech/projects/<projectId>/campaigns/<campaignId>/send
Specifications
Request Headers
| Parameter | Value | Description |
|---|---|---|
| Content-Type | application/json | Request body 의 MIME Type |
| Authorization | <auth-key> | Authentication endpoint 를 통해 수령한 인증 토큰 |
Path Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
| projectId | String | Yes | Notifly의 설정 페이지에서 확인하실 수 있습니다. |
| campaignId | String | Yes | 캠페인 리스트의 캠페인 목록을 클릭하여 상세보기 팝업 상단에서 확인하실 수 있습니다. |
Request Body
| Parameter | Type | Required | Description |
|---|---|---|---|
| recipients | List | Yes | 수신자 목록(최대 1000명) |
| - type | String | No | 수신자의 유형입니다. (기본값: user-id). 현재 user-id, phone-number, email 만 지원합니다. |
| - userId | String | No | 메시지를 발송할 유저의 ID 입니다. type이 user-id인 경우 필수입니다. |
| - phoneNumber | String | No | 메시지를 발송할 유저의 전화번호 입니다. type이 phone-number인 경우 필수입니다. |
| String | No | 메시지를 발송할 유저의 이메일 주소 입니다. type이 email인 경우 필수입니다. | |
| - eventParams | Object | No | 이벤트 파라미터를 포함하는 객체 입니다. 해당 파라미터로 메시지를 개인화시킬 수 있습니다. |
현재 API 기반 발송은 다음 채널에 대해 지원됩니다.
- 푸시 알림
- 웹 푸시 알림
- 카카오 알림톡
- 카카오 친구톡
- 문자 메시지
- 이메일
설정된 캠페인의 발송 채널마다 지원되는 수신자 유형이 다를 수 있습니다. 만약 캠페인의 발송 채널이 지원하지 않는 수신자 유형을 사용하면, API 응답으로 400 Bad Request가 반환됩니다.
- 푸시 알림:
user-id유형의 수신자만 지원됩니다. - 웹 푸시 알림:
user-id유형의 수신자만 지원됩니다. - 카카오 알림톡:
user-id및phone-number유형의 수신자를 지원합니다. - 카카오 친구톡:
user-id및phone-number유형의 수신자를 지원합니다. - 문자 메시지:
user-id및phone-number유형의 수신자를 지원합니다. - 이메일:
user-id,email유형의 수신자만 지원됩니다.
수신자 유형이 user-id가 아닌 경우, Notifly 서버는 유저 데이터베이스에서 해당 유저에 대한 정보를 받아오지 않고, 요청 payload에 명시되어있는 정보로만 발송을 시도합니다.
따라서, 수신자 유형이 user-id가 아닌 경우 유저 기반 메시지 개인화 기능을 사용하실 수 없습니다. 예를 들어, 이 경우 캠페인의 메시지 내용에 {{ user["name"] }} 님 안녕하세요
라는 구문이 들어있다면, 개인화는 실패하고 님 안녕하세요 라는 메시지가 발송됩니다.
이벤트 패러미터는 모든 유형에 대해 사용 가능합니다. 더 자세한 API 기반 발송 캠페인 예시는 이 곳을 참고해주세요.
API 기반 발송은 중복 발송을 방지하기 위해 수신자의 중복 여부를 체크합니다. 동일한 수신자가 여러 번 포함되어 있는 경우, 중복된 수신자는 한 번만 발송됩니다. 다음은 채널 별 중복 제거 규칙입니다.
- 푸시 알 림: 동일한 디바이스 토큰일 경우, 하나의 디바이스 토큰에만 메시지를 발송합니다.
- 웹 푸시 알림: 동일한 디바이스 토큰일 경우, 하나의 디바이스 토큰에만 메시지를 발송합니다.
- 카카오 알림톡: 동일한 전화번호일 경우, 하나의 전화번호에만 메시지를 발송합니다.
- 카카오 친구톡: 동일한 전화번호일 경우, 하나의 전화번호에만 메시지를 발송합니다.
- 문자 메시지: 동일한 전화번호일 경우, 하나의 전화번호에만 메시지를 발송합니다.
- 이메일: 동일한 이메일 주소일 경우, 하나의 이메일 주소에만 메시지를 발송합니다.
Response
| Status Code | Content-Type | Description | Example Response |
|---|---|---|---|
| 200 OK | application/json | 캠페인이 정상적으로 트리거 되었습니다. | {"code": 200, "success":true,"error":null} |
| 400 Bad Request | application/json | 잘못된 요청입니다. | {"code": 400, "success":false,"error":"Bad request: some-error-message"} |
| 401 Unauthorized | application/json | 토큰이 만료되었거나, 인증 정보가 유효하지 않습니다. | {"code": 401, "success":false,"error":"Unauthorized: Invalid token"} |
| 405 Method Not Allowed | application/json | 지원되지 않는 HTTP Method 입니다. | {"code": 405, "success":false,"error":"Method not allowed: some-error-message"} |
| 413 Payload Too Large | application/json | 요청 payload가 너무 큽니다. | {"code": 413, "success":false,"error":"Payload too large: some-error-message"} |
| 500 Internal Server Error | application/json | 노티플라이 서버 오류입니다. 지속적으로 500 에러가 발생한다면, 노티플라이 팀에 문의해주세요. | {"code": 500, "success":false,"error":"some-error-message"} |
| 501 Not Implemented | application/json | 아직 지원되지 않는 기능입니다. | {"code": 501, "success":false,"error":"Not implemented: some-error-message"} |
Sample Request
POST https://api.notifly.tech/projects/<projectId>/campaigns/<campaignId>/send
Content-Type: application/json
Authorization: <auth-key>
{
"recipients": [
{
"userId": "alice",
"eventParams": {
"messageTitle": "Hello Alice!",
"messageBody": "How are you?"
}
},
{
"userId": "bob",
"eventParams": {
"messageTitle": "Hello Bob!",
"messageBody": "How are you?"
}
}
]
}
6. Campaign Statistics Retrieval
이 endpoint를 통해 캠페인의 발송 현황을 조회하실 수 있습니다.
전일 데이터는 매일 오전 7시(KST)에 집계가 완료됩니다. 정확한 전일 데이터 조회를 위해서는 오전 7시 이후에 API를 호출하시기를 권장합니다.
Endpoint
GET https://api.notifly.tech/projects/<projectId>/campaigns/<campaignId>/stats
Specifications
Request Headers
| Parameter | Value | Description |
|---|---|---|
| Content-Type | application/json | Request body MIME type |
| Authorization | <auth-key> | Authentication endpoint 를 통해 수령한 인증 토큰 |
Path Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
| projectId | String | Yes | Notifly의 설정 페이지에서 확인하실 수 있습니다. |
| campaignId | String | Yes | 캠페인 리스트의 캠페인 목록을 클릭하여 상세보기 팝업 상단에서 확인하실 수 있습니다. |
Query Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
| start | String | Yes | 조회 시작일자 (yyyy-MM-ddTHH:mm:ss.sssZ 형식, UTC 기준) |
| end | String | Yes | 조회 종료일자 (yyyy-MM-ddTHH:mm:ss.sssZ 형식, UTC 기준) |
Response
| Status Code | Content-Type | Description | Example Response |
|---|---|---|---|
| 200 OK | application/json | 캠페인 통계를 정상적으로 조회한 경우 | { "data": { "lastCollectedAt": "2024-10-29 04:00:00", "stats": [...] }, "error": null } |
| 400 Bad Request | application/json | 잘못된 요청 파라미터가 있는 경우 | { "data": null, "error": "Invalid project ID" } |
| 401 Unauthorized | application/json | 인증 토큰이 유효하지 않거나 누락된 경우 | { "data": null, "error": "Unauthorized: Invalid Authorization Token" } |
| 500 Internal Server Error | application/json | 서버 오류가 발생한 경우. 지속적인 500 오류는 Notifly 팀에 문의 | { "data": null, "error": "Internal Server Error: some-error-message" } |
Response Body
{
"data": {
"lastCollectedAt": "2024-10-29 04:00:00",
"stats": [
{
"metricName": "구매_이벤트",
"metricType": "conversion",
"conversionType": "sales_conversion",
"totalSum": 930832,
"dailySums": [
{
"date": "2024-09-30",
"sum": 0,
"dimensionSums": [
{
"dimensionKey": "이름",
"dimensionValue": "이름1",
"sum": 0
},
...
]
},
...
]
},
{
"metricName": "구매_이벤트",
"metricType": "conversion",
"conversionType": "total_count_conversion",
"totalCount": 15,
"dailyCounts": [
{
"date": "2024-09-30",
"count": 0,
"dimensionCounts": [
{
"dimensionKey": "이름",
"dimensionValue": "이름1",
"count": 0
},
...
]
},
...
]
},
{
"metricName": "구매_이벤트",
"metricType": "conversion",
"conversionType": "direct_count_conversion",
"totalCount": 3,
"dailyCounts": [
{
"date": "2024-09-30",
"count": 0,
"dimensionCounts": [
{
"dimensionKey": "이름",
"dimensionValue": "이름1",
"count": 0
},
...
]
},
...
]
},
{
"metricName": "send_success",
"metricType": "standard",
"totalCount": 550,
"dailyCounts": [
{
"date": "2024-10-28",
"count": 250,
"dimensionCounts": [
{
"dimensionKey": "region",
"dimensionValue": "us-east",
"count": 100
},
{
"dimensionKey": "region",
"dimensionValue": "us-west",
"count": 150
}
]
},
{
"date": "2024-10-29",
"count": 300,
"dimensionCounts": [
{
"dimensionKey": "region",
"dimensionValue": "us-east",
"count": 200
},
{
"dimensionKey": "region",
"dimensionValue": "us-west",
"count": 100
}
]
}
]
}
]
},
"error": null
}
| Field | Type | Description |
|---|---|---|
| lastCollectedAt | String | 최종 집계 시간. KST 기준 날짜와 시간(yyyy-MM-dd HH:mm:ss 형식)으로 반환됩니다. |
| stats | Array | 캠페인 발송 현황 데이터 배열 |
| - metricName | String | 집계된 메트릭의 이름 (예: send_success, send_failure, push_click 등).메트릭 이름에 대한 설명은 Standard Metric 종류를 참조하세요. |
| - metricType | String | 메트릭의 타입 (standard 또는 conversion) |
| - conversionType | String | 전환 지표의 타 입 (direct_count_conversion 또는 total_count_conversion 또는 sales_conversion). metricType이 conversion인 경우만 존재. |
| - totalCount (totalSum) | Number | 지정된 기간 동안 해당 메트릭이 누적된 총 횟수 (전환 매출액 (sales_convesion)에 대해서는 합) |
| - dailyCounts (dailySums) | Array | 일별로 집계된 메트릭 데이터 |
| - date | String | 집계 날짜 (yyyy-MM-dd 형식, KST 기준) |
| - count (sum) | Number | 해당 날짜에 발생한 메트릭 횟수 (전환 매출액 (sales_convesion)에 대해서는 합) |
| - dimensionCounts (dimensionSums) | Array | 대시보드 구성 - 사용자 속성을 입력한 경우 속성별로 집계된 메트릭 데이터 |
| - dimensionKey | String | 사용자 속성 키 |
| - dimensionValue | String | 사용자 속성 값 |
| - count (sum) | Number | 해당 속성 값에 대한 메트릭 횟수 (전환 매출액 (sales_convesion)에 대해서는 합) |
Standard Metric 종류
| Metric Name | Description |
|---|---|
| send_success | 발송 성공 |
| send_failure | 발송 실패 |
| rendering_failure | 개인화 메시지 렌더링 실패 |
| pending | 발송 시도(집계 중) |
| push_delivered | 푸시알림 수신 |
| push_click | 푸시알림 클릭 |
| failover_text_message_send_success | 대체 문자 메시지 발송 성공 |
| failover_text_message_send_failure | 대체 문자 메시지 발송 실패 |
| email_send | 이메일 발송 |
| email_delivery | 이메일 도달 |
| email_open | 이메일 오픈 |
| email_click | 이메일 클릭 |
| email_bounce | 이메일 반송 |
| email_complaint | 이메일 수신 거부 |
| email_rendering_failure | 이메일 렌더링 실패 |
| in_app_message_show | 앱 팝업 노출 |
| in_web_message_show | 웹 팝업 노출 |
| main_button_click | 팝업 메인버튼 클릭 |
| close_button_click | 팝업 닫기 버튼 클릭 |
| hide_in_app_message_button_click | 인앱 팝업 다시(특정 기간) 보지 않기 버튼 클릭 |
| cancelled | 취소 이벤트로 인한 발송 취소 |
| skipped__noisy_filter | 중복 발송으로 인한 발송 취소 |
| skipped__fatigue_management | 피로도 관리로 인한 발송 취소 |
| skipped__forbidden_timing_filter | 금지된 발송 시간으로 인한 발송 취소 |
| skipped__excluded_user_filter | 발신 제외 유저로 인한 발송 취소 |
| skipped__aborted_message | 메시지 Abort로 인한 발송 취소(Connected Contents) |
| skipped__global_frequency_limit_filter | 발송량 제한 조건으로 인한 발송 취소 |
Sample Request
GET https://api.notifly.tech/projects/<projectId>/campaigns/<campaignId>/stats?start=2024-10-27T15:00:00.000Z&end=2024-10-29T15:00:00.000Z
Content-Type: application/json
Authorization: <auth-key>
2025-07-06 부터, conversionType 필드가 추가되었습니다.
7. Send Text Message
이 endpoint 를 통해 문자 메시지(SMS, LMS, MMS)를 보낼 수 있습니다.
주의 사항
- HTTP REST API를 이용한 문자 발송은 Notifly 문자 자체 발송 설정이 되어있을 경우에만 가능합니다.
- 발신 번호는 자체 발송 설정에 입력된 번호가 사용 됩니다.
- 아직 API를 이용한 발송 결과에 대한 통계는 UI로 제공 되지 않습니다. 정보가 필요하실 경우 contact@notifly.tech 으로 이메일 부탁드립니다.
Endpoint
POST https://api.notifly.tech/messages/text-message
Specifications
Request Headers
| Parameter | Value | Description |
|---|---|---|
| Content-Type | application/json | Request body 의 MIME Type |
| Authorization | <auth-key> | Authentication endpoint 를 통해 수령한 인증 토큰 |
Request Body
| Parameter | Type | Required | Description |
|---|---|---|---|
| projectId | String | Yes | Notifly의 설정 페이지에서 확인하실 수 있습니다. |
| type | String | Yes | 메시지 유형 (sms, lms 또는 mms) |
| title | String | No | 본문 제목(lms, mms에만 사용) |
| body | String | Yes | 본문 내용 |
| sendNo | String | No | 여러 발신 번호가 등록되어 있을 경우 발송할 번호 |
| recipientList | List | Yes | 수신자 목록(최대 1000명) |
| - recipientNo | String | Yes | 수신 번호 |
Response
| Status Code | Content-Type | Example Response |
|---|---|---|
| 200 OK | application/json | {"success":true} |
| 400 Bad Request | application/json | {"error":"some-error-message"} |
| 405 Method Not Allowed | application/json | {"error":"Method not allowed"} |
| 413 Payload Too Large | application/json | {"error":"Payload Too Large"} |
| 500 Internal Server Error | application/json | {"error":"Internal Server Error"} |
Sample Request
POST https://api.notifly.tech/messages/text-message
Content-Type: application/json
Authorization: <auth-key>
{
"projectId": "project-id",
"type": "sms",
"body": "Message Body",
"recipientList": [
{
"recipientNo": "01012345678"
},
{
"recipientNo": "01045671234"
}
]
}
8. Manage Text Message 080 Block Service
이 섹션에서는 080 수신 거부 서비스와 관련된 API를 설명합니다.
8.1 Find Recipients
Endpoint
GET https://api.notifly.tech/projects/<projectId>/messages/text-message/blockservice/recipients
Specifications
Request Headers
| Parameter | Value | Description |
|---|---|---|
| Content-Type | application/json | Request body의 MIME Type |
| Authorization | <auth-key> | Authentication endpoint 를 통해 수령한 인증 토큰 |
Path Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
| projectId | String | Yes | 프로젝트 ID |
Query Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
| unsubscribeNo | String | Yes | 080 수신 거부 번호 (최대 25자) |
| recipientNo | String | No | 수신 거부 대상자 번호 (최대 25자) |
| startRequestDate | String | No | 수신 거부 요청 시작값(yyyy-MM-dd HH:mm:ss) |
| endRequestDate | String | No | 수신 거부 요청 종료값(yyyy-MM-dd HH:mm:ss) |
| pageNum | Integer | No | 페이지 번호(기본값 : 1) |
| pageSize | Integer | No | 검색 수(기본값 : 15, 최대 1000) |
Response Headers
| Parameter | Value |
|---|---|
| Status code | 200 OK |
| Content-Type | application/json |
Response Body
{
"pageNum": 1,
"pageSize": 15,
"totalCount": 1,
"data": [
{
"unsubscribeNo": "0808888888",
"recipientNo": "01000000000",
"requestDate": "2018-05-14 17:07:29.0"
},
{
"unsubscribeNo": "0808888888",
"recipientNo": "010012341234",
"requestDate": "2018-05-14 17:07:29.0"
},
...
]
}
Sample Request
GET https://api.notifly.tech/projects/<projectId>/messages/text-message/blockservice/recipients?unsubscribeNo=0800000000&pageNum=1&pageSize=15
Content-Type: application/json
Authorization: <auth-key>
8.2 Register Recipients
Endpoint
POST https://api.notifly.tech/projects/<projectId>/messages/text-message/blockservice/recipients
Specifications
Request Headers
| Parameter | Value | Description |
|---|---|---|
| Content-Type | application/json | Request body의 MIME Type |
| Authorization | <auth-key> | Authentication endpoint 를 통해 수령한 인증 토큰 |
Path Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
| projectId | String | Yes | 프로젝트 ID |
Request Body
| Parameter | Type | Required | Description |
|---|---|---|---|
| unsubscribeNo | String | Yes | 080 수신거부번호 (최대 25자) |
| recipientNoList | List | Yes | 수신 거부 대상자 번호 (최대 10개) |
Response Headers
| Parameter | Value |
|---|---|
| Status code | 200 OK |
| Content-Type | application/json |
Sample Request
POST https://api.notifly.tech/projects/<projectId>/messages/text-message/blockservice/recipients
Content-Type: application/json
Authorization: <auth-key>
{
"unsubscribeNo": "0800000000",
"recipientNoList": ["0100000000", "0100000001"]
}
8.3 Remove Recipients
Endpoint
DELETE https://api.notifly.tech/projects/<projectId>/messages/text-message/blockservice/recipients/removes
Specifications
Request Headers
| Parameter | Value | Description |
|---|---|---|
| Content-Type | application/json | Request body의 MIME Type |
| Authorization | <auth-key> | Authentication endpoint 를 통해 수령한 인증 토큰 |
Path Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
| projectId | String | Yes | 프로젝트 ID |
Query Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
| unsubscribeNo | String | Yes | 080 수신 거부 번호 (최대 20자) |
| recipientNoList | String | Yes | 삭제할 수신 거부 번호 (콤마로 구분) |
Response Headers
| Parameter | Value |
|---|---|
| Status code | 200 OK |
| Content-Type | application/json |
Sample Request
DELETE https://api.notifly.tech/projects/<projectId>/messages/text-message/blockservice/recipients/removes?unsubscribeNo=0800000000&recipientNoList=0100000000,0100000001
Content-Type: application/json
Authorization: <auth-key>
9.Send Kakao Alimtalk Message
이 endpoint 를 통해 카카오 알림톡 메시지를 발송할 수 있습니다. 알림톡 템플릿 코드와 수신자 리스트를 사용하여 메시지를 전송합니다.
주의 사항
- API를 이용한 발송 결과에 대한 통계는 별도 페이지를 통해 제공하고 있습니다. 정보가 필요하실 경우 contact@notifly.tech 으로 이메일 부탁드립니다.
Endpoint
POST https://api.notifly.tech/messages/kakao-alimtalk
Specifications
Request Headers
| Parameter | Value | Description |
|---|---|---|
| Content-Type | application/json | Request body 의 MIME Type |
| Authorization | <auth-key> | Authentication endpoint 를 통해 수령한 인증 토큰 |
Request Body
| Parameter | Type | Required | Description |
|---|---|---|---|
| projectId | String | Yes | Notifly의 설정 페이지에서 확인하실 수 있습니다. |
| templateId | String | Yes | 등록한 발송 템플릿 ID (알림톡 템플릿 리스트에서 확인 가능) |
| channelId | String | No | 발송할 카카오 채널 ID |
| resendSendNo | String | No | 대체 발송 발신 번호 (Notifly 문자 자체 발송 이 설정된 번호) |
| senderGroupingKey | String | No | 발신 그룹핑 키(최대 100자) |
| recipientList | List | Yes | 수신자 목록(최대 1000명) |
| - recipientNo | String | Yes | 수신 번호 (최대 15자) |
| - templateParameter | Object | No | 템플릿 파라미터, 치환할 변수가 포함된 경우 필수 |
| - resendParameter | ResendParameter | No | 대체 발송 정보 |
resendParameter
| Parameter | Type | Required | Description |
|---|---|---|---|
| isResend | Boolean | No | 발송 실패 시, 문자 대체 발송 여부. 기본값은 false. |
| resendType | String | No | 대체 발송 타입(SMS, LMS). 템플릿 본문 길이에 따라 타입이 구분됩니다. |
| resendTitle | String | No | LMS 대체 발송 제목. 기본값은 플러스친구 ID입니다. |
| resendContent | String | No | 대체 발송 내용. 기본값은 메시지 본문과 웹링크 버튼명 - 웹링크 Mobile 링크입니다. |
Response
| Status Code | Content-Type | Example Response |
|---|---|---|
| 200 OK | application/json | {"success":true} |
| 400 Bad Request | application/json | {"error":"some-error-message"} |
| 405 Method Not Allowed | application/json | {"error":"Method not allowed"} |
| 413 Payload Too Large | application/json | {"error":"Payload Too Large"} |
| 500 Internal Server Error | application/json | {"error":"Internal Server Error"} |
Sample Request
POST https://api.notifly.tech/messages/kakao-alimtalk
Content-Type: application/json
Authorization: <auth-key>
{
"projectId": "project-id",
"templateId": "template-id",
"recipientList": [
{
"recipientNo": "01012345678",
"templateParameter": {
"user_name": "Notifly User"
}
},
{
"recipientNo": "01056781234",
"templateParameter": {
"user_name": "Notifly Customer"
}
}
]
}