Skip to main content
자주 묻는 질문, 성능 최적화, 오류 처리에 대한 모범 사례를 정리했습니다. 연동 전에 통독하는 것을 권장합니다.

작업 제출과 폴링

제출 엔드포인트는 모두 비동기 작업입니다. 제출 후 task_id를 반환하며, 이후 GET /v1/midjourney/{task_id}를 주기적으로 조회하여 상태를 확인하고 SUCCESS / FAILURE가 될 때까지 기다립니다.
  • 폴링 주기: 3~5초에 한 번을 권장합니다. 더 높은 빈도는 의미가 없으며 할당량만 낭비합니다.
  • web 요청 안에서 동기적으로 차단(blocking)하며 작업 완료를 기다리지 마세요. 제출 후 즉시 task_id를 반환하고, 프런트엔드에서 비동기로 폴링하도록 하세요.

프롬프트 설계

좋은 프롬프트:
  • 주체를 앞에: 먼저 주체, 다음으로 장면 묘사, 마지막에 수식어 순으로 작성합니다.
  • 구조화 파라미터를 명시적으로: --ar / --v / --s(또는 대응하는 body 필드)를 사용하면 기본값에 의존하는 것보다 더 통제하기 쉽습니다.
  • 모호한 단어 피하기: photorealisticrealistic보다 더 명확합니다.
피해야 할 것: 지나치게 추상적인 표현(“make it good”), 산만한 주체(여러 병렬 객체에 주종 구분이 없는 경우), 단어에 따옴표 붙이기(리터럴 값으로 처리됨). Niji 애니메이션: 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 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 차감
권장: 결과물이 1클립만 필요하면 batch_size=1을 사용하고, 비교용 배치일 때만 4를 사용하세요. 기본값으로 4를 켜지 마세요(비용이 N배로 증가).

동시성과 처리량

  • 플랫폼은 분당 제출 수에 상한이 있으며, 초과 시 429를 반환하므로 백오프 재시도가 필요합니다.
  • 실제 생성 동시성은 시스템 용량에 따라 결정되며, 초과 시 대기열에 들어갑니다. 작업이 오랫동안 SUBMITTED에 멈춰 있으면 보통 대기 중인 상태입니다.
  • 폴링 시 반드시 sleep을 넣고, sleep 없는 무한 루프를 돌리지 마세요.

모니터링 권장 사항

문제 해결 체크리스트