레시피
cURL·JavaScript·Python 예시입니다.레시피의 코드는 서버 주소와 키를 환경변수로 받습니다. 값은 직접 쓰지 않습니다.
환경 준비 — bashexport MELLOWZ_STUDIO_URL="<서버 주소>"export MELLOWZ_STUDIO_TOKEN="<연결 화면에서 만든 키>"
키가 통하는지 확인하기
모델 목록 조회가 통하면 키와 권한이 맞는 것입니다. 401이면 키나 권한 문제입니다.
curl -sS "$MELLOWZ_STUDIO_URL/v1/models/image" \-H "Authorization: Bearer $MELLOWZ_STUDIO_TOKEN"
모델과 옵션 보기
위 응답에서 모델 하나를 고릅니다. 모델마다 지원하는 비율, 해상도, 품질 값이 다르므로, 접수에는 그 모델이 지원하는 값만 씁니다. 영상과 오디오는
/v1/models/video, /v1/models/audio입니다.이미지 만들기
maxCherry는 감수할 상한입니다. <모델 id>와 상한은 위에서 본 가격에 맞춰 정합니다. 키는 요청마다 새로 만듭니다.curl -sS -X POST "$MELLOWZ_STUDIO_URL/v1/images" \-H "Authorization: Bearer $MELLOWZ_STUDIO_TOKEN" \-H "Content-Type: application/json" \-d '{"modelId": "<모델 id>","prompt": "비 오는 골목의 고양이","candidateCount": 1,"maxCherry": 100,"idempotencyKey": "recipe-image-0001"}'
영상 만들기
영상은 캔버스 문서의 revision을 지정합니다. 문서는 앱에서 만들거나 MCP로 저작한 것입니다.
curl -sS -X POST "$MELLOWZ_STUDIO_URL/v1/videos" \-H "Authorization: Bearer $MELLOWZ_STUDIO_TOKEN" \-H "Content-Type: application/json" \-d '{"documentId": "<문서 id>","revision": 1,"tier": "draft","maxCherry": 500,"idempotencyKey": "recipe-video-0001"}'
음악 만들기
curl -sS -X POST "$MELLOWZ_STUDIO_URL/v1/audio" \-H "Authorization: Bearer $MELLOWZ_STUDIO_TOKEN" \-H "Content-Type: application/json" \-d '{"modelId": "<모델 id>","prompt": "잔잔한 피아노 배경음","maxCherry": 100,"idempotencyKey": "recipe-audio-0001"}'
작업 폴링하고 결과 받기
접수 응답의 작업 id로 조회합니다. 이미지 접수 응답은 작업 객체이고
id가 작업 id입니다. 영상과 오디오는 jobs 배열의 각 항목 id입니다. 진행 중이면 poll_after_seconds(이미지는 응답 최상위, 오디오는 job 안)만큼 기다렸다가 다시 부르고, 끝나면 멈춥니다. 영상 응답에는 이 값이 없으니 10초 간격으로 부릅니다.curl -sS "$MELLOWZ_STUDIO_URL/v1/images/<작업 id>" \-H "Authorization: Bearer $MELLOWZ_STUDIO_TOKEN"
끝났다고 성공은 아닙니다. 이미지는
done이 성공이고 failed일 때 job.error를, 영상과 오디오는 succeeded가 성공이고 failed일 때 job.failure를 확인하세요. 폴링 대신 웹훅으로 종료 알림을 받을 수도 있습니다.업로드한 파일 쓰기
이미지 접수의
referenceAssets는 에셋 참조(assetId, revision) 배열이며 최대 5개입니다. 파일은 먼저 에셋으로 올려야 합니다. 업로드는 POST /assets이고 키에 에셋 업로드 권한이 있어야 합니다. 멀티파트 폼으로 보내며 파일은 20MiB까지입니다.| 폼 필드 | 필수 | 뜻 |
|---|---|---|
file | 예 | 파일 하나 |
name | 아니요 | 에셋 이름 |
folderId | 아니요 | 넣을 폴더 |
role | 아니요 | character, background, prop 중 하나 |
tags | 아니요 | 문자열 배열을 JSON 글자로 |
위 필드 말고 다른 필드를 보내면 400입니다. 성공하면 201과 함께 에셋 정보가 오고, 그
assetId와 revision을 referenceAssets에 넣습니다.curl -sS -X POST "$MELLOWZ_STUDIO_URL/assets" \-H "Authorization: Bearer $MELLOWZ_STUDIO_TOKEN" \-F "file=@./reference.png" \-F "name=참조 이미지"
작업 취소하기
대기 중인 작업만 취소됩니다. 이미지는 취소에도 멱등 키가 필요합니다.
curl -sS -X POST "$MELLOWZ_STUDIO_URL/v1/images/<작업 id>/cancel" \-H "Authorization: Bearer $MELLOWZ_STUDIO_TOKEN" \-H "Content-Type: application/json" \-d '{ "idempotencyKey": "recipe-cancel-0001" }'
이미 시작된 작업은 409(
cancel_reason: already_started)입니다. 영상 탭의 경로를 /v1/audio/<작업 id>/cancel로 바꾸면 오디오 취소입니다.사용량 읽기
사용량을 읽는 공개 경로는 없습니다. 설정의 개발자 사용량 화면(
/settings/developer-usage)에서 일, 키, 모델별로 봅니다. 환불분은 합계에서 빠집니다.