이지센더 API

이 문서는 이지센더 API의 인증 방식, 공통 요청 규칙, 오류 응답 형식과 각 API의 요청 및 응답 구조를 설명합니다.

Base URL

https://ezsender.net/api/v1

인증

X-EZSENDER-ID: YOUR_API_ID

X-EZSENDER-SECRET: YOUR_SECRET_KEY

요청 형식

모든 요청 본문은 JSON이며, 응답도 JSON으로 반환됩니다. 인증 정보는 계정 설정의 API 설정 화면에서 생성합니다.

{
  "code": "Errors.Data.InvalidRequest",
  "httpStatusCode": 400,
  "message": "잘못된 요청입니다."
}

인증 확인 예시

curl -X GET "https://ezsender.net/api/v1/auth-check" \
  -H "X-EZSENDER-ID: YOUR_API_ID" \
  -H "X-EZSENDER-SECRET: YOUR_SECRET_KEY"

Live Console

API 테스트

발급한 API ID와 secret key로 문서의 엔드포인트를 현재 환경에서 직접 호출하고 응답을 확인합니다.

GET/api/v1/auth-check
Request Body

Response

요청을 실행하면 상태 코드, 응답 시간, JSON 응답이 표시됩니다.

인증

인증 확인

발급된 API ID와 secret key 조합이 유효한지 확인합니다.

GET/auth-check

Request

요청 본문 없음

Response

{
  "success": true,
  "authenticated": true,
  "apiKeyId": "ez_xxx",
  "userIdx": 1
}

이메일 캠페인

이메일 캠페인 목록조회

캠페인을 최신 생성순으로 조회합니다.

GET/campaigns

Query

pagelimitstatussearch

Request

요청 본문 없음

Response

{
  "campaigns": [
    {
      "id": 10,
      "title": "7월 뉴스레터",
      "status": "draft"
    }
  ],
  "pagination": {
    "page": 1,
    "limit": 20,
    "total": 1,
    "totalPages": 1
  }
}

이메일 캠페인 생성

작성중 상태의 이메일 캠페인을 생성합니다.

POST/campaigns

Request

{
  "title": "7월 뉴스레터",
  "subject": "새 소식입니다",
  "html": "<h1>Hello</h1>",
  "recipients": {
    "groups": [
      1
    ],
    "segments": []
  }
}

Response

{
  "campaign": {
    "id": 10,
    "title": "7월 뉴스레터",
    "status": "draft"
  }
}

이메일 캠페인 상세내용 조회

캠페인 본문과 수신 대상 설정을 함께 조회합니다.

GET/campaigns/{id}

Request

요청 본문 없음

Response

{
  "campaign": {
    "id": 10,
    "subject": "새 소식입니다",
    "html": "<h1>Hello</h1>",
    "recipients": {
      "groups": [
        1
      ]
    }
  }
}

이메일 캠페인 수정

제목, 본문, 발신자, 수신 대상 등을 수정합니다.

PATCH/campaigns/{id}

Request

{
  "subject": "수정된 제목",
  "html": "<p>Updated</p>"
}

Response

{
  "campaign": {
    "id": 10,
    "subject": "수정된 제목"
  }
}

이메일 캠페인 삭제

캠페인을 삭제합니다.

DELETE/campaigns/{id}

Request

요청 본문 없음

Response

{
  "success": true,
  "deletedId": 10
}

이메일 캠페인 복사

기존 캠페인과 수신 대상 설정을 복사해 새 작성중 캠페인을 만듭니다.

POST/campaigns/{id}/copy

Request

요청 본문 없음

Response

{
  "campaign": {
    "id": 11,
    "title": "7월 뉴스레터 복사본",
    "status": "draft"
  }
}

이메일 캠페인 메일 테스트 발송

캠페인 본문을 지정한 이메일 주소로 테스트 발송합니다.

POST/campaigns/{id}/test-send

Request

{
  "to": [
    "test@example.com"
  ]
}

Response

{
  "success": true,
  "recipients": [
    "test@example.com"
  ],
  "server": "primary-mail"
}

