콘텐츠로 이동

프로그램 도구

공개 기능 확인은 haneoka.org에서, 작업은 로컬 서비스에서 실행합니다. 시작과 예제는 로컬 계산 안내를 확인하세요.

GETHEAD /api/v1

기계가 읽을 수 있는 진입점·요청 계약·도구 모듈.

인증
필요 없음. 누구나 익명으로 읽을 수 있습니다.
캐시
public, max-age=300

요청 예시

Terminal window
curl -sS "https://haneoka.org/api/v1"

응답 예시

HTTP/2 200 OK
{}

길이 때문에 일부를 생략했습니다. 실제 응답에는 더 많은 항목이 있습니다.

GETHEAD /api/v1/openapi.json

기계가 읽을 수 있는 진입점·요청 계약·도구 모듈.

인증
필요 없음. 누구나 익명으로 읽을 수 있습니다.
캐시
public, max-age=300

요청 예시

Terminal window
curl -sS "https://haneoka.org/api/v1/openapi.json"

응답 예시

HTTP/2 200 OK
{}

길이 때문에 일부를 생략했습니다. 실제 응답에는 더 많은 항목이 있습니다.

GETHEAD /api/v1/tools

기계가 읽을 수 있는 진입점·요청 계약·도구 모듈.

인증
필요 없음. 누구나 익명으로 읽을 수 있습니다.
캐시
public, max-age=300

요청 예시

Terminal window
curl -sS "https://haneoka.org/api/v1/tools"

응답 예시

HTTP/2 200 OK
{}

길이 때문에 일부를 생략했습니다. 실제 응답에는 더 많은 항목이 있습니다.

GET /v1

작업·동시 실행 수·결과 보관 시간을 반환합니다.

인증
로컬 서비스 Bearer 토큰. 시작 시 표시된 비공개 헤더 파일을 사용하세요.
캐시
no-store

요청 예시

Terminal window
curl -sS "http://127.0.0.1:8765/v1" \
-H "Authorization: Bearer ${localToken}"

응답 예시

HTTP/2 200 OK
{
"operations": [
"search",
"evaluate",
"growth",
"timeline",
"chart-image"
],
"concurrency": 1,
"resultTtlSeconds": 600
}

오류

상태코드의미
400invalid_request경로나 쿼리의 ID가 잘못되었습니다.
401unauthorized로컬 Bearer 토큰을 전달하세요.
403origin_not_allowed로컬 클라이언트나 스크립트에서 호출하세요.
404not_found지역 또는 기록을 찾을 수 없습니다.
404job_not_found작업이 만료되거나 삭제되었습니다.
409image_not_ready이미지 완료를 기다리세요.
413body_too_large요청 본문이 2 MiB를 초과합니다.
429rate_limit_exceeded이 키의 요청이 너무 많습니다. Retry-After가 있으면 따르세요.
429queue_full실행 완료를 기다리거나 결과를 삭제하세요.
POST /v1/jobs

202와 조회할 Location을 반환합니다. 본문 2 MiB·대기 8개·동시 실행 1개·최대 5분. 인벤토리는 이 호스트에 남습니다.

인증
로컬 서비스 Bearer 토큰. 시작 시 표시된 비공개 헤더 파일을 사용하세요.
캐시
no-store

요청 본문 application/json

이름타입설명
operation필수 string search, evaluate, growth, timeline, chart-image, resource-image.
request선택 object 계산에 필수. tools/schema.json의 해당 형식 사용.

요청 예시

Terminal window
curl -sS -X POST "http://127.0.0.1:8765/v1/jobs" \
-H "Authorization: Bearer ${localToken}" \
-H "Content-Type: application/json" \
--data '{"operation":"chart-image","server":"intl","songId":"100001","difficulty":"expert","locale":"en","height":720}'

응답 예시

HTTP/2 202 Accepted
Location: /v1/jobs/00000000-0000-4000-8000-000000000001
{
"id": "00000000-0000-4000-8000-000000000001",
"operation": "chart-image",
"state": "queued"
}

오류

