이미지 내보내기
원본 그림은 미디어 API, 공식 채보는 채보 이미지 API, 프로필 카드는 플레이어 API에 있습니다. 아래 API는 나머지 이미지 저장에 대응합니다. POST JSON은 {data, locale?, theme?, seed?}이며 전체 필드는 OpenAPI와 기기 스키마에 있습니다. 이미지 안내에 예제가 있습니다.
생성 이미지
섹션 제목: “생성 이미지”편성 결과 이미지
섹션 제목: “편성 결과 이미지”/api/v1/team-builder/image.png 사이트의 실제 결과 카드를 캡처하며 곡 커버·제목·난이도, 점수, 중앙 리더, 스냅를 유지합니다. data는 TeamImageOptions로 같은 계산의 request와 hit, 선택적인 settings, catalog, server, release, width(360~1280)를 받습니다.
매개변수
| 이름 | 위치 | 타입 | 설명 |
|---|---|---|---|
locale선택 | 쿼리 | string | 이미지 언어. 기본 en. |
theme선택 | 쿼리 | string | 사이트 테마. 기본 light. |
seed선택 | 쿼리 | string | 사이트 색 구성. |
요청 본문 application/json
| 이름 | 타입 | 설명 |
|---|---|---|
data필수 | TeamImageOptions | 사이트의 실제 결과 카드를 캡처하며 곡 커버·제목·난이도, 점수, 중앙 리더, 스냅를 유지합니다. data는 TeamImageOptions로 같은 계산의 request와 hit, 선택적인 settings, catalog, server, release, width(360~1280)를 받습니다. |
locale선택 | string | 이미지 언어. 기본 en. |
theme선택 | string | 사이트 테마. 기본 light. |
seed선택 | string | 사이트 색 구성. |
요청 예시
curl -sS -o output.bin -X POST "https://haneoka.org/api/v1/team-builder/image.png" \ -H "Content-Type: application/json" \ --data-binary @team-image.jsonconst response = await fetch("https://haneoka.org/api/v1/team-builder/image.png", { method: "POST", headers: { "Content-Type": "application/json", }, body: file,});if (!response.ok) throw new Error(`HTTP ${response.status}`);const blob = await response.blob();응답 예시
HTTP/2 200 OK바이너리 본문(표시하지 않음).
오류
| 상태 | 코드 | 의미 |
|---|---|---|
400 | invalid_request | 경로나 쿼리의 ID가 잘못되었습니다. |
404 | not_found | 지역 또는 기록을 찾을 수 없습니다. |
413 | body_too_large | JSON 본문이 8 MiB를 초과합니다. |
429 | renderer_busy | 60초 후 재시도하세요. |
502 | image_render_failed | 이미지나 모델을 렌더링할 수 없습니다. |
503 | renderer_unavailable | 이미지 렌더러를 사용할 수 없습니다. 기기 모듈이나 로컬 서비스를 사용하세요. |
모집 시뮬레이션 이미지
섹션 제목: “모집 시뮬레이션 이미지”/api/v1/gacha/simulation/image.png 모집 화면의 pulls/stats 이미지 렌더러입니다. data는 GachaImageInput입니다.
매개변수
| 이름 | 위치 | 타입 | 설명 |
|---|---|---|---|
locale선택 | 쿼리 | string | 이미지 언어. 기본 en. |
theme선택 | 쿼리 | string | 사이트 테마. 기본 light. |
seed선택 | 쿼리 | string | 사이트 색 구성. |
요청 본문 application/json
| 이름 | 타입 | 설명 |
|---|---|---|
data필수 | GachaImageInput | 모집 화면의 pulls/stats 이미지 렌더러입니다. data는 GachaImageInput입니다. |
locale선택 | string | 이미지 언어. 기본 en. |
theme선택 | string | 사이트 테마. 기본 light. |
seed선택 | string | 사이트 색 구성. |
요청 예시
curl -sS -o output.bin -X POST "https://haneoka.org/api/v1/gacha/simulation/image.png" \ -H "Content-Type: application/json" \ --data-binary @gacha-image.jsonconst response = await fetch("https://haneoka.org/api/v1/gacha/simulation/image.png", { method: "POST", headers: { "Content-Type": "application/json", }, body: file,});if (!response.ok) throw new Error(`HTTP ${response.status}`);const blob = await response.blob();응답 예시
HTTP/2 200 OK바이너리 본문(표시하지 않음).
오류
| 상태 | 코드 | 의미 |
|---|---|---|
400 | invalid_request | 경로나 쿼리의 ID가 잘못되었습니다. |
404 | not_found | 지역 또는 기록을 찾을 수 없습니다. |
413 | body_too_large | JSON 본문이 8 MiB를 초과합니다. |
429 | renderer_busy | 60초 후 재시도하세요. |
502 | image_render_failed | 이미지나 모델을 렌더링할 수 없습니다. |
503 | renderer_unavailable | 이미지 렌더러를 사용할 수 없습니다. 기기 모듈이나 로컬 서비스를 사용하세요. |
모집 기록 보고서
섹션 제목: “모집 기록 보고서”/api/v1/gacha-history/image.png 기록 화면과 같은 페이지당 36장 보고서입니다. image.png는 한 페이지, images.zip은 전체입니다. data는 GachaHistoryReport입니다.
매개변수
| 이름 | 위치 | 타입 | 설명 |
|---|---|---|---|
locale선택 | 쿼리 | string | 이미지 언어. 기본 en. |
theme선택 | 쿼리 | string | 사이트 테마. 기본 light. |
seed선택 | 쿼리 | string | 사이트 색 구성. |
page선택 | 쿼리 | integer | 1부터 시작하는 보고서 페이지. PNG에서 쓰며 ZIP은 전체입니다. 기본값: 1 |
요청 본문 application/json
| 이름 | 타입 | 설명 |
|---|---|---|
data필수 | GachaHistoryReport | 기록 화면과 같은 페이지당 36장 보고서입니다. image.png는 한 페이지, images.zip은 전체입니다. data는 GachaHistoryReport입니다. |
locale선택 | string | 이미지 언어. 기본 en. |
theme선택 | string | 사이트 테마. 기본 light. |
seed선택 | string | 사이트 색 구성. |
요청 예시
curl -sS -o output.bin -X POST "https://haneoka.org/api/v1/gacha-history/image.png" \ -H "Content-Type: application/json" \ --data-binary @history-image.jsonconst response = await fetch("https://haneoka.org/api/v1/gacha-history/image.png", { method: "POST", headers: { "Content-Type": "application/json", }, body: file,});if (!response.ok) throw new Error(`HTTP ${response.status}`);const blob = await response.blob();응답 예시
HTTP/2 200 OK바이너리 본문(표시하지 않음).
오류
| 상태 | 코드 | 의미 |
|---|---|---|
400 | invalid_request | 경로나 쿼리의 ID가 잘못되었습니다. |
404 | not_found | 지역 또는 기록을 찾을 수 없습니다. |
413 | body_too_large | JSON 본문이 8 MiB를 초과합니다. |
429 | renderer_busy | 60초 후 재시도하세요. |
502 | image_render_failed | 이미지나 모델을 렌더링할 수 없습니다. |
503 | renderer_unavailable | 이미지 렌더러를 사용할 수 없습니다. 기기 모듈이나 로컬 서비스를 사용하세요. |
기록 보고서 ZIP
섹션 제목: “기록 보고서 ZIP”/api/v1/gacha-history/images.zip 기록 화면과 같은 페이지당 36장 보고서입니다. image.png는 한 페이지, images.zip은 전체입니다. data는 GachaHistoryReport입니다.
매개변수
| 이름 | 위치 | 타입 | 설명 |
|---|---|---|---|
locale선택 | 쿼리 | string | 이미지 언어. 기본 en. |
theme선택 | 쿼리 | string | 사이트 테마. 기본 light. |
seed선택 | 쿼리 | string | 사이트 색 구성. |
page선택 | 쿼리 | integer | 1부터 시작하는 보고서 페이지. PNG에서 쓰며 ZIP은 전체입니다. 기본값: 1 |
요청 본문 application/json
| 이름 | 타입 | 설명 |
|---|---|---|
data필수 | GachaHistoryReport | 기록 화면과 같은 페이지당 36장 보고서입니다. image.png는 한 페이지, images.zip은 전체입니다. data는 GachaHistoryReport입니다. |
locale선택 | string | 이미지 언어. 기본 en. |
theme선택 | string | 사이트 테마. 기본 light. |
seed선택 | string | 사이트 색 구성. |
요청 예시
curl -sS -o output.bin -X POST "https://haneoka.org/api/v1/gacha-history/images.zip" \ -H "Content-Type: application/json" \ --data-binary @history-image.jsonconst response = await fetch("https://haneoka.org/api/v1/gacha-history/images.zip", { method: "POST", headers: { "Content-Type": "application/json", }, body: file,});if (!response.ok) throw new Error(`HTTP ${response.status}`);const blob = await response.blob();응답 예시
HTTP/2 200 OK바이너리 본문(표시하지 않음).
오류
| 상태 | 코드 | 의미 |
|---|---|---|
400 | invalid_request | 경로나 쿼리의 ID가 잘못되었습니다. |
404 | not_found | 지역 또는 기록을 찾을 수 없습니다. |
413 | body_too_large | JSON 본문이 8 MiB를 초과합니다. |
429 | renderer_busy | 60초 후 재시도하세요. |
502 | image_render_failed | 이미지나 모델을 렌더링할 수 없습니다. |
503 | renderer_unavailable | 이미지 렌더러를 사용할 수 없습니다. 기기 모듈이나 로컬 서비스를 사용하세요. |
스탬프 합성
섹션 제목: “스탬프 합성”/api/v1/stamps/image.png 스탬프 화면의 이미지·텍스트 레이어와 글꼴을 사용합니다. data에는 image, sourceSize, layers와 size(1~512)를 넣습니다. 사용자 글꼴은 fonts[{family,source}]이며 이미지 레이어로 그림을 배치합니다.
매개변수
| 이름 | 위치 | 타입 | 설명 |
|---|---|---|---|
locale선택 | 쿼리 | string | 이미지 언어. 기본 en. |
theme선택 | 쿼리 | string | 사이트 테마. 기본 light. |
seed선택 | 쿼리 | string | 사이트 색 구성. |
요청 본문 application/json
| 이름 | 타입 | 설명 |
|---|---|---|
data필수 | StampImageOptions | 스탬프 화면의 이미지·텍스트 레이어와 글꼴을 사용합니다. data에는 image, sourceSize, layers와 size(1~512)를 넣습니다. 사용자 글꼴은 fonts[{family,source}]이며 이미지 레이어로 그림을 배치합니다. |
locale선택 | string | 이미지 언어. 기본 en. |
theme선택 | string | 사이트 테마. 기본 light. |
seed선택 | string | 사이트 색 구성. |
요청 예시
curl -sS -o output.bin -X POST "https://haneoka.org/api/v1/stamps/image.png" \ -H "Content-Type: application/json" \ --data-binary @stamp-image.jsonconst response = await fetch("https://haneoka.org/api/v1/stamps/image.png", { method: "POST", headers: { "Content-Type": "application/json", }, body: file,});if (!response.ok) throw new Error(`HTTP ${response.status}`);const blob = await response.blob();응답 예시
HTTP/2 200 OK바이너리 본문(표시하지 않음).
오류
| 상태 | 코드 | 의미 |
|---|---|---|
400 | invalid_request | 경로나 쿼리의 ID가 잘못되었습니다. |
404 | not_found | 지역 또는 기록을 찾을 수 없습니다. |
413 | body_too_large | JSON 본문이 8 MiB를 초과합니다. |
429 | renderer_busy | 60초 후 재시도하세요. |
502 | image_render_failed | 이미지나 모델을 렌더링할 수 없습니다. |
503 | renderer_unavailable | 이미지 렌더러를 사용할 수 없습니다. 기기 모듈이나 로컬 서비스를 사용하세요. |
사용자 채보 이미지
섹션 제목: “사용자 채보 이미지”/api/v1/charts/image.png ChartDocument를 게임 스킨과 사이트 배치로 그립니다. data는 chart, meta 및 server/release/height입니다. 공식 곡은 곡 채보 이미지 API를 사용합니다.
매개변수
| 이름 | 위치 | 타입 | 설명 |
|---|---|---|---|
locale선택 | 쿼리 | string | 이미지 언어. 기본 en. |
theme선택 | 쿼리 | string | 사이트 테마. 기본 light. |
seed선택 | 쿼리 | string | 사이트 색 구성. |
요청 본문 application/json
| 이름 | 타입 | 설명 |
|---|---|---|
data필수 | CustomChartImageOptions | ChartDocument를 게임 스킨과 사이트 배치로 그립니다. data는 chart, meta 및 server/release/height입니다. 공식 곡은 곡 채보 이미지 API를 사용합니다. |
locale선택 | string | 이미지 언어. 기본 en. |
theme선택 | string | 사이트 테마. 기본 light. |
seed선택 | string | 사이트 색 구성. |
요청 예시
curl -sS -o output.bin -X POST "https://haneoka.org/api/v1/charts/image.png" \ -H "Content-Type: application/json" \ --data-binary @chart-image.jsonconst response = await fetch("https://haneoka.org/api/v1/charts/image.png", { method: "POST", headers: { "Content-Type": "application/json", }, body: file,});if (!response.ok) throw new Error(`HTTP ${response.status}`);const blob = await response.blob();응답 예시
HTTP/2 200 OK바이너리 본문(표시하지 않음).
오류
| 상태 | 코드 | 의미 |
|---|---|---|
400 | invalid_request | 경로나 쿼리의 ID가 잘못되었습니다. |
404 | not_found | 지역 또는 기록을 찾을 수 없습니다. |
413 | body_too_large | JSON 본문이 8 MiB를 초과합니다. |
429 | renderer_busy | 60초 후 재시도하세요. |
502 | image_render_failed | 이미지나 모델을 렌더링할 수 없습니다. |
503 | renderer_unavailable | 이미지 렌더러를 사용할 수 없습니다. 기기 모듈이나 로컬 서비스를 사용하세요. |
기본 Live2D 캡처
섹션 제목: “기본 Live2D 캡처”/api/v1/live2d/{id}/image.png 사이트의 Cubism 뷰어를 사용합니다. POST data는 motion, expression, loop, time, parameters, parts, look, background, transform을 받습니다. 저장된 포즈의 parameters/parts를 그대로 쓰며 기본 배경은 투명합니다.
매개변수
| 이름 | 위치 | 타입 | 설명 |
|---|---|---|---|
id필수 | 경로 | string | Live2D 캡처 |
server선택 | 쿼리 | string | 리소스 서버. 기본값: intl |
release선택 | 쿼리 | string | 모델과 소재를 고정할 release. 생략하면 현재 버전. |
width선택 | 쿼리 | integer | 뷰포트 픽셀. 사이트와 같은 최대 400만 픽셀 캡처이며 출력 크기는 응답 헤더에 있습니다. 기본값: 1024 |
height선택 | 쿼리 | integer | 뷰포트 픽셀. 사이트와 같은 최대 400만 픽셀 캡처이며 출력 크기는 응답 헤더에 있습니다. 기본값: 1024 |
time선택 | 쿼리 | number | 캡처 애니메이션 위치(초). 60 Hz로 진행합니다. 기본값: 0 |
locale선택 | 쿼리 | string | 이미지 언어. 기본 en. |
theme선택 | 쿼리 | string | 사이트 테마. 기본 light. |
seed선택 | 쿼리 | string | 사이트 색 구성. |
blink선택 | 쿼리 | boolean | 뷰어 설정. true 또는 false. 기본값: true |
breath선택 | 쿼리 | boolean | 뷰어 설정. true 또는 false. 기본값: true |
loop선택 | 쿼리 | boolean | 뷰어 설정. true 또는 false. 기본값: |
motion선택 | 쿼리 | string | 모델 상세의 이름. |
expression선택 | 쿼리 | string | 모델 상세의 이름. |
요청 예시
curl -sS -o output.bin "https://haneoka.org/api/v1/live2d/001_casual_spring_01/image.png?server=intl&time=0"const response = await fetch("https://haneoka.org/api/v1/live2d/001_casual_spring_01/image.png?server=intl&time=0");if (!response.ok) throw new Error(`HTTP ${response.status}`);const blob = await response.blob();응답 예시
HTTP/2 200 OK바이너리 본문(표시하지 않음).
오류
| 상태 | 코드 | 의미 |
|---|---|---|
400 | invalid_request | 경로나 쿼리의 ID가 잘못되었습니다. |
404 | not_found | 지역 또는 기록을 찾을 수 없습니다. |
413 | body_too_large | JSON 본문이 8 MiB를 초과합니다. |
429 | renderer_busy | 60초 후 재시도하세요. |
502 | image_render_failed | 이미지나 모델을 렌더링할 수 없습니다. |
503 | renderer_unavailable | 이미지 렌더러를 사용할 수 없습니다. 기기 모듈이나 로컬 서비스를 사용하세요. |
Live2D 캡처
섹션 제목: “Live2D 캡처”/api/v1/live2d/{id}/image.png 사이트의 Cubism 뷰어를 사용합니다. POST data는 motion, expression, loop, time, parameters, parts, look, background, transform을 받습니다. 저장된 포즈의 parameters/parts를 그대로 쓰며 기본 배경은 투명합니다.
매개변수
| 이름 | 위치 | 타입 | 설명 |
|---|---|---|---|
locale선택 | 쿼리 | string | 이미지 언어. 기본 en. |
theme선택 | 쿼리 | string | 사이트 테마. 기본 light. |
seed선택 | 쿼리 | string | 사이트 색 구성. |
id필수 | 경로 | string | Live2D 캡처 |
요청 본문 application/json
| 이름 | 타입 | 설명 |
|---|---|---|
data필수 | Live2DImageOptions | 사이트의 Cubism 뷰어를 사용합니다. POST data는 motion, expression, loop, time, parameters, parts, look, background, transform을 받습니다. 저장된 포즈의 parameters/parts를 그대로 쓰며 기본 배경은 투명합니다. |
locale선택 | string | 이미지 언어. 기본 en. |
theme선택 | string | 사이트 테마. 기본 light. |
seed선택 | string | 사이트 색 구성. |
요청 예시
curl -sS -o output.bin -X POST "https://haneoka.org/api/v1/live2d/001_casual_spring_01/image.png" \ -H "Content-Type: application/json" \ --data-binary @live2d-image.jsonconst response = await fetch("https://haneoka.org/api/v1/live2d/001_casual_spring_01/image.png", { method: "POST", headers: { "Content-Type": "application/json", }, body: file,});if (!response.ok) throw new Error(`HTTP ${response.status}`);const blob = await response.blob();응답 예시
HTTP/2 200 OK바이너리 본문(표시하지 않음).
오류
| 상태 | 코드 | 의미 |
|---|---|---|
400 | invalid_request | 경로나 쿼리의 ID가 잘못되었습니다. |
404 | not_found | 지역 또는 기록을 찾을 수 없습니다. |
413 | body_too_large | JSON 본문이 8 MiB를 초과합니다. |
429 | renderer_busy | 60초 후 재시도하세요. |
502 | image_render_failed | 이미지나 모델을 렌더링할 수 없습니다. |
503 | renderer_unavailable | 이미지 렌더러를 사용할 수 없습니다. 기기 모듈이나 로컬 서비스를 사용하세요. |
기본 Live2D 캡처 (서버 지정)
섹션 제목: “기본 Live2D 캡처 (서버 지정)”/api/v1/servers/{server}/live2d/{id}/image.png 사이트의 Cubism 뷰어를 사용합니다. POST data는 motion, expression, loop, time, parameters, parts, look, background, transform을 받습니다. 저장된 포즈의 parameters/parts를 그대로 쓰며 기본 배경은 투명합니다.
매개변수
| 이름 | 위치 | 타입 | 설명 |
|---|---|---|---|
server필수 | 경로 | string | 리소스 서버. 기본값: intl |
id필수 | 경로 | string | Live2D 캡처 |
release선택 | 쿼리 | string | 모델과 소재를 고정할 release. 생략하면 현재 버전. |
width선택 | 쿼리 | integer | 뷰포트 픽셀. 사이트와 같은 최대 400만 픽셀 캡처이며 출력 크기는 응답 헤더에 있습니다. 기본값: 1024 |
height선택 | 쿼리 | integer | 뷰포트 픽셀. 사이트와 같은 최대 400만 픽셀 캡처이며 출력 크기는 응답 헤더에 있습니다. 기본값: 1024 |
time선택 | 쿼리 | number | 캡처 애니메이션 위치(초). 60 Hz로 진행합니다. 기본값: 0 |
locale선택 | 쿼리 | string | 이미지 언어. 기본 en. |
theme선택 | 쿼리 | string | 사이트 테마. 기본 light. |
seed선택 | 쿼리 | string | 사이트 색 구성. |
blink선택 | 쿼리 | boolean | 뷰어 설정. true 또는 false. 기본값: true |
breath선택 | 쿼리 | boolean | 뷰어 설정. true 또는 false. 기본값: true |
loop선택 | 쿼리 | boolean | 뷰어 설정. true 또는 false. 기본값: |
motion선택 | 쿼리 | string | 모델 상세의 이름. |
expression선택 | 쿼리 | string | 모델 상세의 이름. |
요청 예시
curl -sS -o output.bin "https://haneoka.org/api/v1/servers/intl/live2d/001_casual_spring_01/image.png?time=0"const response = await fetch("https://haneoka.org/api/v1/servers/intl/live2d/001_casual_spring_01/image.png?time=0");if (!response.ok) throw new Error(`HTTP ${response.status}`);const blob = await response.blob();응답 예시
HTTP/2 200 OK바이너리 본문(표시하지 않음).
오류
| 상태 | 코드 | 의미 |
|---|---|---|
400 | invalid_request | 경로나 쿼리의 ID가 잘못되었습니다. |
404 | not_found | 지역 또는 기록을 찾을 수 없습니다. |
413 | body_too_large | JSON 본문이 8 MiB를 초과합니다. |
429 | renderer_busy | 60초 후 재시도하세요. |
502 | image_render_failed | 이미지나 모델을 렌더링할 수 없습니다. |
503 | renderer_unavailable | 이미지 렌더러를 사용할 수 없습니다. 기기 모듈이나 로컬 서비스를 사용하세요. |
Live2D 캡처 (서버 지정)
섹션 제목: “Live2D 캡처 (서버 지정)”/api/v1/servers/{server}/live2d/{id}/image.png 사이트의 Cubism 뷰어를 사용합니다. POST data는 motion, expression, loop, time, parameters, parts, look, background, transform을 받습니다. 저장된 포즈의 parameters/parts를 그대로 쓰며 기본 배경은 투명합니다.
매개변수
| 이름 | 위치 | 타입 | 설명 |
|---|---|---|---|
server필수 | 경로 | string | 리소스 서버. 기본값: intl |
locale선택 | 쿼리 | string | 이미지 언어. 기본 en. |
theme선택 | 쿼리 | string | 사이트 테마. 기본 light. |
seed선택 | 쿼리 | string | 사이트 색 구성. |
id필수 | 경로 | string | Live2D 캡처 |
요청 본문 application/json
| 이름 | 타입 | 설명 |
|---|---|---|
data필수 | Live2DImageOptions | 사이트의 Cubism 뷰어를 사용합니다. POST data는 motion, expression, loop, time, parameters, parts, look, background, transform을 받습니다. 저장된 포즈의 parameters/parts를 그대로 쓰며 기본 배경은 투명합니다. |
locale선택 | string | 이미지 언어. 기본 en. |
theme선택 | string | 사이트 테마. 기본 light. |
seed선택 | string | 사이트 색 구성. |
요청 예시
curl -sS -o output.bin -X POST "https://haneoka.org/api/v1/servers/intl/live2d/001_casual_spring_01/image.png" \ -H "Content-Type: application/json" \ --data-binary @live2d-image.jsonconst response = await fetch("https://haneoka.org/api/v1/servers/intl/live2d/001_casual_spring_01/image.png", { method: "POST", headers: { "Content-Type": "application/json", }, body: file,});if (!response.ok) throw new Error(`HTTP ${response.status}`);const blob = await response.blob();응답 예시
HTTP/2 200 OK바이너리 본문(표시하지 않음).
오류
| 상태 | 코드 | 의미 |
|---|---|---|
400 | invalid_request | 경로나 쿼리의 ID가 잘못되었습니다. |
404 | not_found | 지역 또는 기록을 찾을 수 없습니다. |
413 | body_too_large | JSON 본문이 8 MiB를 초과합니다. |
429 | renderer_busy | 60초 후 재시도하세요. |
502 | image_render_failed | 이미지나 모델을 렌더링할 수 없습니다. |
503 | renderer_unavailable | 이미지 렌더러를 사용할 수 없습니다. 기기 모듈이나 로컬 서비스를 사용하세요. |
기본 Spine 캡처
섹션 제목: “기본 Spine 캡처”/api/v1/spine/{id}/image.png 사이트의 Spine 스테이지입니다. POST data는 animation, skin, loop, playbackRate, time, background, transform을 받으며 기본 배경은 투명합니다.
매개변수
| 이름 | 위치 | 타입 | 설명 |
|---|---|---|---|
id필수 | 경로 | string | Spine 캡처 |
server선택 | 쿼리 | string | 리소스 서버. 기본값: intl |
release선택 | 쿼리 | string | 모델과 소재를 고정할 release. 생략하면 현재 버전. |
width선택 | 쿼리 | integer | 뷰포트 픽셀. 사이트와 같은 최대 400만 픽셀 캡처이며 출력 크기는 응답 헤더에 있습니다. 기본값: 1024 |
height선택 | 쿼리 | integer | 뷰포트 픽셀. 사이트와 같은 최대 400만 픽셀 캡처이며 출력 크기는 응답 헤더에 있습니다. 기본값: 1024 |
time선택 | 쿼리 | number | 캡처 애니메이션 위치(초). 60 Hz로 진행합니다. 기본값: 0 |
locale선택 | 쿼리 | string | 이미지 언어. 기본 en. |
theme선택 | 쿼리 | string | 사이트 테마. 기본 light. |
seed선택 | 쿼리 | string | 사이트 색 구성. |
loop선택 | 쿼리 | boolean | 뷰어 설정. true 또는 false. 기본값: true |
playbackRate선택 | 쿼리 | number | 캡처 전에 적용할 재생 속도. 기본값: 1 |
animation선택 | 쿼리 | string | 모델 상세의 이름. |
skin선택 | 쿼리 | string | 모델 상세의 이름. |
요청 예시
curl -sS -o output.bin "https://haneoka.org/api/v1/spine/01_mygo_01_cafe_01_anon/image.png?server=intl&time=0"const response = await fetch("https://haneoka.org/api/v1/spine/01_mygo_01_cafe_01_anon/image.png?server=intl&time=0");if (!response.ok) throw new Error(`HTTP ${response.status}`);const blob = await response.blob();응답 예시
HTTP/2 200 OK바이너리 본문(표시하지 않음).
오류
| 상태 | 코드 | 의미 |
|---|---|---|
400 | invalid_request | 경로나 쿼리의 ID가 잘못되었습니다. |
404 | not_found | 지역 또는 기록을 찾을 수 없습니다. |
413 | body_too_large | JSON 본문이 8 MiB를 초과합니다. |
429 | renderer_busy | 60초 후 재시도하세요. |
502 | image_render_failed | 이미지나 모델을 렌더링할 수 없습니다. |
503 | renderer_unavailable | 이미지 렌더러를 사용할 수 없습니다. 기기 모듈이나 로컬 서비스를 사용하세요. |
Spine 캡처
섹션 제목: “Spine 캡처”/api/v1/spine/{id}/image.png 사이트의 Spine 스테이지입니다. POST data는 animation, skin, loop, playbackRate, time, background, transform을 받으며 기본 배경은 투명합니다.
매개변수
| 이름 | 위치 | 타입 | 설명 |
|---|---|---|---|
locale선택 | 쿼리 | string | 이미지 언어. 기본 en. |
theme선택 | 쿼리 | string | 사이트 테마. 기본 light. |
seed선택 | 쿼리 | string | 사이트 색 구성. |
id필수 | 경로 | string | Spine 캡처 |
요청 본문 application/json
| 이름 | 타입 | 설명 |
|---|---|---|
data필수 | SpineImageOptions | 사이트의 Spine 스테이지입니다. POST data는 animation, skin, loop, playbackRate, time, background, transform을 받으며 기본 배경은 투명합니다. |
locale선택 | string | 이미지 언어. 기본 en. |
theme선택 | string | 사이트 테마. 기본 light. |
seed선택 | string | 사이트 색 구성. |
요청 예시
curl -sS -o output.bin -X POST "https://haneoka.org/api/v1/spine/01_mygo_01_cafe_01_anon/image.png" \ -H "Content-Type: application/json" \ --data-binary @spine-image.jsonconst response = await fetch("https://haneoka.org/api/v1/spine/01_mygo_01_cafe_01_anon/image.png", { method: "POST", headers: { "Content-Type": "application/json", }, body: file,});if (!response.ok) throw new Error(`HTTP ${response.status}`);const blob = await response.blob();응답 예시
HTTP/2 200 OK바이너리 본문(표시하지 않음).
오류
| 상태 | 코드 | 의미 |
|---|---|---|
400 | invalid_request | 경로나 쿼리의 ID가 잘못되었습니다. |
404 | not_found | 지역 또는 기록을 찾을 수 없습니다. |
413 | body_too_large | JSON 본문이 8 MiB를 초과합니다. |
429 | renderer_busy | 60초 후 재시도하세요. |
502 | image_render_failed | 이미지나 모델을 렌더링할 수 없습니다. |
503 | renderer_unavailable | 이미지 렌더러를 사용할 수 없습니다. 기기 모듈이나 로컬 서비스를 사용하세요. |
기본 Spine 캡처 (서버 지정)
섹션 제목: “기본 Spine 캡처 (서버 지정)”/api/v1/servers/{server}/spine/{id}/image.png 사이트의 Spine 스테이지입니다. POST data는 animation, skin, loop, playbackRate, time, background, transform을 받으며 기본 배경은 투명합니다.
매개변수
| 이름 | 위치 | 타입 | 설명 |
|---|---|---|---|
server필수 | 경로 | string | 리소스 서버. 기본값: intl |
id필수 | 경로 | string | Spine 캡처 |
release선택 | 쿼리 | string | 모델과 소재를 고정할 release. 생략하면 현재 버전. |
width선택 | 쿼리 | integer | 뷰포트 픽셀. 사이트와 같은 최대 400만 픽셀 캡처이며 출력 크기는 응답 헤더에 있습니다. 기본값: 1024 |
height선택 | 쿼리 | integer | 뷰포트 픽셀. 사이트와 같은 최대 400만 픽셀 캡처이며 출력 크기는 응답 헤더에 있습니다. 기본값: 1024 |
time선택 | 쿼리 | number | 캡처 애니메이션 위치(초). 60 Hz로 진행합니다. 기본값: 0 |
locale선택 | 쿼리 | string | 이미지 언어. 기본 en. |
theme선택 | 쿼리 | string | 사이트 테마. 기본 light. |
seed선택 | 쿼리 | string | 사이트 색 구성. |
loop선택 | 쿼리 | boolean | 뷰어 설정. true 또는 false. 기본값: true |
playbackRate선택 | 쿼리 | number | 캡처 전에 적용할 재생 속도. 기본값: 1 |
animation선택 | 쿼리 | string | 모델 상세의 이름. |
skin선택 | 쿼리 | string | 모델 상세의 이름. |
요청 예시
curl -sS -o output.bin "https://haneoka.org/api/v1/servers/intl/spine/01_mygo_01_cafe_01_anon/image.png?time=0"const response = await fetch("https://haneoka.org/api/v1/servers/intl/spine/01_mygo_01_cafe_01_anon/image.png?time=0");if (!response.ok) throw new Error(`HTTP ${response.status}`);const blob = await response.blob();응답 예시
HTTP/2 200 OK바이너리 본문(표시하지 않음).
오류
| 상태 | 코드 | 의미 |
|---|---|---|
400 | invalid_request | 경로나 쿼리의 ID가 잘못되었습니다. |
404 | not_found | 지역 또는 기록을 찾을 수 없습니다. |
413 | body_too_large | JSON 본문이 8 MiB를 초과합니다. |
429 | renderer_busy | 60초 후 재시도하세요. |
502 | image_render_failed | 이미지나 모델을 렌더링할 수 없습니다. |
503 | renderer_unavailable | 이미지 렌더러를 사용할 수 없습니다. 기기 모듈이나 로컬 서비스를 사용하세요. |
Spine 캡처 (서버 지정)
섹션 제목: “Spine 캡처 (서버 지정)”/api/v1/servers/{server}/spine/{id}/image.png 사이트의 Spine 스테이지입니다. POST data는 animation, skin, loop, playbackRate, time, background, transform을 받으며 기본 배경은 투명합니다.
매개변수
| 이름 | 위치 | 타입 | 설명 |
|---|---|---|---|
server필수 | 경로 | string | 리소스 서버. 기본값: intl |
locale선택 | 쿼리 | string | 이미지 언어. 기본 en. |
theme선택 | 쿼리 | string | 사이트 테마. 기본 light. |
seed선택 | 쿼리 | string | 사이트 색 구성. |
id필수 | 경로 | string | Spine 캡처 |
요청 본문 application/json
| 이름 | 타입 | 설명 |
|---|---|---|
data필수 | SpineImageOptions | 사이트의 Spine 스테이지입니다. POST data는 animation, skin, loop, playbackRate, time, background, transform을 받으며 기본 배경은 투명합니다. |
locale선택 | string | 이미지 언어. 기본 en. |
theme선택 | string | 사이트 테마. 기본 light. |
seed선택 | string | 사이트 색 구성. |
요청 예시
curl -sS -o output.bin -X POST "https://haneoka.org/api/v1/servers/intl/spine/01_mygo_01_cafe_01_anon/image.png" \ -H "Content-Type: application/json" \ --data-binary @spine-image.jsonconst response = await fetch("https://haneoka.org/api/v1/servers/intl/spine/01_mygo_01_cafe_01_anon/image.png", { method: "POST", headers: { "Content-Type": "application/json", }, body: file,});if (!response.ok) throw new Error(`HTTP ${response.status}`);const blob = await response.blob();응답 예시
HTTP/2 200 OK바이너리 본문(표시하지 않음).
오류
| 상태 | 코드 | 의미 |
|---|---|---|
400 | invalid_request | 경로나 쿼리의 ID가 잘못되었습니다. |
404 | not_found | 지역 또는 기록을 찾을 수 없습니다. |
413 | body_too_large | JSON 본문이 8 MiB를 초과합니다. |
429 | renderer_busy | 60초 후 재시도하세요. |
502 | image_render_failed | 이미지나 모델을 렌더링할 수 없습니다. |
503 | renderer_unavailable | 이미지 렌더러를 사용할 수 없습니다. 기기 모듈이나 로컬 서비스를 사용하세요. |