문서로 건너뛰기
API

발송 레인 목록

메일이 지나가는 두 레인과 각각의 반송 및 불만 수치.

GET/sending/streams

2개 호출을 워크스페이스에 실제로 실행합니다.

GET /sending/streams

메일이 지나가는 두 레인과 각각의 반송 및 불만 수치.

예시

emails:read가 필요합니다. 메일은 각자의 대기열과 평판을 가진 두 레인으로 나갑니다. 비밀번호 재설정이나 영수증 같은 앱 메일은 transactional, 뉴스레터는 broadcast입니다. 각 레인에는 최근 7일의 수치와, 단체 발송 레인에 적용되는 limits가 함께 옵니다.

curl
curl "$OE/sending/streams" -H "$AUTH"
응답
{ "object": "list", "data": [{  "object": "sending_stream",  "stream": "broadcast",  "status": "active",  "pausedAt": null,  "pausedReason": null,  "resumedAt": null,  "window": {    "since": "2026-10-04T09:41:00.000Z",    "until": "2026-10-11T09:41:00.000Z",    "recipients": 18240,    "bounced": 212,    "complained": 9,    "bounceRate": 0.0116,    "complaintRate": 0.0005  },  "limits": { "bounceRate": 0.04, "complaintRate": 0.002, "minimumRecipients": 500, "windowDays": 7 }}] }

단체 발송 레인은 minimumRecipients에 도달한 뒤, 그 7일 동안 반송률이 4%를 넘거나 불만률이 0.2%를 넘으면 스스로 일시중지됩니다. 어느 쪽인지는 pausedReason이 알려 주고, 워크스페이스 소유자가 이메일을 받으며, 앱 메일은 계속 나갑니다.

일시중지된 동안에는 stream을 broadcast로 지정해 보낸 메시지와 새 단체 발송이 409 stream_paused가 되고, 이미 나가고 있던 단체 발송은 보류됩니다.

레인 고르기

emails:send가 필요합니다. POST /emails, POST /emails/batch의 각 메시지, POST /templates/{id}/send의 stream이 레인을 고릅니다. 따로 지정하지 않으면 transactional이고, 단체 발송의 모든 사본은 broadcast로 나갑니다.

curl
curl -X POST "$OE/emails" -H "$AUTH" -H "Content-Type: application/json" \  -d '{ "from": "[email protected]", "to": "[email protected]", "subject": "What is new in October", "text": "Three things shipped this month.", "stream": "broadcast" }'
응답
{ "object": "email", "id": "msg_5f1c9a0e7b2d4c6a8e3f1b7d", "status": "queued", "stream": "broadcast" }

SMTP에서는 X-OpenEmail-Stream: broadcast 헤더가 같은 일을 하며, 메시지가 나가기 전에 제거됩니다.

일시중지된 레인 재개

domains:write와 워크스페이스 소유자가 필요합니다. POST /sending/streams/broadcast/resume가 레인을 재개합니다. 보류된 메시지가 바로 나가고 7일 집계가 지금부터 다시 시작되므로, 먼저 오디언스를 정리하세요.

curl
curl -X POST "$OE/sending/streams/broadcast/resume" -H "$AUTH"
응답
{  "object": "sending_stream",  "stream": "broadcast",  "status": "active",  "pausedAt": null,  "pausedReason": null,  "resumedAt": null,  "window": {    "since": "2026-10-04T09:41:00.000Z",    "until": "2026-10-11T09:41:00.000Z",    "recipients": 18240,    "bounced": 212,    "complained": 9,    "bounceRate": 0.0116,    "complaintRate": 0.0005  },  "limits": { "bounceRate": 0.04, "complaintRate": 0.002, "minimumRecipients": 500, "windowDays": 7 }}

일시중지되지 않은 레인은 409 stream_not_paused입니다.

OAuth 액세스 토큰으로 이 호출을 하려면 인증 코드가 필요합니다. 앱이 최근 60분 안에 코드를 인증하기 전까지 호출은 403 step_up_required로 응답하고 아무것도 바꾸지 않습니다. API 키는 요구받지 않습니다. 코드를 요청하고 인증하는 방법은 인증 페이지에 있습니다.

레퍼런스