Admin API인스타 DM 자동응답
대화 상대에게 보내기
DM 이력 화면에서 그 상대에게 바로 DM 을 보냅니다. 보낼 수단은 서버가 정합니다.
대화 상대에게 보내기
DM 이력 화면에서 보고 있는 상대에게 바로 DM 을 보냅니다.
실제 인스타그램 DM 이 발송됩니다. test 서버도 DM 데이터는 prod 와 같은 것을 보므로 화면의 상대는 실제 크리에이터입니다.
보낼 수단은 서버가 정합니다
화면은 본문만 보냅니다. 무엇으로 보낼지는 서버가 정하고, 실제로 나간 수단은 응답의 via 로 알 수 있습니다.
지금은 파트너십 메시지 → 일반 DM 순으로만 보내고, 둘 다 안 되면 보내지 않습니다 — AutoDM 으로는 보내지 않습니다.
HTTP 요청
POST /ai/admin/ig-dm/threads/{peerIgsid}/messages
Authorization: Bearer {access_token}
Content-Type: application/json
{
"content": "안녕하세요, Glow.B 입니다.",
"force": false
}Path Parameters
| 파라미터 | 타입 | 필수 | 설명 |
|---|---|---|---|
peerIgsid | String | 예 | 대화 상대 ID (대화 상대 목록의 peerIgsid) |
Request Body
| 필드 | 타입 | 필수 | 설명 |
|---|---|---|---|
content | String | 예 | 보낼 내용 |
force | Boolean | 아니오 | 수신을 중단한 크리에이터에게도 보낼지. 기본 false |
applicationId | Long | 아니오 | 미비한 일정에서 보낼 때의 신청 ID. 주면 실제로 보내진 뒤 그 신청에 연락 이력(INSTAGRAM_DM)을 남깁니다 |
campaignNo | Integer | 아니오 | applicationId 와 함께 주면 그 신청이 이 캠페인 것인지 보내기 전에 대조합니다 |
pendingCase | String | 아니오 | 연락 이력에 남길 미비 사유(미비한 일정 목록의 pendingCase) |
미비한 일정 DM 위젯에서 쓰기
- 대화 상대 목록을
applicationId={신청ID}&folder=PARTNERSHIP으로 조회합니다. - 결과가 있으면 그
peerIgsid로 대화를 열고, 이 API 에applicationId·campaignNo·pendingCase를 함께 실어 보냅니다. - 결과가 비면 아직 그 크리에이터와 파트너십 대화가 없는 것입니다 — "아직 파트너십 메시지를 보내지 않았습니다" 로 안내하세요. 첫 메시지는 인스타그램 앱에서 보내야 합니다.
응답
발송 실패도 200 으로 오고 data.ok 가 false 입니다. 요청 자체가 잘못된 경우만 에러 응답입니다.
성공 응답 (200 OK)
{
"status": 200,
"code": null,
"message": "DM 발송 요청을 처리했습니다.",
"data": {
"peerIgsid": "1699622574467666",
"peerUsername": "give_me_jishin",
"ok": true,
"via": "PARTNERSHIP",
"messageId": "aWdfZAG1faXRlbToxOklH..."
}
}발송 실패 (200 OK, ok=false)
{
"status": 200,
"code": null,
"message": "DM 발송 요청을 처리했습니다.",
"data": {
"peerIgsid": "1346286794282890",
"peerUsername": "beom710",
"partnershipReason": "파트너십 대화가 없습니다. 첫 메시지는 Business Suite 에서 보내야 합니다.",
"apiReason": "(#10) This message is sent outside of allowed window.",
"ok": false,
"reason": "파트너십·일반 DM 으로 보낼 수 없어 보내지 않았습니다(AutoDM 으로는 넘기지 않습니다). (#10) This message is sent outside of allowed window."
}
}| 필드 | 설명 |
|---|---|
ok | 보냈으면 true |
via | 실제로 나간 수단 — PARTNERSHIP(파트너십 메시지) / API(일반 DM) |
messageId | 파트너십·API 로 나간 메시지 ID |
partnershipReason | 파트너십을 건너뛴 이유 (AUTO 에서 다음 단계로 넘어간 경우) |
apiReason | 일반 DM 으로 보내지 못한 이유 (예: 24시간 창이 닫힘) |
reason | 보내지 못한 이유 |
contactLogId | applicationId 를 줬고 실제로 보내졌을 때 남긴 연락 이력 ID. 요약은 파트너십이면 인스타 파트너십 메시지 발송 (@계정), 일반 DM 이면 인스타 DM 발송 (@계정) |
contactLogError | 메시지는 보내졌지만 연락 이력 저장이 실패한 경우의 사유. 다시 보내지 마세요(중복 발송) |
보낸 메시지는 릴레이가 기록하므로 곧바로 대화 상세에 나타납니다.
차단 규칙
| 상황 | 결과 |
|---|---|
주고받은 기록이 없는 peerIgsid | 404 (INVALID_DATA) |
없는 applicationId, 또는 campaignNo 와 다른 캠페인의 신청 | 404 (INVALID_DATA) — 보내지 않습니다 |
content 가 비어 있음 | 404 (INVALID_DATA) |
| DM 인증한 크리에이터가 수신을 중단함 | 404 (INVALID_DATA). force: true 면 보냅니다 |
| test 환경에서 허용 목록 밖 계정 | 파트너십 메시지는 보냅니다(test 에서도 실발송 — 기존 파트너십 대화 상대만). 파트너십이 안 되면 일반 DM 으로는 넘기지 않고 ok=false |
| 파트너십 대화가 없고 일반 DM 24시간 창도 닫힘 | ok=false — AutoDM 으로 넘기지 않습니다 |
에러 응답
| 상태 코드 | 설명 |
|---|---|
404 | 위 차단 규칙 (code: INVALID_DATA, 사유는 message) — 기존 DM 발송과 같은 예외 코드입니다 |
401 | 인증 실패 |
403 | ADMIN 권한 없음 |