Wan-2.2 Text-to-Video A14B
통합
모델 id
wan/v2.2-a14b/text-to-video
# Run the model; wait up to 20 s for the finished result in the same call
curl -X POST "https://vit.doitong.com/api/v1/run/wan/v2.2-a14b/text-to-video?wait=20" \
-H "Authorization: Bearer $DOITONG_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"prompt": "A red fox trots through fresh snow at sunrise, soft golden light, shallow depth of field"
}'
# Still "queued" or "running"? Poll with the id from the response:
curl "https://vit.doitong.com/api/v1/requests/REQUEST_ID?wait=20" \
-H "Authorization: Bearer $DOITONG_API_KEY"
const API = "https://vit.doitong.com/api/v1";
const headers = {
"Authorization": "Bearer " + process.env.DOITONG_API_KEY,
"Content-Type": "application/json",
};
// Run the model; wait up to 20 s for the finished result in the same call
let res = await fetch(API + "/run/wan/v2.2-a14b/text-to-video?wait=20", {
method: "POST",
headers,
body: JSON.stringify({
"prompt": "A red fox trots through fresh snow at sunrise, soft golden light, shallow depth of field"
}),
});
let request = await res.json();
if (!res.ok) throw new Error(request.error.code + ": " + request.error.message);
// Not finished yet: long-poll until it is
while (request.status === "queued" || request.status === "running") {
res = await fetch(API + "/requests/" + request.id + "?wait=20", { headers });
request = await res.json();
}
if (request.status !== "succeeded") throw new Error(JSON.stringify(request.error));
console.log(request.outputs.map((o) => o.url), request.cost.credits + " API credits ($" + request.cost.usd + ")");
import os
import requests
API = "https://vit.doitong.com/api/v1"
headers = {"Authorization": "Bearer " + os.environ["DOITONG_API_KEY"]}
payload = {
"prompt": "A red fox trots through fresh snow at sunrise, soft golden light, shallow depth of field",
}
# Run the model; wait up to 20 s for the finished result in the same call
r = requests.post(API + "/run/wan/v2.2-a14b/text-to-video", params={"wait": 20}, json=payload, headers=headers)
request = r.json()
if not r.ok:
raise RuntimeError(request["error"]["code"] + ": " + request["error"]["message"])
# Not finished yet: long-poll until it is
while request["status"] in ("queued", "running"):
request = requests.get(API + "/requests/" + request["id"], params={"wait": 20}, headers=headers).json()
if request["status"] != "succeeded":
raise RuntimeError(request["error"])
print([o["url"] for o in request["outputs"]], request["cost"]["credits"], "API credits", "$" + request["cost"]["usd"])
# 1. Connect once (Claude Code; Cursor, VS Code, Claude Desktop: https://doitong.com/ko/developers/docs/mcp)
claude mcp add --transport http doitong-models https://vit.doitong.com/api/v1/mcp \
--header "Authorization: Bearer $DOITONG_API_KEY"
# 2. Your agent calls the "run" tool with:
{
"model_id": "wan/v2.2-a14b/text-to-video",
"input": {
"prompt": "A red fox trots through fresh snow at sunrise, soft golden light, shallow depth of field"
}
}
Doitong API를 통해 Wan-2.2 Text-to-Video A14B 모델(wan/v2.2-a14b/text-to-video)을 호출합니다. 에이전트용 문서: https://doitong.com/ko/developers/models/wan/v2.2-a14b/text-to-video.md
POST https://vit.doitong.com/api/v1/run/wan/v2.2-a14b/text-to-video?wait=20
Authorization: Bearer $DOITONG_API_KEY
Content-Type: application/json
{
"prompt": "A red fox trots through fresh snow at sunrise, soft golden light, shallow depth of field"
}
응답 상태가 "queued" 또는 "running"이면 "succeeded"가 될 때까지 GET https://vit.doitong.com/api/v1/requests/REQUEST_ID?wait=20을 폴링하세요. 파일은 outputs[].url에 있습니다. POST https://vit.doitong.com/api/v1/quote/wan/v2.2-a14b/text-to-video에 동일한 본문을 보내면 실행 전에 정확한 가격을 반환합니다.
예시와 같은 파일: $0.405 405 API 크레딧 실행 전에 파일을 측정합니다 이 페이지에서 실행
새 API 키입니다. 지금만 표시되며 이미 아래 코드와 API 키 필드에 입력되어 있습니다. 안전하게 보관하세요. 브라우저에서 실행되는 코드에 절대 넣지 마세요.
Alibaba · 동영상
첫 번째 결과가 여기에 표시됩니다
아래에서 요청을 작성하고 API 키로 실행하세요. 출력은 스토리지에 복사되며, 영구 보관하거나 7일 동안 무료로 보관할 수 있습니다.
요청 만들기
컨트롤은 모델 스키마에서 생성됩니다. 값을 변경하면 코드와 가격이 업데이트됩니다.
POST
/run/wan/v2.2-a14b/text-to-video?wait=20
견적 → $0.405
# Run the model; wait up to 20 s for the finished result in the same call
curl -X POST "https://vit.doitong.com/api/v1/run/wan/v2.2-a14b/text-to-video?wait=20" \
-H "Authorization: Bearer $DOITONG_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"prompt": "A red fox trots through fresh snow at sunrise, soft golden light, shallow depth of field"
}'
# Still "queued" or "running"? Poll with the id from the response:
curl "https://vit.doitong.com/api/v1/requests/REQUEST_ID?wait=20" \
-H "Authorization: Bearer $DOITONG_API_KEY"
const API = "https://vit.doitong.com/api/v1";
const headers = {
"Authorization": "Bearer " + process.env.DOITONG_API_KEY,
"Content-Type": "application/json",
};
// Run the model; wait up to 20 s for the finished result in the same call
let res = await fetch(API + "/run/wan/v2.2-a14b/text-to-video?wait=20", {
method: "POST",
headers,
body: JSON.stringify({
"prompt": "A red fox trots through fresh snow at sunrise, soft golden light, shallow depth of field"
}),
});
let request = await res.json();
if (!res.ok) throw new Error(request.error.code + ": " + request.error.message);
// Not finished yet: long-poll until it is
while (request.status === "queued" || request.status === "running") {
res = await fetch(API + "/requests/" + request.id + "?wait=20", { headers });
request = await res.json();
}
if (request.status !== "succeeded") throw new Error(JSON.stringify(request.error));
console.log(request.outputs.map((o) => o.url), request.cost.credits + " API credits ($" + request.cost.usd + ")");
import os
import requests
API = "https://vit.doitong.com/api/v1"
headers = {"Authorization": "Bearer " + os.environ["DOITONG_API_KEY"]}
payload = {
"prompt": "A red fox trots through fresh snow at sunrise, soft golden light, shallow depth of field",
}
# Run the model; wait up to 20 s for the finished result in the same call
r = requests.post(API + "/run/wan/v2.2-a14b/text-to-video", params={"wait": 20}, json=payload, headers=headers)
request = r.json()
if not r.ok:
raise RuntimeError(request["error"]["code"] + ": " + request["error"]["message"])
# Not finished yet: long-poll until it is
while request["status"] in ("queued", "running"):
request = requests.get(API + "/requests/" + request["id"], params={"wait": 20}, headers=headers).json()
if request["status"] != "succeeded":
raise RuntimeError(request["error"])
print([o["url"] for o in request["outputs"]], request["cost"]["credits"], "API credits", "$" + request["cost"]["usd"])
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "run",
"arguments": {
"model_id": "wan/v2.2-a14b/text-to-video",
"input": {
"prompt": "A red fox trots through fresh snow at sunrise, soft golden light, shallow depth of field"
},
"wait_seconds": 20
}
}
}
Wan-2.2 Text-to-Video A14B 정보
텍스트 `prompt`에서 동영상을 생성합니다. `num_frames`는 17~161, `frames_per_second`는 4~60 범위이며, `resolution`은 16:9, 9:16 또는 1:1의 480p, 580p 또는 720p입니다. 두 가지 가이던스 값, `acceleration` 설정 및 film 또는 rife 보간(기본값은 보간된 프레임 1개)을 사용할 수 있습니다.
매개변수
이름유형
기본값허용됨
설명
prompt필수
유형string
동영상 생성을 안내하는 텍스트 지침입니다.
negative_prompt선택 사항
유형string
기본값
동영상 생성에 적용되는 네거티브 프롬프트입니다.
num_frames선택 사항
유형integer
기본값81
17 – 161
생성할 프레임 수입니다. 17–161을 모두 포함하는 범위입니다.
frames_per_second선택 사항
유형integer | null
기본값16
4 – 60
생성된 동영상의 프레임 속도입니다. 4~60 값을 허용합니다. `adjust_fps_for_interpolation`을 false로 설정하면 이 속도를 변경 없이 유지합니다. 보간을 사용하고 `adjust_fps_for_interpolation`이 true(기본값)이면 이 속도에 보간된 프레임 수를 더한 값의 1배를 곱해 최종 FPS를 계산합니다. 예를 들어 16 FPS에 보간된 프레임 1개를 추가하면 32 FPS가 됩니다.
seed선택 사항
유형integer | null
생성을 재현 가능하게 하는 시드입니다. None으로 설정하면 무작위로 선택됩니다.
resolution선택 사항
유형enum
기본값720p
480p580p720p
출력 동영상 해상도입니다. 480p, 580p 또는 720p입니다.
aspect_ratio선택 사항
유형enum
기본값16:9
16:99:161:1
출력 동영상의 화면비이며 16:9 또는 9:16입니다.
num_inference_steps선택 사항
유형integer
기본값27
2 – 40
샘플링 단계 수입니다. 수가 늘어날수록 처리 시간이 길어지는 대신 품질이 향상됩니다.
enable_safety_checker선택 사항
유형boolean
기본값false
처리 전 입력 안전성 검사입니다. 승인된 계정만 해제할 수 있습니다. 권한이 없는 요청은 항상 검사되며, 그 외에는 true가 검사를 활성화합니다.
enable_output_safety_checker선택 사항
유형boolean
기본값false
생성된 동영상의 안전성 검사를 제어합니다. true로 설정하면 생성 후 검사를 활성화합니다.
enable_prompt_expansion선택 사항
유형boolean
기본값false
대규모 언어 모델이 세부 정보를 추가하여 프롬프트를 보강하도록 허용합니다. 이 확장을 활성화해도 프롬프트의 의미는 바뀌지 않습니다.
acceleration선택 사항
유형enum
기본값regular
noneregular
가속 설정입니다. 'regular'를 권장합니다. 가속을 높이면 품질이 저하되는 대신 생성 시간이 줄어듭니다.
guidance_scale선택 사항
유형number
기본값3.5
1 – 10
분류기 없는 안내 강도입니다. 스케일이 커질수록 프롬프트 일치도가 높아지는 대신 품질이 저하될 수 있습니다.
guidance_scale_2선택 사항
유형number
기본값4
1 – 10
두 번째 단계에서 모델이 프롬프트를 얼마나 충실히 따를지 제어하는 안내 배율입니다.
shift선택 사항
유형number
기본값5
1 – 10
동영상 이동 설정입니다. 허용 범위는 1.0–10.0입니다.
interpolator_model선택 사항
유형enum
기본값film
nonefilmrife
프레임 보간 설정입니다. 보간을 건너뛰려면 None을 선택하고, 수행할 모델을 지정합니다.
num_interpolated_frames선택 사항
유형integer
기본값1
0 – 4
생성된 두 프레임 사이의 각 간격에 보간된 프레임을 0~4개 삽입합니다.
adjust_fps_for_interpolation선택 사항
유형boolean
기본값true
프레임 속도 조정 전환입니다. false이면 제공된 FPS를 유지하고, true이면 보간된 프레임 수를 더한 값의 1배를 곱해 조정합니다. 따라서 프레임 1개를 보간하고 조정을 활성화하면 16 FPS가 32 FPS가 됩니다.
video_quality선택 사항
유형enum
기본값high
lowmediumhighmaximum
출력 동영상 품질 설정입니다. 값을 높일수록 파일 크기가 커지는 대신 시각적 품질이 향상됩니다.
video_write_mode선택 사항
유형enum
기본값balanced
fastbalancedsmall
동영상 기록 모드입니다. balanced는 속도와 품질의 절충을 제공합니다. 가장 작은 파일과 가장 느린 기록을 원하면 small을 선택합니다. 더 빠른 기록은 결과를 빨리 반환하지만 더 큰 파일을 만듭니다.
필수
출력
GET /requests/req_8k2m4q7x1z9c3v5b6n0p2r4t
{
"id": "req_8k2m4q7x1z9c3v5b6n0p2r4t",
"object": "request",
"model": "wan/v2.2-a14b/text-to-video",
"status": "succeeded",
"created_at": "2026-10-20T12:00:00Z",
"started_at": "2026-10-20T12:00:02Z",
"completed_at": "2026-10-20T12:00:09Z",
"queue_position": null,
"cost": {
"credits": 405,
"usd": "0.405",
"charged": 405,
"refunded": 0
},
"input": {
"prompt": "A red fox trots through fresh snow at sunrise, soft golden light, shallow depth of field"
},
"output": {
"video": {
"url": "https://content.doitong.com/dev-api/2026/10/20/req_8k2m4q7x1z9c3v5b6n0p2r4t/0-output.mp4",
"content_type": "video/mp4",
"file_name": "0-output.mp4",
"file_size": 1843200
},
"prompt": "A close-up of a young woman smiling gently in the rain, raindrops glistening on her face and eyelashes. The video captures the delicate details of her expression and the water droplets, with soft light reflecting off her skin in the rainy atmosphere.",
"seed": 42
},
"outputs": [
{
"type": "video",
"url": "https://content.doitong.com/dev-api/2026/10/20/req_8k2m4q7x1z9c3v5b6n0p2r4t/0-output.mp4",
"content_type": "video/mp4",
"file_size": 1843200,
"width": 1280,
"height": 720,
"duration": 5,
"stored": true
}
],
"error": null,
"metrics": {
"inference_seconds": 6.8
},
"urls": {
"self": "https://vit.doitong.com/api/v1/requests/req_8k2m4q7x1z9c3v5b6n0p2r4t",
"cancel": "https://vit.doitong.com/api/v1/requests/req_8k2m4q7x1z9c3v5b6n0p2r4t/cancel"
}
}
파일 보관 방식 선택모든 outputs[].url은 스토리지에 저장된 복사본입니다. 계정 설정 또는 ?storage=에 따라 영구 보관(GB-월 단위 과금)하거나 7일 동안 무료로 보관합니다.
모든 모델에서 동일한 구조이미지, 동영상, 오디오 모두 type, url, content_type, width, height 및 duration을 사용합니다. output은 모델 자체의 결과 객체입니다.
출력 필드
- video
- object {url, content_type, file_name, file_size}생성으로 만들어진 동영상 파일입니다.
- prompt
- string동영상 생성에 사용하는 텍스트 프롬프트입니다.
- seed
- integer생성 중 적용되는 시드 값입니다.
다른 Wan v22 Large 변형
더 많은 모델: 텍스트를 동영상으로
AI 에이전트용: 이 페이지의 Markdown 버전: https://doitong.com/ko/developers/models/wan/v2.2-a14b/text-to-video.md. 모든 모델 및 가이드: https://doitong.com/developers/llms.txt