Glowb Dev Docs
Admin APIAdmin Pending Participants API

POST .../dm — 인스타 DM 발송

미비한 일정 대상자 한 명에게 신청서의 인스타 핸들로 AutoDM 을 보내고 연락 이력을 남깁니다.

인스타 DM 발송

미비한 일정 대상자 한 명에게 신청서에 적힌 인스타 핸들로 @glow.b_kor 계정이 DM 을 보냅니다(AutoDM). 실제로 전송되면 연락 이력이 자동으로 남습니다(method: INSTAGRAM_DM) — 문자 발송(pending-sms)과 같은 방식, 1인 1DM 입니다.

  • 인스타그램 캠페인만 보냅니다. 틱톡·네이버 등 다른 캠페인은 400 으로 거절합니다
  • 크리에이터 DM 인증과 무관합니다. 인증 여부·수신 거부 기록을 보지 않고 항상 신청서 핸들로 보냅니다
  • 발송 계정은 고르지 않습니다 — test 는 test_glowb_kor, prod 는 prod_glowb_kor
  • 보낼 수 없으면 400 과 사유를 돌려줍니다(아래 표)

신청서 핸들은 본인 확인을 거치지 않은 값입니다. 크리에이터가 적어낸 핸들을 그대로 쓰므로 오타나 대행 입력이면 엉뚱한 사람에게 갑니다. 우리에게 말을 건 적 없는 상대에게는 메타 API 로 보낼 수 없어((#10) 허용되는 창 외부) 인스타 앱을 직접 조작하는 AutoDM 만 씁니다.

파트너십 메시지로 보내려면 이 API 대신 DM 이력 위젯을 씁니다 — 대화 상대 목록을 applicationId·folder=PARTNERSHIP 으로 찾고 대화 상대에게 보내기에 applicationId 를 실어 보내면, 보내진 뒤 같은 연락 이력(INSTAGRAM_DM)이 남습니다. 파트너십 대화가 없으면 목록이 비어 옵니다.

HTTP 요청

POST /ai/admin/campaigns/{campaignNo}/pending-participants/{applicationId}/dm
Authorization: Bearer {access_token}
Content-Type: application/json

Path Parameters

파라미터타입필수설명
campaignNoint예캠페인 번호
applicationIdlong예신청 ID (목록 API 의 applicationId). 이 캠페인의 신청이어야 합니다

Request Body

{
  "content": "안녕하세요! 1차 제작물이 아직 제출되지 않았습니다. 확인 부탁드립니다.",
  "pendingCase": "FIRST_REVIEW_NOT_SUBMITTED"
}
필드타입필수설명
contentstring예보낼 문구 (최대 2000자)
pendingCasePendingCase아니오미처리 케이스. 연락 이력에 함께 남습니다

응답

성공 응답 (200 OK)

{
  "status": 200,
  "code": null,
  "message": "인스타 DM 발송 요청 접수",
  "data": {
    "applicationId": 31234,
    "handle": "beom710",
    "instance": "test_glowb_kor",
    "runId": "3f6d2c1a-9d1e-4a5b-8c7f-0e1d2c3b4a59",
    "queued": false
  }
}
필드설명
handle실제로 보낸 인스타 핸들(신청서에서 뽑은 값)
runIdAutoDM 런 식별자 — AutoDM 런 상세(GET /ai/admin/auto-dm/runs/{runId})에서 결과 확인
queuedtrue 면 앞선 발송이 끝나길 기다리는 중, false 면 즉시 시작됨
instanceBlocked발송 계정이 차단·확인중이라 대기열에서 멈춘 경우만 true — 풀어 주기 전엔 안 나갑니다

성공 응답은 발송 큐에 올라갔다는 뜻이지 도착했다는 뜻이 아닙니다. 건당 40~90초가 걸리고, 실제 결과(success/failed/skip)는 AutoDM 런 상세(GET /ai/admin/auto-dm/runs/{runId})에서 확인합니다. Slack #자동dm-알림 에 이 DM 한 통의 결과(완료·실패·미발송과 사유)가 올라옵니다 — 아래 Slack 알림 참고.

여러 명에게 연달아 보내면 요청마다 런이 하나씩 생기고, 인스턴스(@glow.b_kor)가 한 런씩 순서대로 처리합니다. 뒤 요청은 queued: true 로 대기했다가 자동으로 나갑니다.

연락 이력

AutoDM 이 전송 성공을 알려 오면 연락 이력(CONTACT)을 하나 남깁니다. 응답 시점엔 아직 안 나갔으므로 응답엔 이력 ID 가 없습니다. 실패·미발송·취소·차단으로 안 나간 DM 은 이력을 남기지 않습니다 — 그 결과는 Slack 알림으로 확인합니다.

필드값
methodINSTAGRAM_DM
summary인스타 DM 발송 (@핸들)
note실제로 보낸 문구
pendingCase요청의 pendingCase
actorId요청한 관리자

에러 응답

보낼 수 없으면 400(REQUEST_ARGUMENT_INVALID)과 사유를 돌려줍니다.

사유설명
신청을 찾을 수 없습니다없는 applicationId
캠페인 N 의 신청이 아닙니다경로의 campaignNo 와 신청의 캠페인이 다름
인스타그램 캠페인이 아니라 DM 대상이 아닙니다캠페인이 틱톡·네이버 등
인스타그램 계정으로 신청한 건이 아니라 DM 대상이 아닙니다인스타 캠페인인데 신청서 링크가 인스타가 아님 — 실제로 있다
신청서에서 인스타그램 핸들을 읽을 수 없습니다링크에서 계정 이름을 뽑지 못함
test 환경이라 허용 목록 밖의 계정에는 보내지 않습니다아래 참고
환경(test/prod)을 알 수 없어 발송 인스턴스를 정할 수 없습니다로컬 등

content 가 비었으면 요청 검증 단계에서 400 입니다. 인증 실패·관리자 아님은 401 / 403 입니다.

test 환경에서는 허용 목록의 핸들만 실제로 보냅니다. test 신청서 핸들이 실존 계정으로 오염돼 있어서입니다(예: realdonaldtrump). 허용 목록은 glowb.tester3·beom710·lucky_rabbit_0710 입니다. prod 에서는 보지 않습니다.

Slack 알림

#자동dm-알림 에 autoDM-bot 이 이 DM 한 통의 결과를 올립니다 — 알리고 문자·이메일 전송 알림과 같은 모양입니다. test·prod 가 한 채널을 쓰므로 맨 앞에 [TEST] / [PROD] 가 붙습니다.

알림언제
✅ 인스타 DM 발송 완료전송됨
❌ 인스타 DM 발송 실패인스타가 전송을 거부(빨간 점)
⚠️ 인스타 DM 미발송계정 없음·비공개 계정·DM 차단·엔진 오류
❌ 인스타 DM 미발송 (중단)결과 없이 끝남 — 계정 제한·관리자 중지·VM 응답 없음·대기 중 취소 등, 사유와 조치 포함
❓ 인스타 DM 발송 확인 필요차단을 감지한 순간 처리 중이던 대상 — 실제로는 나갔을 수 있음
⚠️ AutoDM 발송 계정 차단계정 제한으로 멈춤 — 풀어 주기 전엔 뒤 DM 이 대기
⏳ AutoDM 발송 지연인스턴스·VM 연결 실패로 자동 재시도 중(런당 한 번)
⏸️ AutoDM 발송 대기발송 계정이 차단·확인중이라 대기열에서 멈춤

각 알림에는 수신자(@핸들·크리에이터 이름), 보낸 문구, 캠페인, 사유·조치, 발송 경로·요청자, 발송 계정이 담깁니다.

On this page