튜토리얼
krea-2-medium-turbo 텍스트 투 이미지 API 사용 방법(curl + Python)
krea-2-medium-turbo는 Krea가 hiapi에서 제공하는 빠르고 저렴한 텍스트 투 이미지 티어입니다. 프롬프트 하나를 보내고 가로세로 비율을 선택하기만 하면 비동기 작업 API를 통해 렌더링된 이미지 한 장을 받을 수 있습니다. 이 가이드에서는 /v1/tasks를 대상으로 바로 복사해 붙여넣을 수 있는 curl 및 Python 요청 예시와 정확한 입력 스키마, 그리고 제가 2026-10-21에 직접 측정한 소요 시간과 오류 동작을 제공합니다. 그중 한 가지 결과는 문서 설명과 상충합니다.
사전 준비 사항
hiapi API 키(sk-...) 하나. API Keys 콘솔에서 생성합니다. 모든 요청은 Authorization: Bearer sk-<your-key>로 인증됩니다. 이것이 유일한 전제 조건입니다. 모델은 서버에서 실행되므로 HTTP 클라이언트 외에는 아무것도 설치할 필요가 없습니다.
입력 스키마
krea-2-medium-turbo는 다섯 개의 필드를 받습니다. 이 중 prompt와 model만 필수입니다:
| 필드 | 필수 | 타입 | 기본값 | 설명 |
|---|---|---|---|---|
model |
예 | string | — | 반드시 정확히 krea-2-medium-turbo여야 합니다. |
prompt |
예 | string | — | 1–5000자. |
aspect_ratio |
아니오 | enum | 1:1 |
1:1, 4:3, 3:2, 16:9, 2.35:1, 4:5, 2:3, 9:16 중 하나. |
creativity |
아니오 | enum | low |
raw(가장 문자적) → low → medium → high(가장 창의적). |
seed |
아니오 | integer | — | 선택 사항. 이 값에 의존하기 전에 아래의 seed 주의 사항을 먼저 읽으세요. |
input 객체는 엄격합니다(additionalProperties: false). 이 표에 없는 필드는 생성이 시작되기 전에 거부됩니다. n / num_images도 없고, resolution이나 size도 없으며, 네거티브 프롬프트 필드도 없습니다. 요청 한 번에 정확히 이미지 한 장을 반환하며, 출력 크기는 전적으로 aspect_ratio에 의해 결정됩니다. hiapi에서 resolution(Seedream, Qwen-Image)이나 size를 받는 다른 이미지 API를 사용해 본 적이 있다면 여기서는 해당 필드를 제거하세요. 그러지 않으면 400이 반환됩니다.
최소 동작 요청(curl)
작업 생성은 즉시 taskId를 반환하며, 이미지는 백그라운드에서 렌더링됩니다.
curl -s -X POST "https://api.hiapi.ai/v1/tasks" \
-H "Authorization: Bearer sk-<your-key>" \
-H "Content-Type: application/json" \
-d '{
"model": "krea-2-medium-turbo",
"input": {
"prompt": "A lighthouse on a rocky coast at golden hour, cinematic wide shot",
"aspect_ratio": "2.35:1",
"creativity": "medium",
"seed": 42
}
}'
응답:
{ "code": 200, "data": { "taskId": "tk-hiapi-01M5E4J4FQVJNSDKQ29BRSMD0A" }, "message": "success" }
그런 다음 id로 작업을 폴링하여 종료 상태에 도달할 때까지 기다립니다:
curl -s "https://api.hiapi.ai/v1/tasks/tk-hiapi-01M5E4J4FQVJNSDKQ29BRSMD0A" \
-H "Authorization: Bearer sk-<your-key>"
완료된 작업은 다음과 같습니다(명확성을 위해 일부 필드는 생략됨):
{
"code": 200,
"data": {
"taskId": "tk-hiapi-01M5E4J4FQVJNSDKQ29BRSMD0A",
"model": "krea-2-medium-turbo",
"status": "success",
"storage": "temp",
"created": 1792549655,
"completed": 1792549681,
"output": [
{
"type": "image",
"url": "https://temp.hiapi.ai/xxxxxxxx/01M5E4J4FQVJNSDKQ29BRSMD0A-0.png",
"artifactId": "280334",
"expireAt": 1793154481
}
]
},
"message": "success"
}
이미지는 data.output[0].url에 있습니다.
Python에서의 동일한 흐름
import time
import requests
API = "https://api.hiapi.ai/v1/tasks"
HEADERS = {
"Authorization": "Bearer sk-<your-key>",
"Content-Type": "application/json",
}
def generate(prompt, aspect_ratio="1:1", creativity="low", seed=None):
body = {
"model": "krea-2-medium-turbo",
"input": {"prompt": prompt, "aspect_ratio": aspect_ratio, "creativity": creativity},
}
if seed is not None:
body["input"]["seed"] = seed
created = requests.post(API, headers=HEADERS, json=body, timeout=30)
created.raise_for_status()
task_id = created.json()["data"]["taskId"]
# 작업이 종료 상태에 도달할 때까지 폴링합니다.
while True:
data = requests.get(f"{API}/{task_id}", headers=HEADERS, timeout=30).json()["data"]
status = data["status"]
if status == "success":
return data["output"][0]["url"]
if status == "fail": # 참고: 여전히 HTTP 200입니다. 아래 참조
raise RuntimeError(f"generation failed: {data}")
time.sleep(3)
url = generate(
"A lighthouse on a rocky coast at golden hour, cinematic wide shot",
aspect_ratio="2.35:1",
creativity="medium",
)
print(url)
프로덕션 환경 주의 사항
- 폴링 또는 콜백 사용. 위의 루프는 3초마다 폴링하며, 동시성이 낮은 환경에서는 문제가 없습니다. 프로덕션 환경에서는 생성 요청 시
callback.url을 함께 보내고when: "final"을 설정하여 폴링 대신 hiapi가 완료된 작업을 여러분에게 POST하도록 할 수 있습니다. 콜백 규약은 task API 문서를 참조하세요. - 생성 실패도 HTTP 200을 반환합니다. 폴링 엔드포인트의 HTTP 상태 코드는 요청의 성공 여부를 나타내며, 이미지의 성공 여부를 나타내지 않습니다. 렌더링 실패는
200과data.status: "fail"로 반환됩니다. HTTP 상태 코드가 아니라data.status를 기준으로 분기하세요. 그렇지 않으면 실패를 성공으로 처리하게 됩니다. - 출력 URL은 임시입니다. 결과는
temp.hiapi.ai의"storage": "temp"에 저장되며expireAt타임스탬프가 붙어 약 7일 후 만료됩니다(제 실행에서는 604,800초). 작업이 완료되면 즉시 바이트를 다운로드하여 다시 호스팅하세요(자체 버킷/CDN). 프로덕션 페이지에서temp.hiapi.aiURL을 직접 핫링크하지 마세요. - 가격은 이미지 한 장당 단일 고정 요금이며 가로세로 비율이나 창의성 수준과 무관합니다. 해상도 티어를 고려할 필요가 없습니다. 하드코딩하지 말고 가격 페이지에서 현재 수치를 확인하세요.
제가 실제로 테스트한 내용(2026-10-21)
아래 내용은 모두 문서가 아닌 실제 호출에서 나온 것입니다:
- 소요 시간과 해상도.
2.35:1요청은 약 26초 만에 완료되었으며(created→completed차이), 반환된 PNG는 1568 × 672 px였습니다. 따라서2.35:1은 실제로 시네마스코프 와이드스크린 크롭이며, 정사각형에 가깝지 않습니다. 작업은 렌더링 후 파일을 임시 저장소로 이동하는 동안 중간 상태handling→archiving→success를 거칩니다. - 열거형 검증은 서버 측에서 강제됩니다.
"aspect_ratio": "21:9"(그럴듯해 보이지만 지원되지 않는 값)를 보내면 즉시400이 반환됩니다:invalid input: aspect_ratio: value must be one of '1:1', '4:3', '3:2', '16:9', '2.35:1', '4:5', '2:3', '9:16'. 오류 메시지가 필드를 명시하고 유효한 값을 나열하므로 프로그래밍 방식으로 처리하기 쉽습니다. - 알 수 없는 필드는 무시되지 않고 400을 반환합니다.
"resolution": "2K"는invalid input: <root>: additional properties 'resolution' not allowed를 반환하며,"n": 2는n에 대해 동일한 오류를 반환합니다. 이것이additionalProperties: false규칙이 작동하는 방식입니다. 다른 모델에서 요청 본문을 복사해 오면 불필요한 필드 때문에 호출 전체가 차단됩니다. - 제 테스트에서
seed는 동일한 이미지를 재현하지 못했습니다. 동일한 프롬프트,seed: 42,aspect_ratio: 2.35:1,creativity: medium으로 연속 두 번 보냈습니다. 두 번 모두 유효한 1568 × 672 이미지를 반환했지만 명백히 다른 장면이었고(하나는 흰색 탑, 다른 하나는 빨간색과 흰색 줄무늬 탑), 파일 크기도 달랐으며(1.30 MB 대 1.51 MB) 해시도 달랐습니다. 이 필드는 허용되며 문서에서 재현 가능하다고 설명되지만, 정확한 픽셀 재현은 보장이 아닌 최선의 노력으로 간주하세요. 특정 장면이 필요하다면 seed로 다시 요청하지 말고 얻은 결과를 저장하세요.
관련 페이지
- krea-2-medium-turbo 모델 페이지——온라인 플레이그라운드와 전체 파라미터 레퍼런스.
- krea-2-medium-turbo API 문서——엔드포인트와 콜백 세부 정보.
- Krea 3 텍스트 투 이미지——더 새롭고 품질 중심의 Krea 티어(
berry/jam모드 포함). 더 세밀한 표현을 원할 때 사용하고, 속도와 저비용을 원할 때는krea-2-medium-turbo를 사용하세요. - hiapi의 AI 이미지 생성 API——동일한 작업 인터페이스 뒤에 있는 다른 텍스트 투 이미지 모델들.
FAQ
어떤 가로세로 비율을 요청할 수 있나요? 여덟 가지입니다: 1:1(기본값), 4:3, 3:2, 16:9, 2.35:1, 4:5, 2:3, 9:16. 다른 값은 400을 반환합니다.
한 번의 호출로 여러 이미지를 생성할 수 있나요? 아니요. n 필드가 없고 스키마가 알 수 없는 속성을 거부하므로 요청당 정확히 이미지 한 장이 생성됩니다. 일괄 생성을 하려면 요청을 반복해서 보내세요(선택적으로 다른 seed 사용).
creativity는 어떤 역할을 하나요? 모델이 프롬프트를 얼마나 문자적으로 따르는지 제어합니다: raw는 표현에 가장 충실하고, high는 가장 많은 해석의 자유를 가지며, low(기본값)와 medium은 그 사이입니다.
krea-2-medium-turbo는 이미지 투 이미지나 편집을 지원하나요? 아니요. 텍스트 투 이미지만 지원합니다. 스키마에 image_urls / 입력 이미지 필드가 없습니다. 기존 이미지를 변환해야 한다면 hiapi의 전용 편집/이미지 투 이미지 모델을 사용하세요.
출력 URL은 얼마나 유효한가요? 임시 저장소에서 제공되며 만료됩니다(제 테스트에서는 약 7일 후). 작업이 완료되면 즉시 이미지를 다운로드하여 다시 호스팅하세요.
관련 글
모든 아티클 보기 →-
튜토리얼
HiAPI API로 hailuo-2.3-fast/image-to-video 호출하는 방법: curl과 Python 실전
빠르고 저렴한 이미지-투-비디오 등급의 첫 실행 요청 — 모델 ID부터 MP4 다운로드까지
-
튜토리얼
HiAPI API로 hailuo-2.3/text-to-video를 호출하는 방법: curl, Python 및 실행 가능한 요청 예시
-
튜토리얼
HiAPI에서 Kandinsky 6.0 Pro 텍스트-투-비디오 사용하기: curl 및 Python 튜토리얼
요청 우선 실전 데모: 프롬프트에서 비디오 클립까지의 호출 구성, 요청 제출, 완료 상태 폴링 및 결과 다운로드