Admin APIDM 자동화
모집메세지 생성
확인 완료한 크리에이터명·금액을 템플릿에 치환해 최종 모집메세지 시트를 생성합니다.
모집메세지 생성
수작업으로 확인한 크리에이터명, 금액을 템플릿에 치환하고, 지정한 시트에 최종 모집메세지를 생성합니다.
동기 API입니다. 템플릿 치환만 하므로 외부 API 호출이 없고 1초 내에 끝납니다. 응답에 다운로드 링크가 바로 담기므로 폴링이 필요 없습니다.
HTTP 요청
POST /ai/admin/dm-automation/generate-message
Authorization: Bearer {access_token}
Content-Type: multipart/form-dataForm Data
| 파라미터 | 타입 | 필수 | 설명 |
|---|---|---|---|
file | File | 예 | 크리에이터명·금액을 확인·수정한 .xlsx 또는 .xls |
sourceSheet | String | 예 | 계정/크리에이터명/금액이 있는 시트명 |
targetSheet | String | 예 | 결과를 생성하거나 덮어쓸 시트명 |
template1 | String | 아니오 | 모집메세지 1 템플릿 |
template2 | String | 아니오 | 모집메세지 2 템플릿 |
sender | String | 아니오 | 보낸사람 |
template1, template2 중 하나 이상은 반드시 입력해야 합니다. 둘 다 비우면 400 / INVALID_REQUEST입니다.
소스 시트 필요 컬럼
| 필드 | 허용 컬럼명 | 필수 | 설명 |
|---|---|---|---|
| 계정 | 계정, 계정 링크, 계정링크, 계정url, 계정 URL | 예 | Instagram 계정 URL |
| 크리에이터명 | 크리에이터명, 크리에이터 명, full_name, 풀네임 | 예 | 최종 DM에 들어갈 이름 |
| 금액 | 금액, 추천금액 | 예 | 최종 DM에 들어갈 제안 금액 |
템플릿 치환 규칙
| placeholder | 치환값 |
|---|---|
[크리에이터명] | 행별 크리에이터명 |
[금액] | 행별 금액 |
placeholder가 없는 템플릿은 원문 그대로 출력됩니다. 텍스트가 길면 template1, template2로 나눠 입력하고, 각각 모집메세지 1 / 모집메세지 2 컬럼으로 출력됩니다.
템플릿 예시:
[크리에이터명]様
突然のDMにて失礼いたします。
ご報酬:[금액]円(税込)응답
성공 응답
{
"status": 200,
"code": null,
"message": "모집메세지 생성이 완료되었습니다.",
"data": {
"jobId": 43,
"jobType": "GENERATE_MESSAGE",
"status": "COMPLETED",
"requestedBy": "admin01",
"inputFileName": "dm_collect_result_checked.xlsx",
"resultFileName": "dm_message_result.xlsx",
"downloadUrl": "https://storage.googleapis.com/glowb-input/dm-automation/GENERATE_MESSAGE/43/result_dm_message_result.xlsx",
"rowCount": 218,
"errorCount": 0,
"errorMessage": null,
"createdAt": "2026-07-23T15:20:03",
"completedAt": "2026-07-23T15:20:04"
}
}응답 형태는 잡 상세 조회와 동일합니다. downloadUrl로 바로 이동하면 됩니다.
결과 시트 컬럼
| 컬럼 | 설명 |
|---|---|
계정 | 원본 계정 URL |
크리에이터명 | 원본 크리에이터명 |
금액 | 원본 금액 |
모집메세지 1 | template1 치환 결과 |
모집메세지 2 | template2 치환 결과 |
보낸사람 | 요청의 sender 값 |
원본 workbook에 targetSheet를 생성하거나 기존 시트를 덮어쓴 파일이 반환됩니다.
에러 응답
HTTP 상태는 항상 200이며, 아래 코드는 응답 본문의 status 값입니다.
본문 status | code | 설명 |
|---|---|---|
400 | NO_FILE_UPLOADED | 파일이 비어 있음 |
400 | UNSUPPORTED_FILE_FORMAT | 확장자가 xlsx/xls가 아님 |
400 | INVALID_REQUEST | 템플릿 미입력, 또는 업로드 파일을 읽을 수 없음 |
500 | PYTHON_SERVER_ERROR | 시트명 오류, 필수 컬럼 누락 등 파이썬 처리 실패 |
500 | S3_UPLOAD_FAILED | 결과 파일 저장 실패 |
401 | - | 인증 실패 |
403 | - | ADMIN 권한 필요 |
파이썬 처리에 실패해도 잡은 FAILED 상태로 이력에 남습니다.
실패 사유는 잡 상세 조회의 errorMessage에서 확인할 수 있습니다.