상태코드의미
400invalid_request경로나 쿼리의 ID가 잘못되었습니다.
401unauthorized로컬 Bearer 토큰을 전달하세요.
403origin_not_allowed로컬 클라이언트나 스크립트에서 호출하세요.
404not_found지역 또는 기록을 찾을 수 없습니다.
404job_not_found작업이 만료되거나 삭제되었습니다.
409image_not_ready이미지 완료를 기다리세요.
413body_too_large요청 본문이 2 MiB를 초과합니다.
429rate_limit_exceeded이 키의 요청이 너무 많습니다. Retry-After가 있으면 따르세요.
429queue_full실행 완료를 기다리거나 결과를 삭제하세요.
GET /v1/jobs/{id}

상태: queued, running, completed, failed. 완료 후 10분 보관. result, identity, 선택적 image URL을 읽습니다.

인증
로컬 서비스 Bearer 토큰. 시작 시 표시된 비공개 헤더 파일을 사용하세요.
캐시
no-store

매개변수

이름위치타입설명
id필수 경로 uuid 제출 결과의 작업 ID.

요청 예시

Terminal window
curl -sS "http://127.0.0.1:8765/v1/jobs/00000000-0000-4000-8000-000000000001" \
-H "Authorization: Bearer ${localToken}"

응답 예시

HTTP/2 200 OK
{
"id": "00000000-0000-4000-8000-000000000001",
"operation": "search",
"state": "completed",
"createdAt": 1793030400000,
"expiresAt": 1793031000000,
"result": {
"overall": [],
"results": [],
"stopReason": "complete"
}
}

오류

상태코드의미
400invalid_request경로나 쿼리의 ID가 잘못되었습니다.
401unauthorized로컬 Bearer 토큰을 전달하세요.
403origin_not_allowed로컬 클라이언트나 스크립트에서 호출하세요.
404not_found지역 또는 기록을 찾을 수 없습니다.
404job_not_found작업이 만료되거나 삭제되었습니다.
409image_not_ready이미지 완료를 기다리세요.
413body_too_large요청 본문이 2 MiB를 초과합니다.
429rate_limit_exceeded이 키의 요청이 너무 많습니다. Retry-After가 있으면 따르세요.
429queue_full실행 완료를 기다리거나 결과를 삭제하세요.
DELETE /v1/jobs/{id}

계산 컨텍스트를 닫고 결과를 삭제합니다. 이후 조회는 404.

인증
로컬 서비스 Bearer 토큰. 시작 시 표시된 비공개 헤더 파일을 사용하세요.
캐시
no-store

매개변수

이름위치타입설명
id필수 경로 uuid 제출 결과의 작업 ID.

요청 예시

Terminal window
curl -sS -X DELETE "http://127.0.0.1:8765/v1/jobs/00000000-0000-4000-8000-000000000001" \
-H "Authorization: Bearer ${localToken}"

응답 예시

HTTP/2 204 No Content

응답 본문이 없습니다.

오류

상태코드의미
400invalid_request경로나 쿼리의 ID가 잘못되었습니다.
401unauthorized로컬 Bearer 토큰을 전달하세요.
403origin_not_allowed로컬 클라이언트나 스크립트에서 호출하세요.
404not_found지역 또는 기록을 찾을 수 없습니다.
404job_not_found작업이 만료되거나 삭제되었습니다.
409image_not_ready이미지 완료를 기다리세요.
413body_too_large요청 본문이 2 MiB를 초과합니다.
429rate_limit_exceeded이 키의 요청이 너무 많습니다. Retry-After가 있으면 따르세요.
429queue_full실행 완료를 기다리거나 결과를 삭제하세요.
GET /v1/jobs/{id}/image.png

완료된 chart-image 작업과 같은 Bearer 토큰이 필요합니다. PNG 반환, 미완료는 409.

인증
로컬 서비스 Bearer 토큰. 시작 시 표시된 비공개 헤더 파일을 사용하세요.
캐시
no-store

매개변수

이름위치타입설명
id필수 경로 uuid 제출 결과의 작업 ID.

