빠른 시작

레드빈8 웹사이트에서 하던 문자·알림톡 발송을 REST API 로 그대로 사용할 수 있습니다. 회원가입, 로그인, 충전, 발신번호 승인은 웹사이트에서 하고, 발송과 결과 수신만 API 로 연동합니다.

연동 흐름

  1. 회원가입 · 로그인 · 충전 — 웹사이트에서 평소처럼 진행합니다. API 발송도 같은 잔액에서 차감됩니다.
  2. 발신번호 승인 — 발신번호 관리에서 등록·승인받습니다.
  3. API 키 발급 — API 연동 메뉴에서 키를 만들고, API 로 사용할 발신번호를 허용(스위치 켜기)합니다.
  4. 알림톡/브랜드메시지 — 웹사이트에서 발신프로필과 템플릿을 등록·검수받고, 발급된 발신프로필 키와 템플릿 코드를 API 에 전달합니다. 사업자 회원만 사용할 수 있습니다.
  5. 발송 — POST /v1/messages/… 로 요청합니다. 응답은 202 Accepted 이며 결과는 비동기로 확정됩니다.
  6. 결과 수신 — Webhook 으로 받거나 조회 API 로 폴링합니다.

기본 정보

Base URLhttps://api-01.redbean8.io.kr/v1
인증Authorization: Bearer ak_… (자세히)
요청 형식Content-Type: application/json; charset=utf-8 (파일 업로드만 multipart/form-data)
응답 형식JSON. 성공 {"request_id","data"} / 실패 {"request_id","error":{"code","message","details"}}
시각응답은 ISO 8601(+09:00). 요청의 send_at 은 오프셋이 없으면 한국시간(KST)으로 해석합니다.
전화번호숫자만, 또는 하이픈 포함 모두 허용 (예: 01012345678, 010-1234-5678)

첫 발송

아래 요청은 SMS 1건을 접수합니다. 처음에는 "dry_run": true 를 넣어 과금·발송 없이 검증만 해 볼 수 있습니다.

curl
curl -X POST https://api-01.redbean8.io.kr/v1/messages/sms \
  -H "Authorization: Bearer $REDBEAN_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: order-20261107-0001" \
  -d '{
    "from": "0212345678",
    "to": ["01012345678"],
    "text": "[레드빈8] 인증번호는 123456 입니다.",
    "client_ref": "order-20261107-0001"
  }'
Python
import os, requests

r = requests.post(
    "https://api-01.redbean8.io.kr/v1/messages/sms",
    headers={
        "Authorization": f"Bearer {os.environ['REDBEAN_API_KEY']}",
        "Idempotency-Key": "order-20261107-0001",
    },
    json={
        "from": "0212345678",
        "to": ["01012345678"],
        "text": "[레드빈8] 인증번호는 123456 입니다.",
        "client_ref": "order-20261107-0001",
    },
    timeout=15,
)
print(r.status_code, r.json())
Node.js
const res = await fetch("https://api-01.redbean8.io.kr/v1/messages/sms", {
  method: "POST",
  headers: {
    "Authorization": `Bearer ${process.env.REDBEAN_API_KEY}`,
    "Content-Type": "application/json",
    "Idempotency-Key": "order-20261107-0001",
  },
  body: JSON.stringify({
    from: "0212345678",
    to: ["01012345678"],
    text: "[레드빈8] 인증번호는 123456 입니다.",
    client_ref: "order-20261107-0001",
  }),
});
console.log(res.status, await res.json());
PHP
<?php
$ch = curl_init('https://api-01.redbean8.io.kr/v1/messages/sms');
curl_setopt_array($ch, [
    CURLOPT_POST           => true,
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_TIMEOUT        => 15,
    CURLOPT_HTTPHEADER     => [
        'Authorization: Bearer ' . getenv('REDBEAN_API_KEY'),
        'Content-Type: application/json',
        'Idempotency-Key: order-20261107-0001',
    ],
    CURLOPT_POSTFIELDS     => json_encode([
        'from'       => '0212345678',
        'to'         => ['01012345678'],
        'text'       => '[레드빈8] 인증번호는 123456 입니다.',
        'client_ref' => 'order-20261107-0001',
    ], JSON_UNESCAPED_UNICODE),
]);
$body = curl_exec($ch);
echo curl_getinfo($ch, CURLINFO_HTTP_CODE), ' ', $body;

응답 (202 Accepted)

JSON
{
  "request_id": "req_56439ccd3f54703bd824",
  "data": {
    "message_id": 1374,
    "channel": "sms",
    "status": "ACCEPTED",
    "accepted": 1,
    "rejected_count": 0,
    "rejected": [],
    "amount": 10.5,
    "send_at": null,
    "client_ref": "order-20261107-0001"
  }
}

202 는 접수를 뜻합니다. 통신사 전달 결과(성공/실패)는 이후 Webhook 또는 조회 API 로 확인하세요. 실패 건은 요금이 자동 환불됩니다.

제공 기능 한눈에 보기

기능엔드포인트설명서
SMS / LMS / MMSPOST /v1/messages/{sms|lms|mms}보기
MMS 이미지 업로드POST /v1/files/mms보기
알림톡POST /v1/messages/alimtalk보기
브랜드메시지POST /v1/messages/brand보기
발송 목록 · 상세 · 수신자별 결과GET /v1/messages[/{id}[/recipients]]보기
예약 취소POST /v1/messages/{id}/cancel보기
결과 Webhook고객사 URL 로 POST보기
잔액 · 발신번호 · 발신프로필 · 템플릿GET /v1/account/balance 외보기