curl --request POST \
--url https://api.apimart.ai/v1/images/generations \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{
"model": "mai-image-2.6",
"prompt": "해 질 무렵의 대학 캠퍼스 포스터, 사실적인 사진 스타일, 영화 같은 조명",
"size": "16:9",
"resolution": "2K"
}'
import requests
response = requests.post(
"https://api.apimart.ai/v1/images/generations",
headers={"Authorization": "Bearer <token>"},
json={
"model": "mai-image-2.6",
"prompt": "해 질 무렵의 대학 캠퍼스 포스터, 사실적인 사진 스타일, 영화 같은 조명",
"size": "16:9",
"resolution": "2K"
}
)
response.raise_for_status()
print(response.json())
const response = await fetch("https://api.apimart.ai/v1/images/generations", {
method: "POST",
headers: {
Authorization: "Bearer <token>",
"Content-Type": "application/json"
},
body: JSON.stringify({
model: "mai-image-2.6",
prompt: "해 질 무렵의 대학 캠퍼스 포스터, 사실적인 사진 스타일, 영화 같은 조명",
size: "16:9",
resolution: "2K"
})
});
if (!response.ok) throw new Error(await response.text());
console.log(await response.json());
{
"code": 200,
"data": [
{
"status": "submitted",
"task_id": "task_01K..."
}
]
}
MAI-Image-2.6
MAI-Image-2.6 이미지 생성
텍스트 기반 생성, 단일 이미지 편집, 최대 5장의 참조 이미지 합성 및 웹 정보 활용을 지원합니다. 고품질 버전과 Flash 버전을 제공합니다.
POST
/
v1
/
images
/
generations
curl --request POST \
--url https://api.apimart.ai/v1/images/generations \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{
"model": "mai-image-2.6",
"prompt": "해 질 무렵의 대학 캠퍼스 포스터, 사실적인 사진 스타일, 영화 같은 조명",
"size": "16:9",
"resolution": "2K"
}'
import requests
response = requests.post(
"https://api.apimart.ai/v1/images/generations",
headers={"Authorization": "Bearer <token>"},
json={
"model": "mai-image-2.6",
"prompt": "해 질 무렵의 대학 캠퍼스 포스터, 사실적인 사진 스타일, 영화 같은 조명",
"size": "16:9",
"resolution": "2K"
}
)
response.raise_for_status()
print(response.json())
const response = await fetch("https://api.apimart.ai/v1/images/generations", {
method: "POST",
headers: {
Authorization: "Bearer <token>",
"Content-Type": "application/json"
},
body: JSON.stringify({
model: "mai-image-2.6",
prompt: "해 질 무렵의 대학 캠퍼스 포스터, 사실적인 사진 스타일, 영화 같은 조명",
size: "16:9",
resolution: "2K"
})
});
if (!response.ok) throw new Error(await response.text());
console.log(await response.json());
{
"code": 200,
"data": [
{
"status": "submitted",
"task_id": "task_01K..."
}
]
}
모델 선택
| 모델 ID | 특징 |
|---|---|
mai-image-2.6 | 화질을 중시하는 용도에 적합한 고품질 버전 |
mai-image-2.6-flash | 화질은 약간 낮지만 더 빠르고 저렴한 버전 |
비동기 API입니다. 제출 후
data[0].task_id에서 작업 ID를 가져오고 작업 조회로 결과를 확인하세요. 3–5초 간격의 폴링과 전체 대기 제한 시간 3분을 권장합니다. 상태가 completed 또는 failed이면 중지하세요.curl --request POST \
--url https://api.apimart.ai/v1/images/generations \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{
"model": "mai-image-2.6",
"prompt": "해 질 무렵의 대학 캠퍼스 포스터, 사실적인 사진 스타일, 영화 같은 조명",
"size": "16:9",
"resolution": "2K"
}'
import requests
response = requests.post(
"https://api.apimart.ai/v1/images/generations",
headers={"Authorization": "Bearer <token>"},
json={
"model": "mai-image-2.6",
"prompt": "해 질 무렵의 대학 캠퍼스 포스터, 사실적인 사진 스타일, 영화 같은 조명",
"size": "16:9",
"resolution": "2K"
}
)
response.raise_for_status()
print(response.json())
const response = await fetch("https://api.apimart.ai/v1/images/generations", {
method: "POST",
headers: {
Authorization: "Bearer <token>",
"Content-Type": "application/json"
},
body: JSON.stringify({
model: "mai-image-2.6",
prompt: "해 질 무렵의 대학 캠퍼스 포스터, 사실적인 사진 스타일, 영화 같은 조명",
size: "16:9",
resolution: "2K"
})
});
if (!response.ok) throw new Error(await response.text());
console.log(await response.json());
{
"code": 200,
"data": [
{
"status": "submitted",
"task_id": "task_01K..."
}
]
}
요청 헤더
string
필수
Bearer <token> 형식의 Bearer 인증입니다. <token>은 APIMart API Key입니다.요청 매개변수
string
필수
모델 ID:
mai-image-2.6 또는 mai-image-2.6-flash.string
필수
이미지 설명 또는 편집 지시입니다. 중국어와 영어를 지원하며 최대 약 32,000 tokens입니다(문자 수가 아님).
string
기본값:"1:1"
화면비(예:
16:9), 픽셀 크기(예: 1536x1024) 또는 auto를 지원합니다.- 화면비:
1:4부터4:1범위의 임의의 정수 비율을resolution과 함께 사용합니다. - 픽셀 크기:
너비x높이,너비*높이,너비×높이를 지원합니다. 이 경우resolution은 크기를 결정하지 않습니다. auto: 모델이 프롬프트에 따라 화면비를 선택합니다.
string
기본값:"1K"
1K, 2K를 지원하며 소문자도 허용됩니다. 4K 등 다른 값은 지원하지 않으며 HTTP 400을 반환합니다.텍스트 기반 생성에서 화면비를 사용할 때 크기 등급을 결정합니다. 정확한 픽셀을 지정하면 크기 계산에 사용되지 않습니다. 이미지 기반 생성의 출력 크기는 지정할 수 없습니다.integer
정확한 픽셀 너비로
height와 반드시 함께 제공해야 합니다. 두 값이 size, resolution보다 우선하여 텍스트 기반 생성 크기를 결정합니다.너비와 높이는 각각 최소 768이며 총 픽셀 수는 2,359,296 이하여야 합니다. 32의 배수를 권장하며, 아니면 각 변을 32의 배수로 내림합니다.이미지 기반 생성에서는 이 매개변수로 출력 크기를 결정하지 않습니다.integer
정확한 픽셀 높이로
width와 함께 제공해야 하며 위의 크기 제한을 따릅니다. 이미지 기반 생성의 출력 크기를 결정하지 않습니다.string[]
최대 5장의 참조 이미지 목록입니다. 생략하면 텍스트 기반 생성, 1장이면 단일 이미지 편집, 여러 장이면 합성입니다.각 항목은 공개 접근 가능한 HTTP(S) 이미지 URL 또는
data:image/png;base64,... 같은 Base64 Data URL을 지원합니다.JPEG와 PNG를 지원하며 WEBP와 GIF는 자동으로 PNG로 변환됩니다. 이미지 URL에 공개적으로 접근할 수 없으면 작업이 실패합니다.이미지 기반 생성의 출력 크기는 모델이 참조 이미지에 따라 결정합니다. 약 100만 픽셀이며 참조 이미지와 비슷한 화면비입니다. size, resolution, width, height로 출력 크기를 지정할 수 없습니다.boolean
기본값:"false"
true이면 모델이 프롬프트에 따라 화면비를 선택하며 size: "auto"와 같습니다.boolean
기본값:"false"
true이면 생성 전에 실시간 정보를 검색합니다. 실제 인물, 장소, 사건 관련 이미지에 적합합니다.integer
기본값:"1"
1만 지원합니다. 여러 장이 필요하면 작업을 각각 제출하세요. 1보다 큰 값은 HTTP 400을 반환합니다.텍스트 기반 생성 크기
| 요구사항 | 매개변수 |
|---|---|
| 기본 정사각형 | 크기 매개변수 생략: 1:1 + 1K, 출력 1024×1024 |
| 해상도 등급 + 화면비 | size: "16:9", resolution: "2K" |
| 정확한 픽셀 | size: "1536x1024" 또는 width: 1536, height: 1024 |
| 자동 화면비 | size: "auto" 또는 auto_aspect_ratio: true |
width / height → 픽셀 형식의 size → 화면비 형식의 size와 resolution 조합.
해상도 등급과 화면비
| 화면비 | 1K | 2K |
|---|---|---|
| 1:1 | 1024×1024 | 1536×1536 |
| 4:3 / 3:4 | 1152×864 / 864×1152 | 1760×1312 / 1312×1760 |
| 3:2 / 2:3 | 1248×832 / 832×1248 | 1856×1248 / 1248×1856 |
| 16:9 / 9:16 | 1344×768 / 768×1344 | 2048×1152 / 1152×2048 |
| 2:1 / 1:2 | 1536×768 / 768×1536 | 2144×1056 / 1056×2144 |
| 21:9 / 9:21 | 1792×768 / 768×1792 | 2336×992 / 992×2336 |
| 4:1 / 1:4 | 3072×768 / 768×3072 | 3072×768 / 768×3072 |
1K도 약 100만 픽셀을 넘을 수 있으며 실제 출력 픽셀에 해당하는 토큰으로 과금됩니다.
정확한 픽셀의 제약
- 너비와 높이는 각각 최소 768입니다.
- 너비 × 높이는 2,359,296(1536 × 1536) 이하여야 합니다.
- 각 변을 32의 배수로 내림합니다. 예를 들어
1000x1000은992x992로 출력됩니다. 정확한 크기가 필요하면 32의 배수를 사용하세요.
1536x1024, 2048x1152, 3072x768 등을 지원합니다. 512x512는 변이 너무 작아서, 2048x2048은 총 픽셀 수 초과로 거부됩니다.
제한은 총 픽셀 수이며 각 변을 1536 이하로 제한하는 것이 아닙니다. 따라서
2048x1152, 3072x768은 가능하지만 4K 등급은 지원하지 않습니다. 이 크기 설정은 텍스트 기반 생성에만 적용됩니다.요청 예시
정확한 픽셀과 웹 정보 활용
{
"model": "mai-image-2.6-flash",
"prompt": "밤의 에펠탑과 불꽃놀이, 여행 포스터 스타일",
"width": 2048,
"height": 1152,
"web_grounding": true
}
단일 이미지 편집
{
"model": "mai-image-2.6",
"prompt": "자전거를 파란색으로 바꾸고 옆에 작은 강아지를 추가해 주세요",
"image_urls": ["https://example.com/bicycle.png"]
}
다중 이미지 합성
{
"model": "mai-image-2.6-flash",
"prompt": "두 참조 이미지를 깔끔하고 미래적인 제품 사진으로 합성해 주세요",
"image_urls": [
"https://example.com/first.png",
"https://example.com/second.jpg"
]
}
지원하지 않는 매개변수
quality, style, background, output_format, response_format, mask_url은 지원하지 않으며 전달해도 무시됩니다. 출력은 PNG로 고정되고 마스크 편집은 지원하지 않습니다.
제출 응답
integer
응답 상태 코드입니다. 성공 시
200입니다.array
작업 결과 조회
curl --request GET \
--url https://api.apimart.ai/v1/tasks/task_01K... \
--header 'Authorization: Bearer <token>'
{
"code": 200,
"data": {
"id": "task_01K...",
"status": "completed",
"progress": 100,
"result": {
"images": [
{
"url": ["https://example.com/generated-image.png"]
}
]
}
}
}
| 상태 | 처리 방법 |
|---|---|
pending | 대기 중. 폴링 계속 |
processing | 처리 중. 폴링 계속 |
completed | 성공. data.result.images[0].url 배열에서 이미지 링크 확인 |
failed | 실패. data.error.message에서 원인 확인 후 폴링 중지. 전액 환불 |
과금 안내
실제 입력 및 출력 토큰 사용량으로 과금됩니다. 단가는 모델 가격을 확인하세요.- 이미지 출력 토큰 = 실제 출력 너비 × 높이 ÷ 1024. 1024×1024는 1024 tokens, 1536×1536은 2304 tokens입니다.
- 참조 이미지당 입력 토큰은 약 너비 × 높이 ÷ 1024입니다. 텍스트 프롬프트도 입력 사용량에 포함됩니다.
- 제출 시 등급에 따라 선차감하고 성공 후 실제 토큰 사용량에 맞춰 환불 또는 추가 청구합니다.
- 실패한 작업은 자동으로 전액 환불됩니다. 제출 단계에서 거부된 매개변수 오류는 작업을 생성하지 않고 과금되지 않습니다.
일반적인 오류
| HTTP | 원인 및 해결 방법 |
|---|---|
| 400 | 4K 등 지원하지 않는 resolution. 1K 또는 2K 사용 |
| 400 | 너비 또는 높이가 768 미만이거나 총 픽셀 수가 2,359,296 초과 |
| 400 | width 또는 height만 제공됨. 반드시 함께 제공 |
| 400 | 화면비가 1:4부터 4:1 범위를 벗어나거나 size 형식을 인식할 수 없음 |
| 400 | n이 1 초과이거나 참조 이미지가 5장 초과 |