이미지
POST /v1/images
문장으로 이미지를 만들거나(생성), 내 사진을 바탕으로 바꿔요(편집). 몇십 초 걸리는 작업이라 먼저 작업 ID를
받고, 결과는 GET /v1/jobs/{id}로 받아요.
요청
| 필드 | 형식 | 기본값 | 설명 |
|---|---|---|---|
prompt | 문자열 | 필수 | 만들 이미지 설명, 편집이면 바꿀 내용 |
model | 문자열 | devdive-image-gpt-2-5-flare | 이미지 모델 ID. → 모델 |
size | 문자열 | 모델 기본값 | auto, 1024x1024(정사각), 1536x1024(가로), 1024x1536(세로) |
n | 1~10 | 1 | 한 번에 만들 장수 |
quality | 문자열 | auto | auto, low, medium, high |
image_urls | 링크 배열(1~3개) | 없음 | 편집 모델의 참고 이미지. 편집 모델에는 필수, 생성 모델에는 보내면 안 돼요 |
- 생성은
devdive-image-gpt-2-5-flare(빠름)나devdive-image-gpt-2-5-sunburst(정밀)를 써요. - 편집은 이름이
-edit로 끝나는 모델과image_urls를 함께 보내요. 생성 모델에image_urls를 보내거나, 편집 모델에 빼면422가 와요. image_urls에는 공개 https 링크나 파일에서 올려 받은 링크를 넣어요.
응답
요청하면 바로 202 Accepted와 작업이 와요. Location 헤더에도 결과를 받을 주소가 있어요.
{
"id": "WyJkZXZkaXZlLWltYWdlLWdwdC0yLTUtZmxhcmUi….f54806a7b0d2618ff1b0db55180904da",
"object": "job",
"type": "image",
"model": "devdive-image-gpt-2-5-flare",
"status": "processing",
"credits_used": 0,
"result": null,
"error": null
}
다 만들어지면 GET /v1/jobs/{id}가 결과를 돌려줘요. 이미지는 result.images에 장수만큼 들어 있어요.
{
"id": "WyJkZXZkaXZlLWltYWdlLWdwdC0yLTUtZmxhcmUi….f54806a7b0d2618ff1b0db55180904da",
"object": "job",
"type": "image",
"model": "devdive-image-gpt-2-5-flare",
"status": "succeeded",
"credits_used": 11.88,
"result": { "images": [{ "url": "https://api.devdive.ai/media/…/image.png" }] },
"error": null
}
이미지 링크는 3일 동안 열려요. 오래 둘 이미지는 내려받아 저장하세요.
예시: 만들기
curl https://api.devdive.ai/v1/images \
-H "Authorization: Bearer $DEVDIVE_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"prompt": "햇살이 드는 카페 창가에 놓인 라떼, 따뜻한 필름 사진 느낌",
"size": "1536x1024",
"n": 2
}'
# 받은 id로 결과 기다리기 (끝날 때까지 되풀이)
curl "https://api.devdive.ai/v1/jobs/<id>?wait=60" \
-H "Authorization: Bearer $DEVDIVE_API_KEY"
예시: 고치기
제품 사진의 제품은 그대로 두고 배경만 바꿔 볼게요.
import os
import requests
API = "https://api.devdive.ai"
HEADERS = {"Authorization": f"Bearer {os.environ['DEVDIVE_API_KEY']}"}
job = requests.post(f"{API}/v1/images", headers=HEADERS, timeout=120, json={
"model": "devdive-image-gpt-2-5-flare-edit",
"prompt": "제품은 그대로 두고, 배경을 흰 대리석 테이블과 부드러운 아침 햇살로 바꿔 줘",
"image_urls": ["https://example.com/product.jpg"],
"quality": "high",
}).json()
while job["status"] == "processing":
job = requests.get(f"{API}/v1/jobs/{job['id']}", params={"wait": 60},
headers=HEADERS, timeout=90).json()
for image in job["result"]["images"]:
print(image["url"])
알아 두기
- 한 장에 보통 몇십 초 걸려요.
quality가 높을수록,sunburst모델일수록 오래 걸려요. - 크레딧은 작업이 끝났을 때 확정돼요. 처음 받는 작업의
credits_used는0이에요. - 이미지 모델은 모델마다 계정당 분당 5번까지 부를 수 있어요. 넘으면
429가 와요. 여러 장이 필요하면 호출을 여러 번 하기보다n을 늘리세요. - 같은 요청을 다시 보내면 다시 만들고 다시 차감돼요. 네트워크 오류로 다시 보내야 한다면
Idempotency-Key헤더를 쓰세요. → 에러와 한도