새로운 문서를 작성 중입니다.새 문서로 이동
ClawOps Docs
API Reference

배치 발신(캠페인) 생성

POST
/v1/accounts/{accountId}/call-batches

명단에 자동으로 전화를 거는 배치를 만듭니다. 생성 즉시 반환되며, 실제 발신은 동시 통화 한도·분당 발신 속도·발신 가능 시간대를 지켜가며 순차적으로 진행됩니다.

대상은 CallFlowId · AgentId · Url 중 정확히 하나를 지정합니다 (발신 API와 동일).

수신자별로 다른 값을 쓰려면 Tasks[].Variables에 넣습니다. 콜 플로우에서 {{변수명}}으로 참조합니다. 변수 이름은 영문/숫자/밑줄만 가능합니다(값은 한글 가능).

발신 차수(Rounds): 몇 번 걸지, 얼마 간격으로 걸지, 각 차수를 언제 걸지를 한 배열로 정합니다. 배열 인덱스가 곧 차수라 Rounds[0]이 1차 발신이고 그 뒤가 재시도입니다. 차수마다 시간대를 따로 줄 수 있어 "1차는 낮에, 안 받으면 2·3차는 저녁에" 같은 진행이 됩니다.

발신 가능 시간대: 광고성 전화는 21시~익일 8시 발신이 법으로 금지되어 있어 이 시간에는 Rounds[].Windows 설정과 무관하게 발신되지 않습니다. Windows는 그보다 더 좁게 제한할 때 사용합니다.

배치 발신은 계정별로 활성화가 필요합니다.

Authorization

BearerAuth
AuthorizationBearer <token>

API Key를 Bearer 토큰으로 전달

In: header

Path Parameters

accountId*string

Request Body

application/json

TypeScript Definitions

Use the request body type in TypeScript.

Response Body

application/json

application/json

application/json

application/json

application/json

curl -X POST "https://example.com/v1/accounts/AC1a2b3c4d/call-batches" \  -H "Content-Type: application/json" \  -d '{    "Name": "7월 예약 확인",    "From": "07052358010",    "CallFlowId": "cf_9a8b7c6d",    "MaxConcurrency": 3,    "PacingPerMinute": 20,    "MachineDetection": "Enable",    "Rounds": [      {        "Windows": [          {            "Days": [              1,              2,              3,              4,              5            ],            "Start": "10:00",            "End": "18:00"          }        ]      },      {        "After": 30,        "On": [          "no-answer",          "busy"        ],        "Windows": [          {            "Days": [              1,              2,              3,              4,              5            ],            "Start": "18:00",            "End": "21:00"          }        ]      },      {        "After": 45,        "On": [          "no-answer",          "busy"        ],        "Windows": [          {            "Days": [              1,              2,              3,              4,              5            ],            "Start": "18:00",            "End": "21:00"          }        ]      }    ],    "MessagePolicy": {      "OnFinalFail": {        "Body": "{{customer_name}}님, {{visit_date}} 예약 확인차 전화드렸는데 연결이 어려워 문자 남깁니다."      }    },    "Tasks": [      {        "To": "01012345678",        "Variables": {          "customer_name": "홍길동",          "visit_date": "7월 30일"        }      },      {        "To": "01087654321",        "Variables": {          "customer_name": "김영희",          "visit_date": "7월 31일"        }      }    ]  }'
{
  "batchId": "clx1a2b3c4d5e",
  "name": "7월 예약 확인",
  "status": "draft",
  "from": "07052358010",
  "callFlowId": "string",
  "agentId": "string",
  "url": "string",
  "maxConcurrency": 0,
  "pacingPerMinute": 0,
  "timezone": "string",
  "startAt": "2019-08-24T14:15:22Z",
  "endAt": "2019-08-24T14:15:22Z",
  "machineDetection": "Enable",
  "rounds": [
    {
      "after": 0,
      "on": [
        "string"
      ],
      "windows": [
        {
          "days": [
            0
          ],
          "start": "string",
          "end": "string"
        }
      ]
    }
  ],
  "messagePolicy": {
    "onFirstFail": {
      "body": "string"
    },
    "onFinalFail": {
      "body": "string"
    }
  },
  "warnings": [
    "07052358010 번호로 문자가 전송된 이력이 없습니다. 문자 발신번호 등록은 음성과 별개 절차라, 등록되지 않은 번호는 발송 요청은 성공해도 통신사에서 전량 거절될 수 있습니다."
  ],
  "dateCreated": "2019-08-24T14:15:22Z",
  "dateUpdated": "2019-08-24T14:15:22Z",
  "counts": {
    "pending": 120,
    "dialing": 3,
    "done": 77
  }
}
{
  "error": "string",
  "code": "recipient_blocked"
}
{
  "error": "string",
  "code": "recipient_blocked"
}
{
  "error": "string",
  "code": "recipient_blocked"
}
{
  "error": "string",
  "code": "recipient_blocked"
}