요청 예시

Terminal window
curl -sS -o output.bin "http://127.0.0.1:8765/v1/jobs/00000000-0000-4000-8000-000000000001/image.png" \
-H "Authorization: Bearer ${localToken}"

응답 예시

HTTP/2 200 OK

바이너리 본문(표시하지 않음).

오류

상태코드의미
400invalid_request경로나 쿼리의 ID가 잘못되었습니다.
401unauthorized로컬 Bearer 토큰을 전달하세요.
403origin_not_allowed로컬 클라이언트나 스크립트에서 호출하세요.
404not_found지역 또는 기록을 찾을 수 없습니다.
404job_not_found작업이 만료되거나 삭제되었습니다.
409image_not_ready이미지 완료를 기다리세요.
413body_too_large요청 본문이 2 MiB를 초과합니다.
429rate_limit_exceeded이 키의 요청이 너무 많습니다. Retry-After가 있으면 따르세요.
429queue_full실행 완료를 기다리거나 결과를 삭제하세요.
POST /v1/resource-image

리소스 API와 같은 이미지 요청입니다. JSON 8 MiB, 출력 16 MiB, 50초, 한 작업씩 실행합니다. kind와 data는 이미지 안내를 확인하세요.

인증
로컬 서비스 Bearer 토큰. 시작 시 표시된 비공개 헤더 파일을 사용하세요.
캐시
no-store

요청 본문 application/json

이름타입설명
kind필수 string team, gacha, gacha-history, stamp, chart, live2d, spine.
data필수 object 이미지 모델. /reference/images/를 확인하세요.

요청 예시

Terminal window
curl -sS -o output.bin -X POST "http://127.0.0.1:8765/v1/resource-image" \
-H "Authorization: Bearer ${localToken}" \
-H "Content-Type: application/octet-stream" \
--data-binary @resource-image.json

응답 예시

HTTP/2 200 OK

바이너리 본문(표시하지 않음).

오류

상태코드의미
400invalid_request경로나 쿼리의 ID가 잘못되었습니다.
401unauthorized로컬 Bearer 토큰을 전달하세요.
403origin_not_allowed로컬 클라이언트나 스크립트에서 호출하세요.
404not_found지역 또는 기록을 찾을 수 없습니다.
404job_not_found작업이 만료되거나 삭제되었습니다.
409image_not_ready이미지 완료를 기다리세요.
413body_too_large요청 본문이 2 MiB를 초과합니다.
429rate_limit_exceeded이 키의 요청이 너무 많습니다. Retry-After가 있으면 따르세요.
429queue_full실행 완료를 기다리거나 결과를 삭제하세요.
GET /v1/jobs/{id}/images.zip

완료된 resource-image 작업이 반환한 이미지 URL을 사용하세요.

인증
로컬 서비스 Bearer 토큰. 시작 시 표시된 비공개 헤더 파일을 사용하세요.
캐시
no-store

매개변수

이름위치타입설명
id필수 경로 uuid 제출 결과의 작업 ID.

요청 예시

Terminal window
curl -sS -o output.bin "http://127.0.0.1:8765/v1/jobs/00000000-0000-4000-8000-000000000001/images.zip" \
-H "Authorization: Bearer ${localToken}"

응답 예시

HTTP/2 200 OK

바이너리 본문(표시하지 않음).

오류

상태코드의미
400invalid_request경로나 쿼리의 ID가 잘못되었습니다.
401unauthorized로컬 Bearer 토큰을 전달하세요.
403origin_not_allowed로컬 클라이언트나 스크립트에서 호출하세요.
404not_found지역 또는 기록을 찾을 수 없습니다.
404job_not_found작업이 만료되거나 삭제되었습니다.
409image_not_ready이미지 완료를 기다리세요.
413body_too_large요청 본문이 2 MiB를 초과합니다.
429rate_limit_exceeded이 키의 요청이 너무 많습니다. Retry-After가 있으면 따르세요.
429queue_full실행 완료를 기다리거나 결과를 삭제하세요.