kling-v1
kling-v1은 std 또는 pro 모드를 명시하여 텍스트 프롬프트로 영상을 만듭니다. 숏 길이와 프롬프트 설정을 정한 다음 Ailoot에서 완성된 모든 영상 결과를 가져오세요.
모델 소개
이 설명은 모델의 기능을 다룹니다. Ailoot에서 사용할 수 있는 입력, 출력 및 옵션은 아래에 선택한 메서드별로 표시됩니다.
/v1/videos에서 kling-v1에 model, prompt, mode를 사용하세요. std 또는 pro를 선택하고 최대 500자의 프롬프트로 숏을 설명하세요. 요청에는 5초 또는 10초 duration, aspect_ratio, model_name, cfg_scale, 최대 200자의 negative_prompt가 제공됩니다.
사용 가능한 프롬프트 공간을 주된 피사체, 동작 하나, 배경, 카메라 연출에 활용하세요. 장식적인 표현보다 구도를 결정하는 세부 사항을 앞에 두세요. cfg_scale은 0~1의 값을 받습니다. 이후 변형과 비교할 때 선택한 설정을 지시문과 함께 유지하세요.
진행 상황을 확인하려고 두 번째 작업을 만들지 말고 원래 요청 ID를 추적하세요. 결과는 data.task_status와 data.task_result.videos[].url을 사용하며, succeed는 완료를 뜻합니다. 완성된 모든 영상과 각각의 전체 응답을 저장한 다음 숏 전체를 프롬프트와 대조하여 살펴보세요.
Ailoot Ultra · Video POST /v1/videos kling-v1
kling-v1시작하기
kling-v1은 std 또는 pro 모드를 명시하여 텍스트 프롬프트로 영상을 만듭니다. 숏 길이와 프롬프트 설정을 정한 다음 Ailoot에서 완성된 모든 영상 결과를 가져오세요.
- 허용 입력
- 텍스트
- 결과
- 동영상
Ailoot에서 사용 가능 · 입력 및 메서드
Ailoot Ultra · Video POST /v1/videos
- 입력
text- 출력
video
| 필드 | 유형 | 요건 | 값과 한도 | 기본값 |
|---|---|---|---|---|
필드model | 유형string | 요건필수 | 값과 한도 kling-v1 조건: 이 Ailoot 라우팅 선택자를 그대로 사용하세요. | 기본값— |
필드prompt | 유형string | 요건필수 | 값과 한도 최대 길이: 500 조건: | 기본값— |
필드mode | 유형string | 요건필수 | 값과 한도 std, pro 조건: | 기본값— |
필드model_name | 유형string | 요건선택 사항 | 값과 한도 조건: 네이티브 설정을 재정의하는 선택적 값입니다. 생략하면 선택한 모델을 자동으로 사용하며, 값을 명시하면 해당 값을 유지합니다. | 기본값— |
필드cfg_scale | 유형number | 요건선택 사항 | 값과 한도 최솟값: 0 최댓값: 1 조건: | 기본값— |
필드aspect_ratio | 유형string | 요건선택 사항 | 값과 한도 조건: | 기본값— |
필드negative_prompt | 유형string | 요건선택 사항 | 값과 한도 최대 길이: 200 조건: | 기본값— |
필드duration | 유형integer | 요건선택 사항 | 값과 한도 5, 10 조건: | 기본값— |
메서드 매개변수와 수명 주기
| 매개변수 | 명세 |
|---|---|
매개변수content_type | 명세application/json |
매개변수required | 명세model, prompt, mode |
매개변수optional | 명세model_name, cfg_scale, aspect_ratio, negative_prompt, duration |
매개변수material_types | 명세text |
매개변수conditions | 명세이 Ailoot 라우팅 선택자를 그대로 사용하세요., 네이티브 설정을 재정의하는 선택적 값입니다. 생략하면 선택한 모델을 자동으로 사용하며, 값을 명시하면 해당 값을 유지합니다. |
메서드 별칭: /v1/videos/generations
수명 주기: submit_once_poll_original
GET /v1/videos/{request_id}
GET /v1/videos/generations/{request_id}
GET /v1/videos/{request_id}/content
GET /v1/media/assets
GET /v1/media/assets/{asset_id}
요금
최종 요금 계산 방식
표시된 요율은 생성 전 비용을 예상하는 데 사용됩니다. 최종 청구액은 최초 생성에 기록된 비용으로 계산됩니다. 측정된 출력 길이와 예상 수량은 최종 청구 수량이 아닙니다.
요금 정보는 요청 옵션을 추가하지 않습니다. 지원되는 매개변수는 선택한 메서드에 표시됩니다.
- 빠른 모드
- 미지정 빠른 모드를 선택한 경우
- Flex 모드
- 미지정 flex 모드를 선택한 경우
- 최대 추론 수준
- 미지정 최대 추론 수준에 default 조정값을 적용하는 경우
비교용 예상 요금
설정별 가격
각 요금을 표시된 조건과 대조하세요. 서로 대체되는 설정 묶음마다 하나의 요금만 적용하세요.
| 설정 | 요금표 | 예측 수량 | 요금 |
|---|---|---|---|
| 설정기본 토큰 요금 | 요금표기본 요금 | 예측 수량— | 요금 입력 · 입력 토큰 · 비교 전용 추정치 — / 1K 토큰 출력 · 출력 토큰 · 비교 전용 추정치 — / 1K 토큰 입력 · 캐시 읽기 · 비교 전용 추정치 — / 1K 토큰 입력 · 캐시 쓰기 · 비교 전용 추정치 — / 1K 토큰 입력 · 캐시 쓰기, 1시간 · 비교 전용 추정치 — / 1K 토큰 |
| 설정예상 생성 비용 | 요금표— | 예측 수량1회 생성 예상치 | 요금 출력 · 예상 생성 비용 · 비교 전용 추정치 $6 생성 전 추정치 이 예상 금액은 추가 요금이나 생성 완료 시 적용되는 고정 요금이 아닙니다. |
Ailoot는 요청 전에 예상 금액을 미리 확보합니다. 결과를 받은 뒤 측정된 사용량을 기준으로 최종 요금을 정산합니다. 스트리밍 정산에는 최종 사용량 기록을 사용합니다. 금액 확보와 정산 방식 →
요청 예제
Ailoot Ultra · Video
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
export AILOOT_API_KEY
python3 - <<'PY_REQUEST'
import json,os
from pathlib import Path
p=json.loads('{"model": "kling-v1", "prompt": "A happy holiday scene at the beach.", "mode": "pro"}')
Path("request.json").write_text(json.dumps(p,ensure_ascii=False))
PY_REQUEST
curl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/videos \
-H "Authorization: Bearer $AILOOT_API_KEY" -H 'Content-Type: application/json' \
--data-binary @request.json -D response-headers.txt -o result.json
# Submit once. Retain the complete result, original identifiers and every response header.
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
export AILOOT_API_KEY
python3 - <<'PY_STATUS'
import json,os,subprocess
from pathlib import Path
from urllib.parse import urljoin,urlsplit
r=json.loads(Path("result.json").read_text())
u=urljoin("https://api.ailoot.ai",r["polling_url"])
p=urlsplit(u)
if p.scheme!="https" or p.netloc!="api.ailoot.ai" or p.username or p.password:
raise SystemExit("Unexpected returned polling URL; preserve the response")
subprocess.run(["curl","--fail-with-body","--silent","--show-error",u,"-H","Authorization: Bearer "+os.environ["AILOOT_API_KEY"],"-D","status-headers.txt","-o","status.json"],check=True)
# Read this same original polling_url again while pending.
# Preserve unknown/result_pending_check; do not repeat creation.
PY_STATUS
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
export AILOOT_API_KEY
python3 - <<'PY_ASSETS'
import json,os,subprocess
from pathlib import Path
from urllib.parse import urljoin,urlsplit
r=json.loads(Path("status.json").read_text())
roles={}
def visit(v,path=""):
if isinstance(v,dict):
for k,x in v.items(): visit(x,path+"/"+k)
elif isinstance(v,list):
for i,x in enumerate(v): visit(x,path+"/"+str(i))
elif isinstance(v,str):
u=urljoin("https://api.ailoot.ai",v); p=urlsplit(u)
if p.scheme=="https" and p.netloc=="api.ailoot.ai" and not p.username and not p.password and p.path.startswith("/v1/media/assets/") and p.path.endswith("/content"):
roles.setdefault(u,[]).append(path)
visit(r)
if not roles: raise SystemExit("No completed owned assets; retain the original status")
manifest=[]
for i,(u,paths) in enumerate(roles.items()):
target=Path(f"asset-{i}.bin")
subprocess.run(["curl","--fail-with-body","--silent","--show-error",u,"-H","Authorization: Bearer "+os.environ["AILOOT_API_KEY"],"-o",str(target)],check=True)
raw=target.read_bytes()
if not raw: raise SystemExit("Empty asset; retain original status and metadata")
ext="glb" if raw[:4]==b"glTF" else "png" if raw[:8]==b"\x89PNG\r\n\x1a\n" else "jpg" if raw[:3]==b"\xff\xd8\xff" else "webp" if raw[:4]==b"RIFF" and raw[8:12]==b"WEBP" else "mp4" if raw[4:8]==b"ftyp" else "bin"
name=f"asset-{i}.{ext}"
if target.name!=name: target.rename(name)
manifest.append({"file":name,"response_paths":paths,"bytes":len(raw)})
Path("asset-manifest.json").write_text(json.dumps(manifest,indent=2))
print("Saved",len(manifest),"unique owned assets; every response role retained")
PY_ASSETS
결과 수신 및 저장
Ailoot Ultra · Video
GET /v1/videos/{request_id}GET /v1/videos/generations/{request_id}GET /v1/videos/{request_id}/contentGET /v1/media/assetsGET /v1/media/assets/{asset_id}
완료된 결과 모두 보관
완료된 모든 동영상과 반환된 파일을 저장하고, 실제로 반환된 모든 자산 URL에서 가져오세요.
응답과 헤더 전체, 원래 식별자, 모든 실제 출력 및 모든 사용량/회계 필드를 보존하세요. 고유한 소유 자산을 각각 저장하고 해당 자산을 가리키는 모든 역할을 유지하세요.
원래 응답을 확인해야 할 경우
반환된 공개 작업 또는 연산 id와 모든 헤더를 보존하세요. 원래 작업만 조회하세요. unknown 또는 result_pending_check는 새로운 생성을 허용하는 근거가 되지 않습니다.
응답 필드
| 필드 | 유형 |
|---|---|
필드id | 유형string |
필드polling_url | 유형string |
필드provider_task_id | 유형string |
필드data.task_id | 유형string |
필드data.task_status | 유형string |
필드data.task_result.videos[].url | 유형string |
오류와 다음 단계
| 응답 | 조건 | 다음 단계 |
|---|---|---|
응답400 · invalid_request_error | 조건필수 필드, 모델 선택자, 유형 또는 입력 표현 형식이 유효하지 않습니다. | 다음 단계별도의 요청을 준비하기 전에 반환된 유효성 검사 세부 정보를 확인하세요. |
응답 | 조건원래 요청이나 결과를 알 수 없거나 확인이 필요합니다. | 다음 단계원래 식별자와 헤더를 보존하고, 지원되는 상태 정보나 라이브러리 기록만 조회하세요. 생성 요청을 다시 제출하지 마세요. |
별칭
모델 별칭
Ailoot Ultra kling-v1
메서드 경로 별칭
/v1/videos/generations
관련 호출용 ID
FAQ · kling-v1
- 어떤 입력과 결과를 사용할 수 있나요?
POST /v1/videos·kling-v1:text→video- 요청은 어떤 필드를 사용하나요?
POST /v1/videos·kling-v1:model,prompt,mode,model_name,cfg_scale,aspect_ratio,negative_prompt,duration- 어떤 제한이 적용되나요?
POST /v1/videos·kling-v1:prompt.maximum_length:500;cfg_scale.minimum:0;cfg_scale.maximum:1;negative_prompt.maximum_length:200