이메일 캠페인 메일 발송 실행

즉시 발송 또는 예약 발송을 실행합니다.

POST/campaigns/{id}/send

Request

{
  "mode": "immediate"
}

Response

{
  "success": true,
  "id": 10,
  "status": "scheduled",
  "recipientCount": 120
}

주소록 그룹

주소록 그룹 목록조회

주소록 그룹과 그룹별 구독자 수를 조회합니다.

GET/address-books/groups

Request

요청 본문 없음

Response

{
  "groups": [
    {
      "id": 1,
      "name": "기본 그룹",
      "active": 100,
      "total": 102
    }
  ]
}

주소록 그룹 생성

새 주소록 그룹을 생성합니다.

POST/address-books/groups

Request

{
  "name": "VIP 고객",
  "description": "고가치 고객 그룹"
}

Response

{
  "group": {
    "id": 2,
    "name": "VIP 고객"
  }
}

주소록 그룹명 수정

그룹 이름 또는 설명을 수정합니다.

PATCH/address-books/groups/{id}

Request

{
  "name": "VIP 고객 2026"
}

Response

{
  "group": {
    "id": 2,
    "name": "VIP 고객 2026"
  }
}

주소록 그룹 삭제

주소록 그룹을 삭제합니다.

DELETE/address-books/groups/{id}

Request

{
  "deleteSubscribers": false
}

Response

{
  "success": true,
  "deletedId": 2
}

구독자

구독자 목록 조회

구독자 목록을 이메일 기준으로 조회합니다.

GET/subscribers

Query

pagelimitgroupIdstatussearch

Request

요청 본문 없음

Response

{
  "subscribers": [
    {
      "id": 100,
      "email": "user@example.com",
      "status": "active",
      "groups": [
        "기본 그룹"
      ]
    }
  ]
}

구독자 추가

지정한 그룹에 구독자를 추가하거나 기존 정보를 갱신합니다.

POST/subscribers

Request

{
  "groupName": "기본 그룹",
  "subscribers": [
    {
      "email": "user@example.com",
      "name": "홍길동"
    }
  ]
}

Response

{
  "success": true,
  "inserted": 1,
  "updated": 0,
  "failed": 0
}

구독자 상태 변경

구독자 상태를 active 또는 unsubscribed로 변경합니다.

PATCH/subscribers

Request

{
  "emails": [
    "user@example.com"
  ],
  "status": "unsubscribed"
}

Response

{
  "success": true,
  "updated": 1,
  "status": "unsubscribed"
}

구독자 삭제

구독자를 ID 또는 이메일 기준으로 삭제합니다.

DELETE/subscribers

Request

{
  "emails": [
    "user@example.com"
  ]
}

Response

{
  "success": true,
  "deleted": 1
}

자동화

자동화 목록조회

자동화 목록을 조회합니다.

GET/automations

Query

pagelimitstatus

Request

요청 본문 없음

Response

{
  "automations": [
    {
      "id": 3,
      "name": "웰컴 자동화",
      "status": "active"
    }
  ]
}

자동화 상세내역

자동화 시작 조건과 단계 구성을 조회합니다.

GET/automations/{id}

Request

요청 본문 없음

Response

{
  "automation": {
    "id": 3,
    "name": "웰컴 자동화",
    "steps": []
  }
}

자동화 메일 추가

자동화 흐름에 이메일 단계를 추가합니다.

POST/automations/{id}/emails

Request

{
  "title": "첫 인사 메일",
  "subject": "가입을 환영합니다",
  "html": "<p>Welcome</p>"
}

Response

{
  "success": true,
  "step": {
    "type": "email",
    "title": "첫 인사 메일"
  }
}

자동화 발송 실행

활성 상태의 대상 선택 후 실행 자동화를, 활성 구독자에게 실행합니다.

POST/automations/{id}/run

Request

{
  "subscriberIds": [
    12
  ]
}

Response

{
  "success": true,
  "id": 3,
  "status": "active",
  "executionCount": 1
}