작업 제출과 폴링
제출 엔드포인트는 모두 비동기 작업입니다. 제출 후task_id를 반환하며, 이후 GET /v1/midjourney/{task_id}를 주기적으로 조회하여 상태를 확인하고 SUCCESS / FAILURE가 될 때까지 기다립니다.
- 폴링 주기: 3~5초에 한 번을 권장합니다. 더 높은 빈도는 의미가 없으며 할당량만 낭비합니다.
- web 요청 안에서 동기적으로 차단(blocking)하며 작업 완료를 기다리지 마세요. 제출 후 즉시
task_id를 반환하고, 프런트엔드에서 비동기로 폴링하도록 하세요.
프롬프트 설계
좋은 프롬프트:- 주체를 앞에: 먼저 주체, 다음으로 장면 묘사, 마지막에 수식어 순으로 작성합니다.
- 구조화 파라미터를 명시적으로:
--ar/--v/--s(또는 대응하는 body 필드)를 사용하면 기본값에 의존하는 것보다 더 통제하기 쉽습니다. - 모호한 단어 피하기:
photorealistic이realistic보다 더 명확합니다.
niji: true + version: "7"을 전달하면 플랫폼이 --niji 7로 정규화하며, 과금은 midjourney@imagine-niji7로 처리됩니다.
참조 이미지 모범 사례
- 5 MiB 미만으로 압축: 플랫폼 상한은 12 MiB이지만, 작은 이미지가 전송 / 처리 모두 더 빠릅니다.
- 형식은 PNG / JPG / WebP 모두 가능하며, 고품질 JPG를 권장합니다.
- 해상도는 1024~2048 px로 충분하며, 그 이상은 낭비입니다.
- 참조 이미지 가중치
iw(0~3, 기본 1): >1이면 원본에 더 가깝고, <1이면 더 자유롭습니다.
오류 처리와 재시도 전략
2차 작업 플로우
⚠️ inpaint가 MODAL 상태에 진입하면 30분 이내에 반드시 /modal을 호출해야 합니다. 그렇지 않으면 백그라운드에서 자동으로 CANCEL + 환불됩니다.
video 과금 제어
- 단일 클립:
batch_size: 1→ 1 ×midjourney@video차감 - 배치 4클립:
batch_size: 4→ 4 ×midjourney@video차감 - 고화질 단일 클립:
video_type: "vid_1.1_i2v_720"+batch_size: 1→ 1 ×midjourney@video-720p차감
batch_size=1을 사용하고, 비교용 배치일 때만 4를 사용하세요. 기본값으로 4를 켜지 마세요(비용이 N배로 증가).
동시성과 처리량
- 플랫폼은 분당 제출 수에 상한이 있으며, 초과 시
429를 반환하므로 백오프 재시도가 필요합니다. - 실제 생성 동시성은 시스템 용량에 따라 결정되며, 초과 시 대기열에 들어갑니다. 작업이 오랫동안
SUBMITTED에 멈춰 있으면 보통 대기 중인 상태입니다. - 폴링 시 반드시
sleep을 넣고, sleep 없는 무한 루프를 돌리지 마세요.