2026.06.07 — Music Generation 기능이 추가되었습니다. Click
MPaaS AIGC Text Generation

1. Text Generation Overview

첫 호출 시 아래의 단계를 따라 진행해주십시오. 각 step은 아래 상세 섹션으로 연결되어 있습니다.

Important
전체 흐름: 서비스 개통 → CreateAigcApiToken으로 Token 발급 → Token을 사용해 LLM 모델 호출.

1.1 Step 1 — Token 발급

CreateAigcApiToken으로 AIGC API Token을 발급받습니다. 발급된 Token이 곧 LLM 호출 시 $YOUR_API_TOKEN입니다.

1.2 Step 2 — Endpoint 선택

사용할 모델에 맞춰 endpoint($ENDPOINT)를 선택합니다. 자세한 매핑은 5.2 프로토콜 매트릭스 참조.

프로토콜Endpoint ($ENDPOINT)주 사용 모델
OpenAI Completionshttps://text-aigc.vod-qcloud.com/v1/chat/completionsGPT, Gemini, Kimi, GK, GLM, DeepSeek
OpenAI Responseshttps://text-aigc.vod-qcloud.com/v1/responsesGPT (공식 권장)
Anthropic Messageshttps://text-aigc.vod-qcloud.com/v1/messagesCD (Claude), MiniMax

1.3 Step 3 — Headers 준비

최소 2개 헤더만 있으면 호출 가능합니다. 자세한 헤더 옵션은 5.1 Request Headers 참조.

HeaderValue
Content-Typeapplication/json
AuthorizationBearer $YOUR_API_TOKEN (Anthropic Messages는 x-api-key: $YOUR_API_TOKEN 사용 가능)

1.4 Step 4 — 첫 호출

아래 cURL 1개를 그대로 실행하면 첫 응답이 돌아옵니다.

$YOUR_API_TOKEN$ENDPOINT를 앞 단계에서 얻은 값으로 치환합니다. 최소 헤더는 Content-TypeAuthorization 두 개입니다.

Body 파라미터의 의미는 5.4 Request Parameters를, 다른 프로토콜 예시는 6. 호출 예시를 참조합니다.

Bash Quickstart cURL
curl -X POST $ENDPOINT \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer $YOUR_API_TOKEN" \
  -d '{
    "model": "gpt-5.1",
    "messages": [
      {"role": "user", "content": "Hi, who are you?"}
    ]
  }'

2. API 정보

POSTtext-aigc.vod-qcloud.com
항목
Base URLhttps://text-aigc.vod-qcloud.com
MethodPOST
Endpoint (OpenAI Completions)/v1/chat/completions
Endpoint (OpenAI Responses)/v1/responses
Endpoint (Anthropic Messages)/v1/messages
AuthAuthorization: Bearer ${TOKEN} 또는 x-api-key: ${TOKEN}

3. 인증 & Token 관리

Token 관리 API는 Tencent Cloud API (vod.intl.tencentcloudapi.com)를 통해 호출합니다. 인증은 Tencent Cloud 공통 파라미터(SecretId/SecretKey 서명)를 사용합니다.

3.1 CreateAigcApiToken

POSTvod.intl.tencentcloudapi.com

AIGC API Token을 생성합니다. 생성 후 약 30초간 동기화 시간이 필요하며, 이후 조회/삭제가 가능합니다.

📎 공식 API 문서: CreateAigcApiToken

Request Parameters

ParameterTypeDescription
SubAppIdrequiredIntegerVOD 애플리케이션 ID

Response Parameters

ParameterTypeDescription
ApiTokenString생성된 AIGC API Token
RequestIdString요청 고유 ID
Python SDK Example
from tencentcloud.common import credential
from tencentcloud.vod.v20180717 import vod_client, models

cred = credential.Credential("YOUR_SECRET_ID", "YOUR_SECRET_KEY")
client = vod_client.VodClient(cred, "")

req = models.CreateAigcApiTokenRequest()
req.SubAppId = 1500033704

resp = client.CreateAigcApiToken(req)
print(resp.ApiToken)  # 생성된 Token
JSON Response
200
💡
Tip
Token은 만료되지 않습니다. 계정당 최대 50개까지 생성 가능합니다.

3.2 DescribeAigcApiTokens

POSTvod.intl.tencentcloudapi.com

현재 계정에 생성된 AIGC API Token 목록을 조회합니다.

📎 공식 API 문서: DescribeAigcApiTokens

Request Parameters

ParameterTypeDescription
SubAppIdrequiredIntegerVOD 애플리케이션 ID

Response Parameters

ParameterTypeDescription
TokenSetArray of ObjectToken 목록
TokenSet[].TokenIdStringToken ID
TokenSet[].TokenNameStringToken 이름 (선택 입력한 경우)
TokenSet[].ApiTokenStringAPI Token 값 (마스킹)
TokenSet[].CreateTimeString생성 시간 (ISO 8601)
RequestIdString요청 고유 ID
Python SDK Example
from tencentcloud.common import credential
from tencentcloud.vod.v20180717 import vod_client, models

cred = credential.Credential("YOUR_SECRET_ID", "YOUR_SECRET_KEY")
client = vod_client.VodClient(cred, "")

req = models.DescribeAigcApiTokensRequest()
req.SubAppId = 1500033704

resp = client.DescribeAigcApiTokens(req)
for token in resp.TokenSet:
    print(f"{token.TokenId} | {token.ApiToken} | {token.CreateTime}")
JSON Response
200

3.3 DeleteAigcApiToken

POSTvod.intl.tencentcloudapi.com

지정한 AIGC API Token을 삭제합니다. 삭제된 Token으로는 더 이상 API를 호출할 수 없습니다.

📎 공식 API 문서: DeleteAigcApiToken

Request Parameters

ParameterTypeDescription
SubAppIdrequiredIntegerVOD 애플리케이션 ID
TokenIdrequiredString삭제할 Token의 ID
Python SDK Example
from tencentcloud.common import credential
from tencentcloud.vod.v20180717 import vod_client, models

cred = credential.Credential("YOUR_SECRET_ID", "YOUR_SECRET_KEY")
client = vod_client.VodClient(cred, "")

req = models.DeleteAigcApiTokenRequest()
req.SubAppId = 1500033704
req.TokenId = "token-xxxxxxxxxxxx"

resp = client.DeleteAigcApiToken(req)
print(resp.RequestId)  # 성공 시 RequestId 반환
JSON Response
200

3.4 서브계정 권한 설정 (CAM)

서브계정에서 Token API를 호출하려면 주 계정에서 다음 CAM 정책을 부여해야 합니다.

정책 1: 모든 SubAppId에 대한 권한

JSON CAM Policy
{
  "statement": [
    {
      "action": [
        "vod:CreateAigcApiToken",
        "vod:DeleteAigcApiToken"
      ],
      "effect": "allow",
      "resource": "*"
    }
  ],
  "version": "2.0"
}

정책 2: 특정 SubAppId에 대한 권한

JSON CAM Policy (specific SubAppId)
{
  "statement": [
    {
      "action": [
        "vod:CreateAigcApiToken",
        "vod:DeleteAigcApiToken"
      ],
      "effect": "allow",
      "resource": "qcs::vod::uin/*:subAppId/1500050693"
    }
  ],
  "version": "2.0"
}

4. AIGC Quota 관리

AIGC API Token 단위(Text) 또는 SubAppId 단위(Image, Video)로 사용 한도를 설정·조회·수정·삭제할 수 있습니다. 한도를 초과하면 LLM 호출이 HTTP 429 + insufficient_quota로 거부됩니다.

중요 — 호출 환경 제약
  • Endpoint: https://vod.tencentcloudapi.com 와 인터내셔널 도메인(https://vod.intl.tencentcloudapi.com) 모두 지원합니다. (과거 intl 도메인에서 InvalidAction을 반환하던 제약은 해소되어, 두 도메인 모두 정상 동작합니다.)
  • Tencent Cloud Python SDK 3.1.111 기준으로 본 4종 API는 SDK 모델에 미반영 상태입니다. 따라서 raw signed POST (TC3-HMAC-SHA256) 방식으로만 호출 가능합니다.

개요

Action설명필수 파라미터
DescribeAigcQuotasQuota 조회SubAppId, QuotaType
CreateAigcQuotaQuota 생성SubAppId, QuotaType, QuotaLimit (Text는 ApiToken 추가 필수)
ModifyAigcQuotaQuota 수정SubAppId, QuotaType, QuotaLimit (Text는 ApiToken 추가 필수)
DeleteAigcQuotaQuota 삭제SubAppId, QuotaType (Text는 ApiToken 추가 필수)

공통 규약

항목
Endpointhttps://vod.tencentcloudapi.com 또는 https://vod.intl.tencentcloudapi.com (둘 다 동일 동작)
Servicevod
Version2018-07-17
인증 방식TC3-HMAC-SHA256 서명 (SecretId / SecretKey)
호출 방식Raw signed POST (Python SDK 미반영)

QuotaType 차원

QuotaType차원ApiToken 필요 여부
TextApiToken 단위필수
ImageSubAppId 단위불필요
VideoSubAppId 단위불필요

운영 가이드 — 실전 시나리오

예시: 신규 고객의 Text API Token에 "월 100콜 상당" 한도를 적용하는 표준 절차입니다. 비동기 집계 over-shoot(+38%)을 고려해 안전 마진을 적용한 흐름입니다.

단계Action목적 / 설정값
① 현재 상태 확인DescribeAigcQuotas해당 Token에 기존 Quota가 있는지 조회. 없으면 생성, 있으면 수정으로 분기.
② 한도 생성CreateAigcQuota의도 한도 100콜 → over-shoot 보정으로 QuotaLimit=65(약 65%)로 설정. QuotaType=Text + ApiToken 지정 필수.
③ 모니터링DescribeAigcQuotas주기적으로 QuotaUsed / QuotaLimit 비교. 한도 근접 시 ④ 또는 ⑤로.
④ 한도 증액ModifyAigcQuota고객 증설 요청 시 QuotaLimit만 상향. 차원(SubAppId/QuotaType/ApiToken)은 동일하게 유지.
⑤ 누적값 리셋DeleteAigcQuotaCreateAigcQuota자동 리셋이 없으므로, 새 청구주기 진입 시 삭제 후 재생성(= disable→enable 효과)으로 누적 0 초기화.
💡
권장 설정 요약
  • QuotaLimit = 의도 한도 × 0.6~0.7 — over-shoot(+38%)을 흡수하여 실효 한도를 의도치에 맞춥니다.
  • Token 단위 격리 — 고객/환경마다 별도 ApiToken을 발급해 Token 단위로 한도를 독립 관리하십시오.
  • 리셋은 삭제→재생성ModifyAigcQuota는 한도만 바꿀 뿐 누적값을 0으로 만들지 않습니다.
  • 모니터링 자동화DescribeAigcQuotas를 주기 폴링하여 QuotaUsed/QuotaLimit ≥ 0.8일 때 알림을 권장합니다.

4.1 DescribeAigcQuotas

설정된 Quota 정보를 조회합니다.

Request Parameters

ParameterTypeDescription
SubAppIdrequiredIntegerVOD 애플리케이션 ID
QuotaTyperequiredStringText | Image | Video
ApiTokenconditionalStringQuotaType이 Text일 때만 사용. 특정 Token만 조회
JSON Request Body Example (Text)
{
  "Action": "DescribeAigcQuotas",
  "Version": "2018-07-17",
  "SubAppId": 1500033704,
  "QuotaType": "Text",
  "ApiToken": "aOmFOhCsDoqKsSo9BMvwv81o8nd1vzSe"
}
JSON Response Example
200
{
  "Response": {
    "QuotaSet": [
      {
        "SubAppId": 1500033704,
        "QuotaType": "Text",
        "ApiToken": "aOmFOhCsDoqKsSo9BMvwv81o8nd1vzSe",
        "QuotaLimit": 100,
        "Used": 0,
        "Status": "Enabled"
      }
    ],
    "RequestId": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
  }
}

4.2 CreateAigcQuota

새 Quota를 생성합니다. 동일 차원에 이미 Quota가 존재하면 FailedOperation.QuotaExist를 반환합니다.

Request Parameters

ParameterTypeDescription
SubAppIdrequiredIntegerVOD 애플리케이션 ID
QuotaTyperequiredStringText | Image | Video
QuotaLimitrequiredIntegerQuota 한도(누적 호출 수)
ApiTokenconditionalStringQuotaType이 Text일 때 필수
JSON Request Body Example (Text)
{
  "Action": "CreateAigcQuota",
  "Version": "2018-07-17",
  "SubAppId": 1500033704,
  "QuotaType": "Text",
  "ApiToken": "aOmFOhCsDoqKsSo9BMvwv81o8nd1vzSe",
  "QuotaLimit": 100
}

4.3 ModifyAigcQuota

기존 Quota의 한도를 수정합니다. 자동 리셋은 지원되지 않으므로, 누적값을 0으로 되돌리려면 disable → enable로 토글해야 합니다(아래 caveat 참조).

Request Parameters

ParameterTypeDescription
SubAppIdrequiredIntegerVOD 애플리케이션 ID
QuotaTyperequiredStringText | Image | Video
QuotaLimitrequiredInteger새 Quota 한도
ApiTokenconditionalStringQuotaType이 Text일 때 필수
JSON Request Body Example (Text)
{
  "Action": "ModifyAigcQuota",
  "Version": "2018-07-17",
  "SubAppId": 1500033704,
  "QuotaType": "Text",
  "ApiToken": "aOmFOhCsDoqKsSo9BMvwv81o8nd1vzSe",
  "QuotaLimit": 200
}

4.4 DeleteAigcQuota

설정된 Quota를 삭제합니다. 삭제 후 해당 차원은 한도 없이 호출 가능 상태가 됩니다.

Request Parameters

ParameterTypeDescription
SubAppIdrequiredIntegerVOD 애플리케이션 ID
QuotaTyperequiredStringText | Image | Video
ApiTokenconditionalStringQuotaType이 Text일 때 필수
JSON Request Body Example (Text)
{
  "Action": "DeleteAigcQuota",
  "Version": "2018-07-17",
  "SubAppId": 1500033704,
  "QuotaType": "Text",
  "ApiToken": "aOmFOhCsDoqKsSo9BMvwv81o8nd1vzSe"
}

4.5 한도 초과 시 LLM 응답

설정한 Quota를 초과한 상태에서 Text Generation을 호출하면 LLM endpoint에서 HTTP 429와 함께 다음 본문을 반환합니다:

JSON 429 Response
429
{
  "error": {
    "type": "insufficient_quota",
    "message": "Text quota exceeded.",
    "code": null
  }
}

4.6 누적 · 리셋 · over-shoot 주의사항

주의사항
  • 자동 리셋 없음: 시간/일자 기반 자동 리셋은 제공되지 않습니다. 누적값 0 초기화는 disable → enable 토글로만 가능합니다.
  • 비동기 집계로 인한 over-shoot: 사용량 집계가 비동기로 처리되어 over-shoot이 +38%까지 관측되었습니다(예: QuotaLimit=100 설정 시 138 호출까지 통과).
  • 안전 마진: 실효 한도를 보장하려면 의도한 값의 60~70%QuotaLimit을 설정하길 권장합니다.

관련 에러 코드

CodeScopeDescription
insufficient_quotaLLM endpoint (HTTP 429)설정된 Quota 초과 — Text 호출 거부
MissingParametervod / vod.intl필수 파라미터 누락(QuotaType, SubAppId 등) — 요청 본문 확인
InvalidParameterValuevod / vod.intlQuotaType 값 오류 또는 Text에서 ApiToken 누락

4.7 Python raw signed POST 예제

Tencent Cloud Python SDK 3.1.111 기준으로 본 API는 SDK 모델에 미반영 상태입니다. 아래는 TC3-HMAC-SHA256 서명을 직접 만들어 호출하는 예제입니다.

Python raw signed POST (DescribeAigcQuotas)
import hashlib, hmac, json, time
import requests

SECRET_ID  = "YOUR_SECRET_ID"
SECRET_KEY = "YOUR_SECRET_KEY"

ENDPOINT = "vod.tencentcloudapi.com"
SERVICE  = "vod"
VERSION  = "2018-07-17"
ACTION   = "DescribeAigcQuotas"

payload = {
    "SubAppId": 1500033704,
    "QuotaType": "Text",
    "ApiToken": "aOmFOhCsDoqKsSo9BMvwv81o8nd1vzSe",
}
body = json.dumps(payload, separators=(",", ":"))

ts   = int(time.time())
date = time.strftime("%Y-%m-%d", time.gmtime(ts))

# Step 1: CanonicalRequest
hashed_body = hashlib.sha256(body.encode("utf-8")).hexdigest()
canonical_request = "\n".join([
    "POST",
    "/",
    "",
    f"content-type:application/json\nhost:{ENDPOINT}\n",
    "content-type;host",
    hashed_body,
])

# Step 2: StringToSign
credential_scope = f"{date}/{SERVICE}/tc3_request"
string_to_sign = "\n".join([
    "TC3-HMAC-SHA256",
    str(ts),
    credential_scope,
    hashlib.sha256(canonical_request.encode("utf-8")).hexdigest(),
])

# Step 3: Signature
def _hmac(k, m): return hmac.new(k, m.encode("utf-8"), hashlib.sha256).digest()
secret_date    = _hmac(("TC3" + SECRET_KEY).encode("utf-8"), date)
secret_service = _hmac(secret_date, SERVICE)
secret_signing = _hmac(secret_service, "tc3_request")
signature      = hmac.new(secret_signing, string_to_sign.encode("utf-8"), hashlib.sha256).hexdigest()

# Step 4: Authorization Header
authorization = (
    f"TC3-HMAC-SHA256 "
    f"Credential={SECRET_ID}/{credential_scope}, "
    f"SignedHeaders=content-type;host, "
    f"Signature={signature}"
)

resp = requests.post(
    f"https://{ENDPOINT}/",
    headers={
        "Authorization": authorization,
        "Content-Type": "application/json",
        "Host": ENDPOINT,
        "X-TC-Action":    ACTION,
        "X-TC-Version":   VERSION,
        "X-TC-Timestamp": str(ts),
    },
    data=body,
    timeout=10,
)
print(resp.status_code, resp.json())

FAQ

질문답변
인터내셔널 도메인(vod.intl)으로 호출하면?정상 동작합니다. vod.tencentcloudapi.comvod.intl.tencentcloudapi.com 모두 동일하게 사용 가능합니다. (과거 InvalidAction 제약은 해소됨)
Python SDK로 호출 가능한가?SDK 3.1.111 기준 미반영. raw signed POST만 가능.
설정한 한도와 다르게 더 많이 통과되는데?비동기 집계 over-shoot으로 +38% 관측. 안전 마진 60~70%로 설정.
월/일 단위 자동 리셋 가능한가?지원되지 않음. disable → enable 토글로만 누적값 0 초기화.
QuotaLimit 단위는?호출 횟수 기반으로 동작합니다.

5. Request 작성 가이드

Text Generation은 OpenAI Chat Completions, OpenAI Responses, Anthropic Messages 3가지 프로토콜을 지원합니다.

5.1 Request Headers

HeaderRequiredDescription
Content-TypeYesapplication/json
AuthorizationYes (x-api-key 미사용 시)Bearer ${TOKEN}
x-api-keyYes (Authorization 미사용 시)${TOKEN} (Anthropic 방식)
X-Request-IdNo사용자 정의 Request ID
Tx-User-Session-IdNo동일 세션 매핑으로 캐시 히트율 향상

5.2 프로토콜 매트릭스

모델별 사용 가능한 프로토콜과 권장 endpoint입니다.

모델프로토콜Endpoint Path
GPTOpenAI Completions (gpt-5.4-pro, gpt-5.3-codex 제외)/v1/chat/completions
OpenAI Responses (공식 권장)/v1/responses
GeminiOpenAI Completions/v1/chat/completions
CD (Claude)Anthropic Messages (공식)/v1/messages
OpenAI Completions/v1/chat/completions
MiniMaxAnthropic Messages (공식 권장)/v1/messages
OpenAI Completions/v1/chat/completions
KimiOpenAI Completions/v1/chat/completions
GK (Grok)
GLM
DeepSeek

어떤 프로토콜을 골라야 하나?

유스케이스권장 프로토콜이유
여러 벤더 모델을 한 코드로 호출하고 싶다OpenAI Completions거의 모든 모델이 지원하는 공통분모
GPT-5 reasoning, multi-turn state 활용OpenAI ResponsesGPT 공식 권장 — previous_response_id로 멀티턴 상태 유지
Claude / MiniMax를 공식 SDK로 사용Anthropic Messages두 모델의 공식 권장 프로토콜
단일 cURL로 빠른 검증OpenAI Completions요청 body 가장 단순

5.3 지원 모델

모델 제공사모델명 (model value)지원 입력출력 형태
OpenAIgpt-5.5Text, ImageText
gpt-5.4-pro
gpt-5.4
gpt-5.4-nano
gpt-5.4-mini
gpt-5.3-codex
gpt-5.3-chat
gpt-5.2-chat
gpt-5.2
gpt-5.1
gpt-5.1-chat
gpt-5
gpt-5-mini
gpt-5-chat
gpt-5-nano
gpt-chat-latest
gpt-4.1
gpt-4o
Geminigemini-3.5-flashText, Code, Image, Audio, VideoText
gemini-3.1-pro-preview
gemini-3.1-flash-lite
gemini-3.1-flash-lite-preview
gemini-3-flash-preview
gemini-2.5-pro
gemini-2.5-flash
CD (Claude)cd-opus-4.8Text, ImageText
cd-opus-4.7
cd-opus-4.6
cd-opus-4.5
cd-sonnet-4.6
cd-sonnet-4.5
cd-haiku-4.5
GK (Grok)gk-4.3Text, ImageText
gk-4-20-reasoning
gk-4-20-non-reasoning
gk-4-1-fast-reasoning
gk-4.1-fast-non-reasoning
DeepSeekdeepseek-v4-proNEWTextText
deepseek-v4-flashNEW
DeepSeekdeepseek-v3.2TextText
GLMglm-5.1NEWTextText
glm-5 / glm-5-turbo
Kimikimi-k2.6NEWTextText
kimi-k2.5
MiniMaxminimax-m2.7TextText
minimax-m2.5
모델 목록 안내
위 표는 게이트웨이 GET /v1/models로 조회 가능한 호출 가능 모델을 정리한 것입니다. DeepSeek은 deepseek-v4-pro · deepseek-v4-flash 두 변종으로 제공되며, deepseek-v4(bare ID)로는 호출되지 않습니다. gpt-5.5-pro, hy3-preview는 현재 계정 리전에서 지원되지 않아 표에서 제외했습니다.

모델 스펙 · 호출 정책

💡
핵심 전제 — 게이트웨이 패스스루(passthrough) 구조

Text Generation은 OpenAI / Anthropic 호환 프로토콜을 그대로 전달(proxy)하는 게이트웨이입니다. 따라서 Context Window · Max Output · 입출력 모달리티 · reasoning 여부 등 모델 자체 스펙은 원본 제공사(OpenAI / Google / Anthropic / xAI 등)의 모델 스펙을 그대로 따릅니다. Tencent VOD 측은 이 값들을 별도로 재정의하거나 축소하지 않으며, /v1/models는 호출 가능한 model ID 목록만 반환할 뿐 스펙 메타데이터(context/caps)는 포함하지 않습니다.

B. 모델 스펙 (5~9번)

#항목기준 / 답변
5Context Window
(최대 입력 토큰)
원본 모델 스펙과 동일. 게이트웨이가 별도 캡을 두지 않습니다. 예: gpt-5.x·cd-opus-4.x·gemini-3.x 모두 각 제공사 공식 문서의 context window를 그대로 적용. 정확한 수치는 각 제공사 모델 카드 참조.
6Max Output
(최대 생성 토큰)
원본 모델 스펙과 동일. 요청 시 max_tokens로 상한 지정. 미지정 시 모델 기본 상한 적용.
7Type
(chat / reasoning)
요청 파라미터로 제어합니다. thinking_enabled=true 또는 reasoning_effort(none~xhigh)를 지원하는 모델이 reasoning(thinking) 계열입니다. 대표 reasoning 계열: gpt-5.x(reasoning), gk-4-20-reasoning·gk-4-1-fast-reasoning, gemini-*-pro thinking, cd-opus-*(extended thinking), deepseek-v3.2. 나머지(*-chat, *-nano/*-flash-lite 등)는 chat 위주.
8입력 지원
(Text/Image/Audio/Video/File)
위 5.3 표의 「지원 입력」 열로 확인. 요약: OpenAI·GK·CD = Text + Image, Gemini = Text + Image + Audio + Video + File(가장 넓음), MiniMax·Kimi·GLM·DeepSeek = Text. (멀티모달은 5.4 Part 객체image_url/input_audio/file_url 사용)
9출력/기능 지원
(Tools/Code 등)
Tools(Function Calling): 전 모델 지원(tools/tool_choice 파라미터, 단 Gemini는 function 도구만). Code: 텍스트 출력의 일부로 전 모델 가능(gpt-5.3-codex는 코드 특화). 이미지 생성 출력은 미지원 — 본 Text Generation은 텍스트 출력 전용이며, 이미지 생성은 Image Generation API를 사용하십시오. JSON 강제 출력은 response_format 지원.

C. 호출 정책 (10~12번)

#항목기준 / 답변
10Rate limit
(RPM/TPM)
기본값: 30 RPM · 30만 TPM이 계정/Token 단위로 적용됩니다(모델별 차등이 아니라 게이트웨이 공통 기본값). 모델별 개별 RPM/TPM 차등표는 공개 제공되지 않으며, 더 높은 한도가 필요하면 정식 접속 후 담당자에게 상향 신청하십시오. (호출량 자체의 누적 한도는 4. AIGC Quota 관리로 별도 제어)
11거부 파라미터
(temperature/top_p/top_k)
게이트웨이는 파라미터를 그대로 전달하므로, 거부 여부는 원본 모델 정책을 따릅니다. 특히 reasoning(thinking) 계열은 temperature·top_p·top_k를 무시하거나 거부하는 경우가 많습니다(예: OpenAI reasoning 계열은 temperature 고정, 일부는 1 이외 값 거부). reasoning 호출 시에는 reasoning_effort로 제어하고 샘플링 파라미터는 생략하는 것을 권장합니다. top_k는 OpenAI 프로토콜 표준 파라미터가 아니므로 Anthropic/Gemini 경로에서만 유효합니다.
12별칭 ↔ 원본
스펙 대응
모델 ID는 단순 별칭(alias)일 뿐, 별도 캡 축소 없이 원본 모델 스펙을 그대로 사용합니다.cd-opus-4.8 = Claude Opus 4.8과 동일한 context·output·기능 캡입니다(Tencent가 별도 캡을 두지 않음). 접두사 규칙: 아래 표 참조.

※ 12번 질문(별칭 대응) 명확화 — 모델 ID 접두사는 원본 제공사를 가리키는 별칭 규칙이며, 스펙은 원본과 동일합니다:

접두사원본 제공사예시 (게이트웨이 ID → 원본 모델)
gpt-OpenAIgpt-5.5 → GPT-5.5 (스펙 동일)
gemini-Googlegemini-3.5-flash → Gemini 3.5 Flash
cd-Anthropic (Claude)cd-opus-4.8 → Claude Opus 4.8
gk-xAI (Grok)gk-4.3 → Grok 4.3
deepseek-DeepSeekdeepseek-v4-pro → DeepSeek V4 Pro
glm-Zhipuglm-5.1 → GLM-5.1
kimi-Moonshotkimi-k2.6 → Kimi K2.6
minimax-MiniMaxminimax-m2.7 → MiniMax M2.7
📌
스펙 정밀 수치가 필요할 때
Context Window·Max Output의 정확한 토큰 수, 모델별 RPM/TPM 차등표는 공개 문서로 일괄 제공되지 않습니다. (1) 모델 자체 스펙은 각 원본 제공사 공식 모델 카드를 기준으로 하고, (2) 게이트웨이 차원의 한도(기본 30 RPM·30만 TPM 상향 등)는 담당자에게 문의해 계정별로 확인하십시오.

5.4 Request Parameters (OpenAI Completions)

💡
Tip
Anthropic, Responses 프로토콜 파라미터는 각 공식 문서를 참조하십시오.
ParameterTypeDescription
modelrequiredStringAI 모델 지정 (예: gpt-5.1, cd-sonnet-4.6)
messagesrequiredArray대화 메시지 목록. 각 메시지는 rolecontent를 포함
streamrequiredBoolean스트리밍 여부. true: SSE 스트리밍 응답
thinking_enabledoptionalBoolean추론(CoT) 모드 활성화. 지원 모델에서만 사용 가능
reasoning_effortoptionalString추론 강도. 값: none / minimal / low / medium / high / xhigh. thinking_enabled와 동시 설정 시 reasoning_effort 우선 적용
temperatureoptionalFloat출력 무작위성 (0~2, 기본 0.7)
max_tokensoptionalInteger최대 생성 토큰 수
toolsoptionalArray of ChatCompletionTool도구 목록 (Function Calling). OpenAI 공식 문서 참조
tool_choiceoptionalChatCompletionToolChoiceOption도구 선택 방식 ("auto" / "none" / "required" / 특정 도구 지정)
response_formatoptionalObject출력 형식 지정 (예: {"type": "json_object"})

messages 배열 내 객체 구조

FieldTypeDescription
roleStringsystem: 시스템 지시 | user: 사용자 | assistant: AI 응답 | tool: 도구 결과
contentString | Array of PartString일 때: 텍스트 메시지. Array일 때: Part 객체 배열 (멀티모달). role이 tool일 때: 도구 출력 결과
tool_callsArrayrole이 assistant일 때: 모델이 요청하는 도구 호출 목록 (OpenAI 프로토콜 참조). Gemini는 function 도구만 지원
tool_call_idStringrole이 tool일 때: 응답 중 tool_calls에 포함된 도구 호출 ID
extra_contentExtraContentGemini 모델: role이 assistant일 때 추론 서명(thought_signature) 포함 가능

Part 객체 구조

FieldTypeDescription
typeStringtext: 텍스트 | image_url: 이미지 URL | input_audio: 오디오 | file: 파일/비디오
textStringtype이 text일 때 필수. 메시지 텍스트 내용
image_urlStringtype이 image_url일 때 필수. 이미지 URL (data URL scheme 지원, 70MB 이내)
input_audioObjecttype이 input_audio일 때 필수
└ dataString오디오 데이터 Base64 인코딩
└ formatString오디오 포맷 (mp3 / wav)
file_nameString파일/비디오 이름
file_urlStringtype이 file일 때 필수. 파일/비디오 URL (70MB 이내)
extra_contentExtraContentGemini 모델: 파일 분석 시 media_resolution, fps 제어 가능

ExtraContent 구조 (Gemini 전용)

FieldTypeDescription
googleObjectGemini 모델 전용 설정
└ fpsFloat비디오 프레임레이트 지정 (Gemini 비디오 분석 시)
└ media_resolutionString입력 미디어 처리 해상도 제어
└ thought_signatureString모델 출력: 추론 서명 (응답 시 자동 포함)

6. 호출 예시

각 프로토콜 묶음 내부 순서는 cURL → SDK 순으로 통일했습니다.

6.1 OpenAI Completions

URL: https://text-aigc.vod-qcloud.com/v1/chat/completions

POST/v1/chat/completions

cURL 예시

Bash cURL
curl -X POST https://text-aigc.vod-qcloud.com/v1/chat/completions \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer ${API_TOKEN}" \
  -d '{
    "model": "gpt-5.1",
    "stream": true,
    "stream_options": {"include_usage": true},
    "messages": [
      {"role": "user", "content": "who are you?"}
    ]
  }'

OpenAI SDK 예시

Python OpenAI SDK
from openai import OpenAI

client = OpenAI(
    api_key="YOUR_API_KEY",
    base_url="https://text-aigc.vod-qcloud.com/v1"
)

response = client.chat.completions.create(
    model="gpt-5.1",
    messages=[
        {"role": "system", "content": "You are a helpful assistant."},
        {"role": "user", "content": "Hi, how are you?"},
    ],
)
print(response.choices[0].message.content)

6.2 Anthropic Messages

URL: https://text-aigc.vod-qcloud.com/v1/messages

POST/v1/messages

지원 모델: CD 시리즈, MiniMax (MiniMax 공식 권장)

cURL 예시

Bash cURL
curl https://text-aigc.vod-qcloud.com/v1/messages \
  -H "Content-Type: application/json" \
  -H "x-api-key: $YOUR_API_KEY" \
  -d '{
    "max_tokens": 1024,
    "messages": [{"content": "Hello, world", "role": "user"}],
    "model": "cd-sonnet-4.6"
  }'

Anthropic SDK 예시

Python Anthropic SDK
import anthropic

client = anthropic.Anthropic(
    api_key="$YOUR_API_KEY",
    base_url="https://text-aigc.vod-qcloud.com/"
)

message = client.messages.create(
    model="cd-sonnet-4.6",
    max_tokens=1000,
    system="You are a helpful assistant.",
    messages=[
        {"role": "user", "content": [{"type": "text", "text": "Hi, how are you?"}]}
    ]
)
for block in message.content:
    if block.type == "thinking":
        print(f"Thinking: {block.thinking}")
    elif block.type == "text":
        print(f"Text: {block.text}")

6.3 Responses API

URL: https://text-aigc.vod-qcloud.com/v1/responses

POST/v1/responses

지원 모델: GPT 시리즈

cURL 예시

Bash cURL
curl https://text-aigc.vod-qcloud.com/v1/responses \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer $YOUR_API_KEY" \
  -d '{
    "model": "gpt-5.1",
    "instructions": "You are a helpful assistant.",
    "input": "Hello!",
    "stream": true
  }'

OpenAI SDK 예시

Python OpenAI SDK (Responses)
from openai import OpenAI

client = OpenAI(
    api_key="YOUR_API_KEY",
    base_url="https://text-aigc.vod-qcloud.com/v1"
)

response = client.responses.create(
    model="gpt-5.1",
    input=[
        {
            "role": "user",
            "content": [
                {"type": "input_text", "text": "Hello, how are you?"}
            ]
        }
    ],
    stream=True
)
for event in response:
    print(event)

7. Response 처리

7.1 Response Parameters

ParameterTypeDescription
idString응답 고유 ID
objectString객체 유형 (예: chat.completion)
createdInteger생성 타임스탬프 (Unix)
modelString사용된 모델명
choices[].indexInteger선택지 인덱스
choices[].message.roleString응답 역할 (assistant)
choices[].message.contentString응답 내용
choices[].message.reasoning_contentString추론 과정 (thinking 모드 시)
choices[].finish_reasonString종료 이유 (stop, length, tool_calls)
usage.prompt_tokensInteger입력 토큰 수
usage.completion_tokensInteger출력 토큰 수
usage.total_tokensInteger총 토큰 수
usage.prompt_tokens_details.cached_tokensInteger캐시된 입력 토큰 수 (캐시 hit 시)
usage.completion_tokens_detailsObject출력 토큰 상세 내역
usage.completion_tokens_details.reasoning_tokensInteger추론 토큰 수 (completion_tokens에 포함됨, 별도 가산 아님)
JSON Response Example
200
Token 검산 공식
total_tokens = prompt_tokens + completion_tokens
reasoning_tokens ⊆ completion_tokens (reasoning은 completion 안에 포함, 별도 가산 없음)
일반 모델(gpt-5-mini 등)도 자동 reasoning이 발생할 수 있음 — reasoning_tokens > 0이 reasoning 전용 모델만의 특성은 아닙니다.
취소(abort) 정책
별도 abort/cancel API는 제공되지 않습니다. 진행 중 요청 취소는 HTTP connection close로만 가능하며, 서버 측 inference 즉시 중단은 보장되지 않습니다. 정산은 DescribeAigcUsageData API 일자별 집계를 단일 진실 소스로 사용하십시오.
reasoning_content 노출 차이
deepseek-v3.2choices[0].message.reasoning_content 본문이 노출됩니다. 다른 reasoning 모델(gpt-5.5, gk-4-1-fast-reasoning)은 hidden chain-of-thought로 token 카운트만 반환됩니다.
Tx-User-Session-Id 캐시 확인
캐시 hit 시 usage.prompt_tokens_details.cached_tokens에 캐시된 토큰 수가 반환됩니다.

7.2 Error Codes

HTTP CodeDescription
200성공
400요청 파라미터 오류
401인증 실패
403권한 부족 또는 서비스 정지
404모델/엔드포인트 없음
429Rate Limit 또는 Quota 초과 (insufficient_quota) — 자세한 동작은 4.5 한도 초과 시 LLM 응답 참조
5xx서버/업스트림 오류
Note
모든 에러 응답에 request_id 필드가 포함됩니다. 모든 요청은 X-Request-Id 헤더를 반환합니다.

7.3 사용량 조회 — DescribeAigcUsageData

POSTvod.intl.tencentcloudapi.com

AIGC 사용량 통계를 조회합니다. 기간별 모델/프로토콜별 토큰 사용량 및 호출 횟수를 확인할 수 있습니다.

📎 공식 API 문서: DescribeAigcUsageData

Request Parameters

ParameterTypeDescription
SubAppIdrequiredIntegerVOD 애플리케이션 ID
StartTimerequiredString조회 시작 시간 (ISO 8601, 예: 2026-06-01T00:00:00+08:00)
EndTimerequiredString조회 종료 시간 (ISO 8601)

Response Parameters

ParameterTypeDescription
UsageDataSetArray of Object사용량 데이터 목록
UsageDataSet[].TimeString통계 시점
UsageDataSet[].InputTokensInteger입력 토큰 수
UsageDataSet[].OutputTokensInteger출력 토큰 수
RequestIdString요청 고유 ID
Python SDK Example
from tencentcloud.common import credential
from tencentcloud.vod.v20180717 import vod_client, models

cred = credential.Credential("YOUR_SECRET_ID", "YOUR_SECRET_KEY")
client = vod_client.VodClient(cred, "")

req = models.DescribeAigcUsageDataRequest()
req.SubAppId = 1500033704
req.StartTime = "2026-06-01T00:00:00+09:00"
req.EndTime = "2026-06-07T00:00:00+09:00"

resp = client.DescribeAigcUsageData(req)
for item in resp.UsageDataSet:
    print(f"{item.Time} | In: {item.InputTokens} | Out: {item.OutputTokens}")
JSON Response
200

8. 과금 안내

💰
Pricing
Text Generation 상세 과금 정책은 담당자에게 문의해 주십시오.

9. 실천 튜토리얼

9.1 Claude Code 연동

VOD의 Claude 모델을 Anthropic Claude Code CLI에서 사용하는 방법입니다.

사전 준비

1. VOD 서비스 개통 완료
2. CreateAigcApiToken으로 API Token 발급 완료
3. 사용 가능 모델: CD 시리즈 (cd-opus-4.8, cd-opus-4.7, cd-sonnet-4.6, cd-opus-4.5)

설치

Bash Install
npm install -g @anthropic-ai/claude-code
claude --version
Claude Code 버전 확인

설정: settings.json

경로: ~/.claude/settings.json (파일/폴더 없으면 생성)

JSON ~/.claude/settings.json
{
  "env": {
    "ANTHROPIC_AUTH_TOKEN": "YOUR_API_TOKEN",
    "ANTHROPIC_BASE_URL": "https://text-aigc.vod-qcloud.com",
    "ANTHROPIC_MODEL": "cd-sonnet-4.6"
  },
  "model": "cd-sonnet-4.6"
}
💡
Tip
ANTHROPIC_BASE_URL에 /v1을 붙이지 않습니다. 모델 변경 시 ANTHROPIC_MODELmodel 값을 동시에 수정 후 재시작하십시오.

Onboarding 스킵

경로: ~/.claude/.claude.json

JSON ~/.claude/.claude.json
{
  "hasCompletedOnboarding": true
}

실행 및 확인

Bash Launch
claude
# "Yes, I trust this folder" 선택
# /model 입력하여 현재 모델 확인
Claude Code 실행 화면 Claude Code /model 확인 Claude Code 정상 동작

주의사항

Limitations
• Token 생성 후 약 1분간 동기화 필요 (401 발생 시 대기)
• 기본 Rate Limit: RPM 10, TPM 10만. 고빈도 사용 시 SubAppId와 함께 조정 요청
• VOD AIGC 기본 콘텐츠 컴플라이언스 검수가 활성화되어 있으며, 민감어 감지 시 400 에러 반환

9.2 Codex 설정

OpenAI Codex CLI에서 VOD 모델을 사용하는 설정 방법입니다.

config.toml 설정

경로:

• Linux/macOS: ~/.codex/config.toml
• Windows: C:\Users\{username}\.codex\config.toml

TOML ~/.codex/config.toml
model = "gpt-5.4-mini"
model_provider = "vod"

[model_providers.vod]
name = "vod"
base_url = "https://text-aigc.vod-qcloud.com/v1"
wire_api = "responses"
requires_openai_auth = true
supports_websockets = false
Codex config.toml 예시

auth.json 설정

경로:

• Linux/macOS: ~/.codex/auth.json
• Windows: C:\Users\{username}\.codex\auth.json

JSON ~/.codex/auth.json
{
  "OPENAI_API_KEY": "YOUR_VOD_API_TOKEN"
}
💡
Tip
auth.json에는 OPENAI_API_KEY 필드만 남기고 불필요한 필드는 삭제하십시오. 설정 저장 후 Codex를 재시작하면 적용됩니다.

10. 용량 조회

전체 Text Generation 사용량은 API 또는 콘솔 화면에서 조회 가능합니다.

10.1 API 조회

📎 DescribeAigcUsageData — 기간별 토큰 사용량 및 호출 횟수를 조회합니다.

10.2 콘솔 전체 조회

콘솔 → VOD → 데이터센터 → 용량 통계 → AIGC 탭에서 AI Text Generation 필터를 선택하여 전체 사용량을 확인합니다.

VOD 용량 통계 — AI Text Generation 전체 사용량

10.3 SubAppId별 조회

콘솔 → VOD → 애플리케이션 관리 → 해당 앱 진입 → 데이터센터 → 용량 통계 → AIGC 탭에서 개별 SubAppId 사용량을 확인합니다.

VOD 용량 통계 — SubAppId별 사용량

10.4 실시간 통계 API (Query Statistics)

모델별 · API Key별 호출 통계(요청 수, 에러율, 토큰, 캐시 적중률, 첫 토큰 지연)를 분 단위까지 세밀하게 조회하는 셀프서비스 API입니다. DescribeAigcUsageData(10.1)가 토큰 사용량 중심의 집계라면, 이 API는 성능·품질 모니터링(에러율 · TTFT · 캐시 효율)에 적합합니다.

GET/v1/statistics
항목
Base URLhttps://text-aigc.vod-qcloud.com
MethodGET
Path/v1/statistics
AuthAuthorization: Bearer <api-key> 또는 x-api-key: <api-key>
Content-Typeapplication/json
Rate Limitowner_app_id당 기본 2 req/s
🔐
쿼리 권한 (테넌트 격리)
API Key에서 파싱한 OwnerAppid가 Query의 owner_app_id반드시 일치해야 합니다. 불일치 시 403 permission_denied를 반환하여 테넌트 간 무단 조회를 차단합니다.

Query 파라미터

파라미터타입기본값설명
owner_app_idrequireduint64-테넌트 APPID. token이 귀속된 OwnerAppid와 일치해야 함
granularityrequiredString-시간 단위. 1m / 5m / 1h 중 택1
start_timerequiredString-시작 시각(RFC3339, 닫힌구간). 예: 2026-05-26T10:00:00Z
end_timerequiredString-종료 시각(RFC3339, 닫힌구간)
api_keyoptionalString-지정 API Key로 필터링
modeloptionalString-지정 모델명으로 필터링
merge_api_keyoptionalBoolfalsetrue(owner_app_id, model, timestamp) 기준으로 모든 API Key를 한 행으로 집계. 테넌트 총괄 뷰에 적합
pageoptionalInt1페이지 번호(1부터). 잘못된 값은 1로 보정
page_sizeoptionalInt100페이지 크기. 최대 1000(초과 시 1000으로 절삭)

데이터 보존 기간 (TTL)

GranularityCollectionTTL
1mcoll1m31일
5mcoll5m31일
1hcoll1h90일

응답 구조

Top Level — datatimestamp 내림차순으로 정렬됩니다.

JSON Response
{
  "total": 1234,
  "page": 1,
  "page_size": 100,
  "data": [ /* StatQueryRecord[] */ ]
}
필드타입설명
totalint64조건을 만족하는 레코드 총 개수(merge_api_key=true면 집계 후 그룹 수)
pageint현재 페이지 번호
page_sizeint페이지 크기
dataarray레코드 배열(StatQueryRecord), timestamp 내림차순

StatQueryRecord

필드타입설명
timestampString시간 윈도우 시작점(RFC3339)
modelString모델명
owner_app_iduint64테넌트 APPID
api_keyStringAPI Key. merge_api_key=true면 빈 문자열
total_requestsint64총 요청 수
error_requestsint64에러 요청 수(4XX + 5XX)
error_ratefloat64에러율(%) = error_requests / total_requests × 100
cache_input_tokensint64캐시 적중 입력 토큰 수
cache_hit_ratefloat64캐시 적중률(%) = cache_input_tokens / input_tokens × 100
total_tokensint64총 토큰 수
input_tokensint64입력 토큰 수
output_tokensint64출력 토큰 수
first_token_countint64첫 토큰 지연 샘플 수(실제로 첫 토큰을 생성한 요청만 집계)
first_token_avg_msfloat64첫 토큰 지연 평균(ms, TTFT)

에러 응답

에러는 공통 JSON 포맷으로 반환됩니다.

JSON Error
{
  "error": {
    "message": "...",
    "type": "invalid_request_error"
  },
  "request_id": "..."
}
HTTPtype발생 조건
400invalid_request_errorowner_app_id 누락/비정상, granularity 누락/비정상, start_time/end_time 누락 또는 포맷 오류
401invalid_request_errorAuthorization 헤더 누락 또는 비어있음
403permission_deniedtoken의 OwnerAppid와 owner_app_id 불일치
405invalid_request_errorGET 이외의 메서드
429rate_limit_exceeded단일 owner_app_id 한도 초과(기본 2 req/s)
500server_errorDB 쿼리/디코딩 실패
503server_error통계 서비스 미초기화(statCollector == nil)

요청 예시

① 특정 APPID · 특정 모델의 최근 1시간 분 단위 데이터

Bash 1m · model filter
curl -G 'https://text-aigc.vod-qcloud.com/v1/statistics' \
  -H 'Authorization: Bearer sk-xxxxxxxx' \
  --data-urlencode 'owner_app_id=1234567890' \
  --data-urlencode 'granularity=1m' \
  --data-urlencode 'model=gpt-5.1' \
  --data-urlencode 'start_time=2026-06-09T17:00:00+08:00' \
  --data-urlencode 'end_time=2026-06-09T18:00:00+08:00' \
  --data-urlencode 'page=1' \
  --data-urlencode 'page_size=100'

② 특정 APPID 전체를 테넌트 단위로 API Key 합산한 시간 단위 데이터

Bash 1h · merge_api_key
curl -G 'https://text-aigc.vod-qcloud.com/v1/statistics' \
  -H 'Authorization: Bearer sk-xxxxxxxx' \
  --data-urlencode 'owner_app_id=1234567890' \
  --data-urlencode 'granularity=1h' \
  --data-urlencode 'start_time=2026-06-01T00:00:00Z' \
  --data-urlencode 'end_time=2026-06-09T00:00:00Z' \
  --data-urlencode 'merge_api_key=true'

③ 특정 API Key로 필터링(x-api-key 헤더 사용)

Bash 5m · api_key filter
curl -G 'https://text-aigc.vod-qcloud.com/v1/statistics' \
  -H 'x-api-key: sk-xxxxxxxx' \
  --data-urlencode 'owner_app_id=1234567890' \
  --data-urlencode 'api_key=sk-aaa' \
  --data-urlencode 'granularity=5m' \
  --data-urlencode 'start_time=2026-06-09T00:00:00Z' \
  --data-urlencode 'end_time=2026-06-09T12:00:00Z'

응답 예시

JSON 200 OK
{
  "total": 2,
  "page": 1,
  "page_size": 100,
  "data": [
    {
      "timestamp": "2026-06-09T17:59:00+08:00",
      "model": "gpt-5.1",
      "owner_app_id": 1234567890,
      "api_key": "sk-aaa",
      "total_requests": 120,
      "error_requests": 3,
      "error_rate": 2.5,
      "cache_input_tokens": 5400,
      "cache_hit_rate": 30.0,
      "total_tokens": 36000,
      "input_tokens": 18000,
      "output_tokens": 18000,
      "first_token_count": 117,
      "first_token_avg_ms": 432.5
    },
    {
      "timestamp": "2026-06-09T17:58:00+08:00",
      "model": "gpt-5.1",
      "owner_app_id": 1234567890,
      "api_key": "sk-aaa",
      "total_requests": 105,
      "error_requests": 0,
      "error_rate": 0,
      "cache_input_tokens": 4200,
      "cache_hit_rate": 28.0,
      "total_tokens": 31500,
      "input_tokens": 15000,
      "output_tokens": 16500,
      "first_token_count": 105,
      "first_token_avg_ms": 410.2
    }
  ]
}
📌
동작 세부 사항
시간 구간: start_time / end_time은 닫힌구간($gte / $lte)입니다.
정렬·페이징: 기본 timestamp 내림차순. skip = (page-1) × page_size.
첫 토큰 지연 샘플: first_token_count는 실제로 첫 토큰을 생성한 요청만 누적합니다. 첫 토큰 전에 실패한 순수 에러는 분모에서 제외되므로, first_token_avg_ms는 첫 토큰 출력에 성공한 요청의 평균 지연을 의미합니다.
cache_hit_rate는 클램핑 없이 공식대로 계산되므로, 캐시 입력 토큰이 입력 토큰보다 많은 윈도우에서는 100%를 초과할 수 있습니다.

11. Q&A

분류질문답변
API 호출tools (Function Calling) 지원 여부지원합니다. Request Parameters의 tools/tool_choice 파라미터를 참조하십시오.
API 호출목록에 없는 모델 사용 가능 여부담당자에게 문의하여 지원 가능 여부를 평가받으세요.
API 호출system instruction 없이 호출 가능한지가능합니다. instruction 생략 시 messages의 system role로 설정하십시오.
API 호출기본 동시 호출 한도기본 RPM 30, TPM 30만. 정식 접속 후 조정 신청 가능합니다.
Quota한도 초과 시 어떤 응답이 오나?HTTP 429 + {"error":{"type":"insufficient_quota","message":"Text quota exceeded."}}4.5 참조.
법무AI 호출 관련 컴플라이언스미디어 처리 AI 관련 기능의 특별 약정을 참조하십시오.
This page is intended for developer reference and is not an official Tencent webpage.

1. Image Generation Overview

범용 이미지 생성 Task를 생성합니다. 텍스트 프롬프트 또는 참조 이미지를 기반으로 이미지를 생성하고 TaskId를 반환합니다.

TaskId를 받은 뒤 결과 조회 API 또는 콜백으로 생성 완료 상태와 결과 URL을 회수합니다.

1.1 API 정보

POSTvod.intl.tencentcloudapi.com
항목
Endpointvod.intl.tencentcloudapi.com
MethodPOST
X-TC-ActionCreateAigcImageTask
X-TC-Version2018-07-17
X-TC-Regionap-seoul

1.2 지원 모델

모델명설명버전
GEMNano Banana — 고품질 범용 이미지 생성2.5 3.0 3.1
OG1K/2K/4K 해상도 이미지 생성image2_low image2_medium image2_high
QwenQwen 이미지 생성0925
Seedream고해상도 AI 아트 생성4.5 5.0-lite
Kling이미지 생성 + Outpainting (이미지 확장)2.1 3.0 3.0-Omni scene
Vidu고품질 이미지 생성q2
JimengJimeng 이미지 생성 엔진4.0
MJ (Midjourney)고품질 아트 이미지, 참조 이미지 + Prompt 기반v7
GPT-Image2OpenAI 이미지 생성/편집, 다중 출력, 마스크, 투명 레이어gpt-image-2

1.3 Supported Model Options

모델별 지원 해상도 · 종횡비(AspectRatio) · 최대 참조 이미지 수와, 해상도/종횡비를 지정하는 방식을 정리한 표입니다. 종횡비 지정 경로는 모델마다 다릅니다 — OutputConfig.AspectRatio(GEM · Kling · Vidu · OG), prompt 내 기술(Seedream · MJ), ExtInfo로 픽셀 직접 주입(Jimeng width/height · Hunyuan size · Qwen 자유).

size 지정 가능 모델
{"size":"2048x2048"} 같은 픽셀 직접 지정은 모든 모델이 받지 않습니다. size(또는 width/height)를 받는 모델은 Jimeng · Hunyuan · Qwen 뿐입니다. Hunyuan은 면적 상한(width×height ≤ 1024×1024)이 있어 2048×2048은 거부되고, Qwen은 2048×2048까지 허용됩니다. 그 외 모델은 AspectRatio + Resolution(1K/2K/4K)으로 크기를 지정합니다.
ModelNameVersionResolutionAspect ratio controlMax ref imagesNotes
GEM (GG)2.5 / 3.0 / 3.11K / 2K / 4K (default 1K); 3.1 adds 512AspectRatio: 1:1, 2:3, 3:2, 3:4, 4:3, 4:5, 5:4, 9:16, 16:9, 21:9 (3.1 also 1:4, 1:8, 4:1, 8:1)3 (2.5) / 14 (3.0, 3.1)Nano Banana. AspectRatio set via OutputConfig.
Kling2.1 / 3.0 / 3.0-Omni / O11K / 2K (2.1, 3.0); 1K / 2K / 4K (3.0-Omni, O1), default 1KAspectRatio: 16:9, 9:16, 1:1, 4:3, 3:4, 3:2, 2:3, 21:9 (3.0-Omni, O1 add auto)4 (2.1) / 1 (3.0) / 10 (3.0-Omni, O1)3.0-Omni / O1 support subject reference.
Seedream (SI)4.0 / 4.5 / 5.0-lite1K / 2K / 4K (4.0, default 1K); 2K / 4K (4.5, default 2K); 2K / 3K / 4K (5.0-lite, default 2K)Set in prompt: 16:9, 9:16, 1:1, 4:3, 3:4, 3:2, 2:3, 21:9144.0 multi-output: state image count in prompt + ExtInfo {"sequential_image_generation":"auto"}.
Jimeng4.0Set via ExtInfo, range 1024×1024 – 4096×4096Driven by width / height in ExtInfo10Pixel size injected: ExtInfo {"width":1920,"height":1080}.
Viduq21080p / 2K / 4K (default 1080p)AspectRatio: 16:9, 9:16, 1:1, 3:4, 4:3, 21:9, 2:3, 3:27
Hunyuan3.0Set via ExtInfo; each side 512–2048px and width×height ≤ 1024×1024 (default 1024×1024)Driven by size in ExtInfo3Pixel size injected: ExtInfo {"size":"728x1024"}. 360° panorama via SceneType=3d_panorama.
Qwen0925Free width/height; total pixels 512×512 – 2048×2048 (default 1024×1024)Free (within pixel range)1
MJ (Midjourney)v7Set in promptSet in prompt3Native MJ syntax (--ar, --s, etc.). See §6.2.
OGimage2_low / image2_medium / image2_high1K / 2K / 4K (default 1K)AspectRatio: 1:1, 3:2, 2:3, 3:4, 4:3, 16:9, 9:16, 21:9, 9:2116Multi-output via OutputImageCount, up to 8 images.

1.4 Architecture

Architecture Diagram
AIGC Architecture

2. Quickstart

텍스트 프롬프트 한 줄로 첫 이미지 Task를 생성하는 최단 경로입니다. 아래 3 step을 따라 TaskId를 받고, 결과 조회 API로 결과 URL을 회수합니다.

2.1 Step 1 — Endpoint & 인증 헤더

Tencent Cloud Common API Endpoint와 SecretId/SecretKey 기반 TC3-HMAC-SHA256 서명을 사용합니다. 서명 생성 흐름과 raw signed POST 코드는 §4.7 Python raw signed POST 예제를 참고하십시오.

항목
Endpointhttps://vod.intl.tencentcloudapi.com
X-TC-ActionCreateAigcImageTask
X-TC-Version2018-07-17
X-TC-Regionap-seoul
AuthorizationTC3-HMAC-SHA256 Credential=$YOUR_SECRET_ID/...

2.2 Step 2 — 요청 보내기

아래 cURL 1개를 그대로 실행하면 GEM 3.1 엔진에 prompt-only 요청이 전송되어 TaskId가 반환됩니다.

$YOUR_SECRET_ID, $YOUR_SECRET_KEY, $SUBAPP_ID는 본인 값으로 치환합니다. 전체 인증 헤더(Authorization) 생성은 §4.7 Python raw signed POST 예제를 그대로 사용할 수 있습니다.

200 응답으로 Response.TaskId가 돌아오면 정상입니다. Body 파라미터의 의미는 §3. Request 작성을, 엔진별 차이는 §5. 엔진별 호출 예시를 참조합니다.

Bash Quickstart cURL
curl -X POST https://vod.intl.tencentcloudapi.com \
  -H "Content-Type: application/json; charset=utf-8" \
  -H "X-TC-Action: CreateAigcImageTask" \
  -H "X-TC-Version: 2018-07-17" \
  -H "X-TC-Region: ap-seoul" \
  -H "Authorization: TC3-HMAC-SHA256 Credential=$YOUR_SECRET_ID/..." \
  -d '{
    "SubAppId": $SUBAPP_ID,
    "ModelName": "GEM",
    "ModelVersion": "3.1",
    "Prompt": "A clean product-style capybara mascot image, studio lighting"
  }'

2.3 Step 3 — TaskId로 결과 조회

DescribeAigcImageTask를 동일한 인증 헤더로 호출하여 결과 상태와 이미지 URL을 회수합니다. 상세 파라미터는 MPS Integration §4. DescribeAigcImageTask 참조.


3. Request 작성

3.1 Input Parameters

ParameterTypeDescription
SubAppIdrequiredIntegerApplication 식별자
ModelNamerequiredString이미지 생성 엔진 이름
ModelVersionrequiredString엔진 버전
PromptconditionalString생성 프롬프트. 참조 이미지가 없으면 필수
NegativePromptoptionalString원하지 않는 요소 지정
FileInfos.NoptionalArray참조 이미지 URL 또는 FileId
EnhancePromptoptionalStringEnabled / Disabled
OutputConfigoptionalObjectStorageMode, AspectRatio, Resolution 등 — 상세는 §3.2 참조
InputRegionoptionalString입력 파일 URL의 리전. 해외: Oversea
SceneTypeoptionalString모델별 Scene 타입
SeedoptionalInteger결과 재현용 seed
SessionIdoptionalString3일간 중복 요청 방지용 ID
SessionContextoptionalString콜백 시 함께 전달되는 context 값
TasksPriorityoptionalInteger-10~10 우선순위
ExtInfooptionalString모델별 확장 파라미터 전달용 JSON 문자열. 최상위 키 AdditionalParameters 안에 모델 고유 옵션(아웃페인팅 확장 비율 등)을 담습니다 — 상세는 §3.3

3.2 OutputConfig 필드

FieldTypeDescription
StorageModeStringTemporary / Permanent
AspectRatioString1:1, 16:9, 9:16, 4:3, 3:4 등 (모델별 상이)
ResolutionString해상도 — 모델별 상이. GPT-Image2는 "WxH" 또는 "auto" 지정 가능
ImageCountInteger한 요청으로 생성할 이미지 수 (GPT-Image2: 최대 4장)
BackgroundString배경 처리. transparent 등 (GPT-Image2)
OutputFormatString출력 파일 형식 (png / jpg 등)
InputComplianceCheckString입력 콘텐츠 검수 (Enabled / Disabled) — 일부 모델 필수
OutputComplianceCheckString출력 콘텐츠 검수 (Enabled / Disabled) — 일부 모델 필수

3.3 ExtInfo / AdditionalParameters (모델 확장)

표준 파라미터로 표현할 수 없는 모델 고유 옵션ExtInfo 문자열로 전달합니다. 구조는 항상 2중 JSON 인코딩입니다 — 바깥 JSON의 AdditionalParameters 키 값이 다시 JSON 문자열입니다.

2중 인코딩 구조
ExtInfo = {"AdditionalParameters": "<json-string>"} 이며, 그 값이 다시 모델 파라미터 JSON을 문자열로 인코딩한 것입니다. 즉 모델 파라미터를 두 번 JSON 문자열화해야 합니다.
"ExtInfo": "{\"AdditionalParameters\":\"{\\\"down_expansion_ratio\\\":0.2,\\\"up_expansion_ratio\\\":0.1}\"}"

이미지 생성 모델별 AdditionalParameters

모델 / SceneType파라미터설명
Kling 아웃페인팅
SceneType=image_expand
ModelVersion=scene
down_expansion_ratio
up_expansion_ratio
left_expansion_ratio
right_expansion_ratio
각 방향으로 캔버스를 확장(outpainting)하는 비율(0~1). 4방향 독립 지정. OutputImageCount로 생성 장수 지정 가능
Hunyuan 파노라마
SceneType=3d_panorama
360° 파노라마(전방위) 이미지 생성. Hunyuan 모델 전용 SceneType
시드 고정 (전 모델 공통)Seed난수 시드 지정 시 동일 입력에 대해 결과 재현 가능. 미지정 시 매번 랜덤
기타 이미지 생성 모델대부분은 표준 파라미터(Prompt/FileInfos/OutputConfig)만으로 충분. 신규 옵션은 출시 시 본 표에 추가

4. Output & 결과 조회

CreateAigcImageTask비동기 API입니다. 호출 즉시 TaskId만 반환하고, 실제 이미지는 백그라운드에서 생성됩니다. 따라서 TaskIdDescribeTaskDetail을 폴링하여 완료 여부와 결과 URL을 회수하는 2단계 흐름이 필요합니다.

4.1 CreateAigcImageTask 응답

ParameterTypeDescription
TaskIdString결과 조회용 Task ID. 이후 DescribeTaskDetail에 그대로 전달합니다.
RequestIdString요청 추적용 ID. 문제 발생 시 기술지원 문의에 사용합니다.

4.2 작업 상태 (Lifecycle)

작업은 다음 상태를 순차적으로 거칩니다. FINISH 또는 FAIL이 종료 상태입니다.

WAIT RUNNING FINISH 또는 FAIL
상태설명권장 동작
WAIT큐에서 대기 중2~3초 간격으로 폴링 지속
RUNNING이미지 생성 처리 중폴링 지속
FINISH완료 — 결과 URL 회수 가능Output.ImageInfoSet에서 URL 추출
FAIL실패Message 확인 후 파라미터 수정·재시도

4.3 DescribeTaskDetail 폴링 예시

생성 요청과 동일한 인증 헤더로 DescribeTaskDetail을 호출합니다. StatusFINISH가 될 때까지 2~3초 간격으로 반복하십시오.

요청 — DescribeTaskDetailRequest
{
  "endpoint": "vod.intl.tencentcloudapi.com",
  "action": "DescribeTaskDetail",
  "region": "ap-seoul",
  "request": {
    "SubAppId": "150003****",
    "TaskId": "150003****-CreateAigcImageTask-xxxxxxxx"
  }
}
응답 — FINISHResponse
{
  "Response": {
    "TaskType": "CreateAigcImageTask",
    "Status": "FINISH",
    "CreateAigcImageTask": {
      "Status": "FINISH",
      "ErrCode": 0,
      "Message": "",
      "Output": {
        "ImageInfoSet": [
          {
            "Url": "https://.../result.png",
            "Width": 1024,
            "Height": 1024
          }
        ]
      }
    },
    "RequestId": "xxxxxxxx"
  }
}

임시 저장(StorageMode: Temporary) 결과 URL은 만료 시간이 짧습니다. 영구 보관이 필요하면 Permanent로 요청하거나 회수 즉시 자체 스토리지로 다운로드하십시오.

4.4 주요 에러 & 대처

에러 유형원인대처
모델 버전 미지원지정한 ModelVersion이 존재하지 않음지원 모델 목록(§6) 확인 후 올바른 버전 선택
해상도 미지원해당 모델이 지원하지 않는 Resolution모델 특성 표(§6)에서 지원 해상도 선택
종횡비 미지원해당 모델이 지원하지 않는 AspectRatio모델 특성 표(§6)에서 지원 종횡비 선택
참고 이미지 개수 초과FileInfos 개수가 모델 한도 초과모델별 한도(GEM 0~3 / Vidu 0~7 / Hunyuan·Kling 1)로 제한
Prompt 누락참고 이미지도 Prompt도 없음Prompt 추가 또는 참고 이미지 제공
SubAppId 누락서브앱(SubAppId) 미지정SubAppId 지정
참고 이미지 URL 접근 실패Type:Url 참고 이미지에 접근 불가공인망에서 접근 가능한 URL 사용(Dash 미지원)

5. 엔진별 호출 예시

5.0 공통 호출 골격

모든 엔진은 동일한 endpoint / action / region / auth 위에서 ModelName + ModelVersion + Prompt + OutputConfig만 바뀝니다. 아래 골격을 기준으로 §5.1 표의 엔진별 차이만 끼워 넣으면 됩니다.

Common Request Skeleton
JSON
{
  "endpoint": "vod.intl.tencentcloudapi.com",
  "action": "CreateAigcImageTask",
  "region": "ap-seoul",
  "auth": "TC3-HMAC-SHA256",
  "request": {
    "SubAppId": "150003****",
    "ModelName": "",
    "ModelVersion": "",
    "Prompt": "A clean product-style capybara mascot image, studio lighting",
    "NegativePrompt": "low quality, distorted, blurry",
    "EnhancePrompt": "Enabled",
    "OutputConfig": {
      "StorageMode": "Temporary",
      "AspectRatio": "1:1"
    }
  }
}
Common Response
200
{
  "Response": {
    "TaskId": "150003****-AigcImageTask-XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXT",
    "RequestId": "XXXXXXXX-****-XXXXXXXXXXXX"
  }
}

5.1 엔진별 차이 매트릭스

#ModelNameModelVersionOutputConfig 권장값ComplianceCheck특이사항 / 가이드
1GEM3.1AspectRatio: "1:1"Quickstart 기본 엔진. prompt-only 동작.
2Qwen0925AspectRatio: "1:1"
3Seedream5.0-liteAspectRatio: "1:1"
4Kling3.0-OmniAspectRatio: "1:1"필수 (Input/Output Enabled)
5Jimeng4.0AspectRatio: "1:1"
6MJv7AspectRatio: "16:9"1요청 = 4장 고정. --s/--c/--sref 등 자체 문법 → §6.2 MJ 가이드
7Viduq2AspectRatio: "1:1"필수 (Input/Output Enabled)
8OGimage2_highAspectRatio: "1:1"1K/2K/4K 해상도 (low / medium / high)

GPT-Image2 엔진의 사용 패턴(다중 출력 / 마스크 편집 / 투명 레이어 / 커스텀 사이즈)은 §6.1 GPT-Image2 가이드 참조.

5.2 엔진별 전체 JSON

8개 엔진의 전체 Request Body를 한눈에 비교할 수 있도록 격자로 배치했습니다. 모든 엔진의 응답은 동일하게 { "Response": { "TaskId": "...", "RequestId": "..." } } 형태이며, 이후 DescribeAigcImageTask로 결과를 조회합니다.

GEM - 3.1Request
{
  "endpoint": "vod.intl.tencentcloudapi.com",
  "action": "CreateAigcImageTask",
  "region": "ap-seoul",
  "auth": "TC3-HMAC-SHA256",
  "request": {
    "SubAppId": "150003****",
    "ModelName": "GEM",
    "ModelVersion": "3.1",
    "Prompt": "A clean product-style capybara mascot image, studio lighting",
    "NegativePrompt": "low quality, distorted, blurry",
    "EnhancePrompt": "Enabled",
    "OutputConfig": {
      "StorageMode": "Temporary",
      "AspectRatio": "1:1"
    }
  }
}
Qwen - 0925Request
{
  "endpoint": "vod.intl.tencentcloudapi.com",
  "action": "CreateAigcImageTask",
  "region": "ap-seoul",
  "auth": "TC3-HMAC-SHA256",
  "request": {
    "SubAppId": "150003****",
    "ModelName": "Qwen",
    "ModelVersion": "0925",
    "Prompt": "A clean product-style capybara mascot image, studio lighting",
    "NegativePrompt": "low quality, distorted, blurry",
    "EnhancePrompt": "Enabled",
    "OutputConfig": {
      "StorageMode": "Temporary",
      "AspectRatio": "1:1"
    }
  }
}
Seedream - 5.0-liteRequest
{
  "endpoint": "vod.intl.tencentcloudapi.com",
  "action": "CreateAigcImageTask",
  "region": "ap-seoul",
  "auth": "TC3-HMAC-SHA256",
  "request": {
    "SubAppId": "150003****",
    "ModelName": "Seedream",
    "ModelVersion": "5.0-lite",
    "Prompt": "A clean product-style capybara mascot image, studio lighting",
    "NegativePrompt": "low quality, distorted, blurry",
    "EnhancePrompt": "Enabled",
    "OutputConfig": {
      "StorageMode": "Temporary",
      "AspectRatio": "1:1"
    }
  }
}
Kling - 3.0-OmniRequest
{
  "endpoint": "vod.intl.tencentcloudapi.com",
  "action": "CreateAigcImageTask",
  "region": "ap-seoul",
  "auth": "TC3-HMAC-SHA256",
  "request": {
    "SubAppId": "150003****",
    "ModelName": "Kling",
    "ModelVersion": "3.0-Omni",
    "Prompt": "A clean product-style capybara mascot image, studio lighting",
    "NegativePrompt": "low quality, distorted, blurry",
    "EnhancePrompt": "Enabled",
    "OutputConfig": {
      "StorageMode": "Temporary",
      "AspectRatio": "1:1",
      "InputComplianceCheck": "Enabled",
      "OutputComplianceCheck": "Enabled"
    }
  }
}
Jimeng - 4.0Request
{
  "endpoint": "vod.intl.tencentcloudapi.com",
  "action": "CreateAigcImageTask",
  "region": "ap-seoul",
  "auth": "TC3-HMAC-SHA256",
  "request": {
    "SubAppId": "150003****",
    "ModelName": "Jimeng",
    "ModelVersion": "4.0",
    "Prompt": "A clean product-style capybara mascot image, studio lighting",
    "NegativePrompt": "low quality, distorted, blurry",
    "EnhancePrompt": "Enabled",
    "OutputConfig": {
      "StorageMode": "Temporary",
      "AspectRatio": "1:1"
    }
  }
}
MJ - v7Request
{
  "endpoint": "vod.intl.tencentcloudapi.com",
  "action": "CreateAigcImageTask",
  "region": "ap-seoul",
  "auth": "TC3-HMAC-SHA256",
  "request": {
    "SubAppId": "150003****",
    "ModelName": "MJ",
    "ModelVersion": "v7",
    "Prompt": "A clean product-style capybara mascot, studio lighting, soft shadows --s 250 --c 10 --sref https://your-bucket.cos.ap-seoul.myqcloud.com/style-ref.jpg --sw 500",
    "NegativePrompt": "low quality, distorted, blurry",
    "EnhancePrompt": "Enabled",
    "OutputConfig": {
      "StorageMode": "Temporary",
      "AspectRatio": "16:9"
    }
  }
}
Vidu - q2Request
{
  "endpoint": "vod.intl.tencentcloudapi.com",
  "action": "CreateAigcImageTask",
  "region": "ap-seoul",
  "auth": "TC3-HMAC-SHA256",
  "request": {
    "SubAppId": "150003****",
    "ModelName": "Vidu",
    "ModelVersion": "q2",
    "Prompt": "A clean product-style capybara mascot image, studio lighting",
    "NegativePrompt": "low quality, distorted, blurry",
    "EnhancePrompt": "Enabled",
    "OutputConfig": {
      "StorageMode": "Temporary",
      "AspectRatio": "1:1",
      "InputComplianceCheck": "Enabled",
      "OutputComplianceCheck": "Enabled"
    }
  }
}
OG - image2_highRequest
{
  "endpoint": "vod.intl.tencentcloudapi.com",
  "action": "CreateAigcImageTask",
  "region": "ap-seoul",
  "auth": "TC3-HMAC-SHA256",
  "request": {
    "SubAppId": "150003****",
    "ModelName": "OG",
    "ModelVersion": "image2_high",
    "Prompt": "A clean product-style capybara mascot image, studio lighting",
    "NegativePrompt": "low quality, distorted, blurry",
    "EnhancePrompt": "Enabled",
    "OutputConfig": {
      "StorageMode": "Temporary",
      "AspectRatio": "1:1"
    }
  }
}

6. 모델별 상세 가이드

6.1 GPT-Image2

GPT-Image2 모델 상세 가이드

GPT-Image2 기능별 사용법

범용 이미지 생성
JSON Basic Generation
{
  "SubAppId": 1500044236,
  "ModelName": "GPT-Image2",
  "ModelVersion": "gpt-image-2",
  "Prompt": "A professional product photo of wireless earbuds on a marble surface",
  "OutputConfig": {"StorageMode": "Temporary", "AspectRatio": "1:1"}
}
다중 이미지 출력

OutputConfig에 ImageCount를 지정하여 한 요청으로 최대 4장 동시 생성.

투명 레이어 (Transparent Background)

OutputConfig에 OutputFormat: "png" + Background: "transparent" 설정.

마스크 편집 (Inpainting)

FileInfos에 원본 이미지 + 마스크 이미지를 함께 전달합니다. 마스크의 투명 영역이 편집 대상입니다.

커스텀 사이즈 (Custom Size / Auto)

OutputConfig의 Resolution에 "WxH" 형태로 직접 지정하거나 "auto"로 설정.

6.2 MJ (Midjourney)

MJ (Midjourney) 모델 상세 가이드

MJ 기능 목록

기능상세 설명
Text-to-ImagePrompt를 기반으로 이미지를 생성합니다.
참조 이미지 기반 생성단일 참조 이미지(JPEG/PNG/WEBP, ≤10MB) 지원. --iw 0~3으로 참조 이미지 가중치 조절 (기본값 1)
해상도 규칙「가로×세로 픽셀」 기준. 원본 해상도 최대 약 104만 픽셀(1024×1024). 임의 커스텀 해상도 불가.
표준 비율 & 해상도1:1 1024×1024 (기본) / 4:5 819×1024 / 2:3 682×1024 / 9:16 576×1024 / 16:9 1365×768. 확대 시 2배까지 가능.
확대 (Upscale)Subtle (미세 조정, 원본 충실도 높음) / Creative (예술적 재구성) 2가지 모드. 고정 2배 확대.
출력 수량단일 요청 시 고정 4장(2×2 격자) 생성. U1~U4로 개별 선택 가능.
핵심 파라미터--s 0~1000 스타일 강도(기본 250) / --c 0~100 변동성 (4장 간 차이) / --sref 스타일 참조 URL / --sw 0~1000 스타일 참조 가중치
고급 기능부분 재생성 (Vary Region), Pan 확장, Zoom Out, Inpainting 마스크 편집

MJ 코드 예시

참조 이미지 + 스타일 참조 생성

참조 이미지를 FileInfos로, 스타일 참조를 Prompt의 --sref 플래그로 전달합니다.

JSON MJ v7 — 참조 + 스타일 생성
{
  "SubAppId": 1500044236,
  "ModelName": "MJ",
  "ModelVersion": "v7",
  "FileInfos": [
    {
      "Type": "Url",
      "Url": "https://example.com/reference-image.png"
    }
  ],
  "Prompt": "A clean product-style capybara mascot, studio lighting, soft shadows --s 250 --c 10 --iw 1.5 --sref https://example.com/style-ref.jpg --sw 500",
  "NegativePrompt": "low quality, distorted, blurry",
  "EnhancePrompt": "Enabled",
  "OutputConfig": {
    "StorageMode": "Temporary",
    "AspectRatio": "16:9"
  }
}
Text-to-Image (기본)
JSON MJ v7 — 기본 생성
{
  "SubAppId": 1500044236,
  "ModelName": "MJ",
  "ModelVersion": "v7",
  "Prompt": "Futuristic cyberpunk city at night, neon lights reflecting on wet streets, cinematic --s 500 --c 30",
  "OutputConfig": {
    "StorageMode": "Temporary",
    "AspectRatio": "16:9"
  }
}

MJ Prompt 파라미터 레퍼런스

파라미터범위기본값설명
--s0~1000250스타일 강도. 높을수록 예술적 스타일화 증가
--c0~1000변동성. 높을수록 4장 간 차이 증가
--iw0~31참조 이미지 가중치. 높을수록 참조 이미지 반영 강화
--srefURL스타일 참조 이미지 URL
--sw0~1000100스타일 참조 가중치
--ar비율1:1종횡비 (OutputConfig.AspectRatio와 동일 효과)
💡
Tip
MJ는 단일 요청당 고정 4장을 생성합니다. DescribeTaskDetail 결과에서 4장의 URL이 반환되며, 원하는 이미지를 선택하여 사용합니다. Prompt 내 --sref 등의 플래그는 MJ 자체 문법이며, API 호출 시 Prompt 문자열 안에 그대로 포함시켜 전달합니다.

7. 과금 & 한도

💰
Pricing
Image Generation 상세 과금 정책은 담당자에게 문의해 주십시오.
ℹ️
Quota
Image Generation 한도는 SubAppId 단위로 관리됩니다. Quota 조회/설정 API와 429 응답 처리 흐름은 Text Generation 페이지의 §4. AIGC Quota 관리를 참고하십시오.
This page is intended for developer reference and is not an official Tencent webpage.

1. Video Generation Overview

영상 생성 Task를 생성합니다. 텍스트, 이미지, 첫 프레임 입력을 기반으로 영상을 생성하고 TaskId를 반환합니다.

모델별로 지원 Duration, Resolution, AspectRatio가 다를 수 있으므로 엔진별 예시를 기준으로 시작합니다.

1.1 API 정보

POSTvod.intl.tencentcloudapi.com
항목
Endpointvod.intl.tencentcloudapi.com
MethodPOST
X-TC-ActionCreateAigcVideoTask
X-TC-Version2018-07-17
X-TC-Regionap-seoul

1.2 지원 모델

모델명설명버전
Kling전 기능 영상 모델 — Text/Image/Reference/Motion Control/Lip Sync/Digital Human/Multi-shot/Outpainting1.6 2.0 2.1 2.5 2.6 3.0 3.0-Omni O1 3.0-motion-control
ViduText/Image/First+Last Frame/Reference/Custom Subject/특효 템플릿 지원q2 q2-turbo q2-pro q3 q3-pro q3-turbo q3-mix
PixVerseText/Image/First+Last Frame/Reference/비디오 편집 지원V5.6 V6.0 C1
Hailuo (MiniMax Video)고품질 영상 생성02 2.3 2.3-fast
GV (Google Veo)Google AI 영상 생성, 오디오 생성 지원3.1 3.1-fast
OS (OpenAI Sora)OpenAI 영상 생성2.0
JimengJimeng 영상 생성 엔진3.0pro
SeedanceSeedance 계열 고품질 영상1.0-pro 1.0-lite-i2v 1.0-pro-fast 1.5-pro
MingmouMingmou 영상 생성1.0
H2H2 영상 생성 엔진1.0

1.3 Supported Model Options

모델별 지원 해상도 · 종횡비 · 영상 길이(Duration) · 첫/끝 프레임 · 최대 참조 수 · 오디오 동시 생성 지원 여부를 정리한 표입니다. Duration · Resolution · AspectRatioOutputConfig 필드로 지정하며, 허용값은 모델마다 다릅니다.

duration / resolution / aspect_ratio 호환
{"duration":5,"resolution":"1080P","aspect_ratio":"16:9"} 조합은 Kling · Vidu에서 그대로 동작합니다. Hailuo(6s/10s만) · GV(8s 고정 등) · OS(720P 고정)처럼 길이/해상도가 특정값으로 고정된 모델은 5초 또는 1080P가 불가하니 모델 선택 시 표를 확인하십시오.
ModelNameVersionResolutionAspect ratioDurationFirst/last frameMax referenceA/V syncNotes
Hailuo02 / 2.3 / 2.3-fast768P / 1080P (default 768P)16:9 only720P: 6s, 10s / 1080P: 6sFirst+last (02 only)Image-to-video; 2.3-fast single imageNoMiniMax Video.
Kling1.6 / 2.1 / 2.5 / 2.6 / 3.0 / 3.0-Omni / O1720P / 1080P (default 720P; 2.5/2.6 1080P)16:9, 9:16, 1:1 (2.1, 2.5, 2.6 add 4:3, 3:4, 3:2, 2:3, 21:9)5s, 10s (3.0 / 3.0-Omni: 3–15s; O1: 3–10s)Supported (2.1 needs 1080P)Up to 4 (1.6) / 7 subjects (O1, 3.0-Omni)Yes (2.6 audio variant, 3.0, 3.0-Omni)Flagship. Video input: MP4/MOV, 3–10s, 720–2160px, 24–60fps, ≤200MB.
GV (Google Veo)3.1 / 3.1-fast720P / 1080P (default 720P)16:9, 9:164s, 8s, 12sSupported (3.1)Up to 3Yes (3.1, needs EnableAudio=true)Google Veo.
OS (OpenAI Sora)2.0720P (fixed)Image-to-video matches image; text-to-video 16:9, 9:164s, 8s, 12sNot supportedUp to 7 (no ref video) / 4 (with ref video)NoOpenAI Sora. Higher resolution via super-resolution enhancement.
Viduq2 / q2-pro / q2-turbo / q3 / q3-pro / q3-turbo540P / 720P / 1080P (default 720P)Text-to-video AspectRatio: 16:9, 9:16, 3:4, 4:3, 1:11–10s (q3-pro/turbo 1–16s)Supported (not q3)Up to 4 images + 2 videos (q3: 5+2)Yes (q3 family, needs EnableAudio=true)off-peak mode halves price; movement_amplitude, realistic/anime style.
Hunyuan1.5480P / 720P / 1080P (default 720P)16:9 onlyNot supported1–7 subjects (1–7 images)No
Jimeng3.0pro1080P16:9, 9:16, 3:4, 4:3, 1:1, 21:95s, 10sFirst frame onlyNot supportedNo
Seedance1.0-pro / 1.0-pro-fast / 1.5-pro480P / 720P / 1080P (default 720P; 1.0 1080P)16:9, 9:16, 1:1, 4:3, 3:4, 21:9, 9:215s, 10s (1.5-pro 4–12s, default 5s)Supported (not 1.0-pro-fast)1–2 (first/last frame)Yes (1.5-pro native)
Mingmou1.0Not supportedNo
PixVersev5.6 / v6 / c1540P / 720P / 1080P / 2K / 4K (default 720P)16:9, 4:3, 1:1, 3:4, 9:16, 2:3, 3:2, 21:9 (text-to-video only)5s / 8s / 10s (v5.6; 10s not on 1080P) / 1–15s (v6, c1)Supported1–2 (first/last) / 7 (v5.6 ref) / 3 (c1 ref)Yes (v6, c1)See §6.3 PixVerse guide.

1.4 Architecture

Architecture Diagram
AIGC Architecture

2. Quickstart

텍스트 프롬프트 한 줄로 첫 영상 Task를 생성하는 최단 경로입니다. 아래 3 step을 따라 TaskId를 받고, 결과 조회 API로 결과 영상 URL을 회수합니다.

2.1 Step 1 — Endpoint & 인증 헤더

Tencent Cloud Common API Endpoint와 SecretId/SecretKey 기반 TC3-HMAC-SHA256 서명을 사용합니다. 서명 생성 흐름과 raw signed POST 코드는 §4.7 Python raw signed POST 예제를 참고하십시오.

항목
Endpointhttps://vod.intl.tencentcloudapi.com
X-TC-ActionCreateAigcVideoTask
X-TC-Version2018-07-17
X-TC-Regionap-seoul
AuthorizationTC3-HMAC-SHA256 Credential=$YOUR_SECRET_ID/...

2.2 Step 2 — 요청 보내기

아래 cURL 1개를 그대로 실행하면 Kling 3.0-Omni 엔진에 prompt-only 요청이 전송되어 TaskId가 반환됩니다. $YOUR_SECRET_ID, $YOUR_SECRET_KEY, $SUBAPP_ID는 본인 값으로 치환합니다. 전체 인증 헤더(Authorization) 생성은 §4.7 Python raw signed POST 예제를 그대로 사용할 수 있습니다.

Bash Quickstart cURL
curl -X POST https://vod.intl.tencentcloudapi.com \
  -H "Content-Type: application/json; charset=utf-8" \
  -H "X-TC-Action: CreateAigcVideoTask" \
  -H "X-TC-Version: 2018-07-17" \
  -H "X-TC-Region: ap-seoul" \
  -H "Authorization: TC3-HMAC-SHA256 Credential=$YOUR_SECRET_ID/..." \
  -d '{
    "SubAppId": $SUBAPP_ID,
    "ModelName": "Kling",
    "ModelVersion": "3.0-Omni",
    "Prompt": "A capybara mascot moves gently in a short studio video",
    "OutputConfig": {
      "Duration": 5,
      "Resolution": "720P"
    }
  }'

200 응답으로 Response.TaskId가 돌아오면 정상입니다. Body 파라미터 의미는 §3. Request 작성, 엔진별 차이는 §5. 엔진별 호출 예시 참조.

2.3 Step 3 — TaskId로 결과 조회

DescribeAigcVideoTask를 동일한 인증 헤더로 호출하여 결과 상태와 영상 URL을 회수합니다. 상세 파라미터는 MPS Integration §5. DescribeAigcVideoTask 참조.


3. Request 작성

3.1 Input Parameters

ParameterTypeDescription
SubAppIdrequiredIntegerApplication 식별자
ModelNamerequiredString영상 생성 엔진 이름
ModelVersionrequiredString엔진 버전
PromptconditionalString텍스트 기반 생성 프롬프트
NegativePromptoptionalString원하지 않는 요소 지정
FileInfos.NoptionalArray참조 이미지/비디오 파일 정보
LastFrameUrloptionalString끝 프레임 URL (지원 모델: GV, Kling, Vidu)
LastFrameFileIdoptionalString끝 프레임 FileId
SubjectInfos.NoptionalArray고정 주체(Subject) 정보 — 캐릭터/오브젝트/음성 ID
EnhancePromptoptionalStringEnabled / Disabled
OutputConfigoptionalObjectStorageMode, Duration, Resolution, AspectRatio, AudioGeneration 등 — 상세는 §3.2 참조
InputRegionoptionalString입력 파일 URL의 리전
SceneTypeoptionalString모델별 Scene 타입
SeedoptionalInteger결과 재현용 seed
SessionIdoptionalString3일간 중복 요청 방지용 ID
SessionContextoptionalString콜백 시 함께 전달되는 context 값
ExtInfooptionalString모델별 확장 파라미터 전달용 JSON 문자열. 1차 키 AdditionalParameters 안에 동작제어·대사동기화·스마트 분할·음색 등 모델 고유 옵션을 넣는다 — 상세는 §3.4

3.2 OutputConfig 필드

FieldTypeDescription
StorageModeStringTemporary / Permanent
DurationInteger생성 영상 길이 (모델별 상이)
ResolutionString720P, 1080P, 2K, 4K
AspectRatioString16:9, 9:16, 1:1, 4:3, 3:4
AudioGenerationString지원 모델에서 오디오 생성 Enabled/Disabled
EnhanceSwitchString초해상도 향상 (Super-Resolution) 활성화 (Enabled/Disabled)
OffPeakString오프피크(off-peak) 모드. Enabled 시 비혼잡 시간대에 처리해 비용을 절감 — 대신 완료까지 더 오래 걸릴 수 있음
FrameInterpolateStringVidu 스마트 프레임 보간. Enabled/Disabled. 중간 프레임을 보간해 더 부드러운 영상
LogoAddString워터마크 로고 삽입 여부. 현재 Vidu만 지원 (Enabled/Disabled)
InputComplianceCheckString입력 콘텐츠 검수 (Enabled/Disabled)
OutputComplianceCheckString출력 콘텐츠 검수 (Enabled/Disabled)
OutputFormatString출력 파일 형식

3.3 FileInfos.N 필드 & 사용 패턴

FileInfos.N은 입력 이미지/비디오 배열입니다. 각 원소는 아래 필드로 입력 소스와 그 역할(첫 프레임·참조·편집 대상 등)을 지정합니다.

FieldTypeDescription
TypeStringFile(점박 미디어 FileId) / Url(접근 가능한 URL)
CategoryStringImage / Video
FileIdStringType=File일 때 유효
UrlStringType=Url일 때 유효
UsageString입력 역할 구분 — FirstFrame(첫 프레임) / Reference(참조 프레임). 다중 참조 시 모든 원소가 Usage를 가져야 함
ReferenceTypeString참조 타입 (GV·Kling·PixVerse 적용). GV: asset(소재)/style(스타일); Kling+Video: feature(특징 참조)/base(편집 대상)
ObjectIdStringVidu 주체 Id 또는 참조 모드 제어. 이미지 1장 + ObjectId 비어있음 → 첫 프레임 모드; 비어있지 않음 → 참조 모드. prompt에서 @ObjectId로 호출
VoiceIdStringVidu-q2 음색 Id. 모든 이미지가 주체 Id를 가질 때 주체별 음색 지정 가능
KeepOriginalSoundStringCategory=Video일 때 원본 음성 유지 여부 — Enabled/Disabled

사용 패턴

패턴필드Description
First frameUsage = FirstFrame첫 프레임 이미지 기준 영상 생성. 출력 종횡비는 입력 이미지 비율을 따름
ReferenceUsage = Reference스타일/캐릭터/오브젝트 참조용
First+Last frameUsage = FirstFrame + LastFrameUrl/FileId시작/끝 구도 지정. Kling 2.1 첫·끝 프레임은 1080P 필수
Subject referenceSubjectInfos.N고정 주체(Subject) — 캐릭터/오브젝트/음성 ID (권장)
Object referenceObjectId 지정구방식 참조 — 한 장 이미지에 ObjectId를 비우면 첫 프레임, 채우면 참조

3.4 ExtInfo / AdditionalParameters (모델 확장)

동작 제어·대사 동기화·스마트 분할·음색 지정처럼 표준 파라미터로 표현할 수 없는 모델 고유 기능ExtInfo로 전달합니다. 대부분 SceneType으로 기능을 켜고, 세부 옵션을 AdditionalParameters에 담습니다.

2중 JSON 인코딩 구조
ExtInfo = {"AdditionalParameters": "<json-string>"} 이며, 그 값이 다시 모델 파라미터 JSON을 문자열로 인코딩한 것입니다. 즉 모델 파라미터를 두 번 JSON 문자열화해야 합니다. prompt 안에서는 <<<element_1>>> 형태로 주체(subject)/element를 참조합니다.

영상 생성 기능별 AdditionalParameters

기능 / SceneType파라미터설명
동작 제어
SceneType=motion_control
(Kling 2.6 / 3.0)
keep_original_sound
character_orientation
keep_original_sound: yes/no — 참조 영상 원음 유지 여부. character_orientation: image(이미지 인물 방향, 참조 영상 ≤10초) / video(영상 인물 방향, ≤30초)
대사 동기화 / 디지털 휴먼
SceneType=avatar_i2v
(Kling)
sound_file
또는 audio_id
음성을 입에 맞춰 합성. sound_file: 오디오 URL/Base64(.mp3/.wav/.m4a/.aac, ≤5MB, 2~300초). audio_id·sound_file 둘 중 정확히 하나만 지정
대사 동기화 (간편)
SceneType=lip_sync
(Kling)
sound_file
또는 audio_id
avatar_i2v와 동일하게 입력 음성에 입모양을 맞추는 립싱크 전용 씬. 인물 영상/이미지에 음성을 합성
스마트 분할(분경)
(Kling 3.0 계열)
multi_shot
shot_type
multi_prompt
multi_shot=true로 다중 컷 생성. shot_type=customizemulti_prompt 배열에 컷별 index/prompt/duration 지정. 미지정 시 모델이 프롬프트를 자동 분할
음색 지정
(Kling 2.6/3.0/3.0-omni)
voice_list[{"voice_id": ...}] 형태. prompt에서 <<<voice_1>>>로 호출. Kling 2.6은 1080P에서만 음색 ID 지원
주체(subject) 참조 (구 방식)
(Kling)
element_list[{"element_id": ...}]. prompt에서 <<<element_1>>>로 참조. 신규는 SubjectInfos.N 권장 (→ §7.3)
특효 템플릿
SceneType=template_effect
(Vidu)
template장면 템플릿 이름(예: morphlab=폭발). 템플릿별 입력 요구가 다름 — Vidu 템플릿 센터 참조
고정 주체 참조
SceneType=subject_reference
(Vidu)
SubjectInfos.N여러 컷에 걸쳐 동일 인물/오브젝트를 일관되게 등장시키는 고정 주체 참조 씬
효과음 생성 (텍스트/영상)
SceneType=sfx
(Kling)
bgm_prompt
asmr_mode
음효 프롬프트는 Prompt에, 배경음악 프롬프트는 bgm_prompt에. asmr_mode=true 시 디테일 음효 강화. 입력 영상은 VideoInfos
음악 생성
SceneType=music
(MiniMaxMusic)
lyrics가사를 직접 지정. OutputConfig.OutputAudioFormat으로 출력 포맷(mp3 등) 지정
시드 고정 (지원 모델)Seed난수 시드 지정 시 동일 입력에 대해 결과 재현 가능. 미지정 시 매번 랜덤

대표 예시

동작 제어 (motion_control)Kling
"SceneType": "motion_control",
"ExtInfo": "{\"AdditionalParameters\":\"{\\\"keep_original_sound\\\":\\\"no\\\",\\\"character_orientation\\\":\\\"video\\\"}\"}"
대사 동기화 (avatar_i2v)Kling
"SceneType": "avatar_i2v",
"ExtInfo": "{\"AdditionalParameters\":\"{\\\"sound_file\\\":\\\"https://.../v.mp3\\\"}\"}"
스마트 분할 (multi_shot)Kling 3.0
# AdditionalParameters 내부
{
  "multi_shot": true,
  "shot_type": "customize",
  "multi_prompt": [
    {"index":1, "prompt":"...", "duration":2},
    {"index":2, "prompt":"...", "duration":3}
  ]
}
음색 지정 (voice_list)Kling 2.6+
"Prompt": "...<<<voice_1>>>...",
"ExtInfo": "{\"AdditionalParameters\":\"{\\\"voice_list\\\":[{\\\"voice_id\\\":869...391}]}\"}"
특효 템플릿 (template_effect)Vidu
"SceneType": "template_effect",
"ExtInfo": "{\"AdditionalParameters\":\"{\\\"template\\\":\\\"morphlab\\\"}\"}"
효과음 (sfx)Kling
"SceneType": "sfx",
"AdditionalParameters": "{\"bgm_prompt\":\"치유계 피아노...\",\"asmr_mode\":true}"

4. Output & 결과 조회

CreateAigcVideoTask비동기 API입니다. 호출 즉시 TaskId만 반환하고, 실제 영상은 백그라운드에서 생성됩니다. 영상 생성은 이미지보다 오래 걸리므로(모델·길이에 따라 수십 초~수 분) TaskIdDescribeTaskDetail을 폴링하여 완료 여부와 결과 URL을 회수합니다.

4.1 CreateAigcVideoTask 응답

ParameterTypeDescription
TaskIdString결과 조회용 Task ID. 이후 DescribeTaskDetail에 그대로 전달합니다.
RequestIdString요청 추적용 ID. 문제 발생 시 기술지원 문의에 사용합니다.
세션 중복 제거(Dedup)
동일 SessionId로 보낸 요청은 3일간 중복 제거됩니다. 재시도 시 동일 결과를 받게 되므로, 새 영상을 원하면 SessionId를 변경하십시오.

4.2 작업 상태 (Lifecycle)

작업은 다음 상태를 순차적으로 거칩니다. FINISH 또는 FAIL이 종료 상태입니다. (영상 API는 처리 중 상태가 RUN입니다.)

WAIT RUN FINISH 또는 FAIL
상태설명권장 동작
WAIT큐에서 대기 중3~5초 간격으로 폴링 지속
RUN영상 생성 처리 중폴링 지속(영상은 시간이 더 걸림)
FINISH완료 — 결과 URL 회수 가능Output에서 영상 URL 추출
FAIL실패Message 확인 후 파라미터 수정·재시도

4.3 DescribeTaskDetail 폴링 예시

생성 요청과 동일한 인증 헤더로 DescribeTaskDetail을 호출합니다. StatusFINISH가 될 때까지 3~5초 간격으로 반복하십시오.

요청 — DescribeTaskDetailRequest
{
  "endpoint": "vod.intl.tencentcloudapi.com",
  "action": "DescribeTaskDetail",
  "region": "ap-seoul",
  "request": {
    "SubAppId": "150003****",
    "TaskId": "150003****-CreateAigcVideoTask-xxxxxxxx"
  }
}
응답 — FINISHResponse
{
  "Response": {
    "TaskType": "CreateAigcVideoTask",
    "Status": "FINISH",
    "CreateAigcVideoTask": {
      "Status": "FINISH",
      "ErrCode": 0,
      "Message": "",
      "Output": {
        "MediaInfoSet": [
          {
            "Url": "https://.../result.mp4",
            "Duration": 5,
            "Resolution": "720P"
          }
        ]
      }
    },
    "RequestId": "xxxxxxxx"
  }
}

임시 저장(StorageMode: Temporary) 결과 URL은 만료 시간이 짧습니다. 영구 보관이 필요하면 Permanent로 요청하거나 회수 즉시 자체 스토리지로 다운로드하십시오.

4.4 주요 에러 & 대처

에러 유형원인대처
모델 버전 미지원지정한 ModelVersion이 존재하지 않음지원 모델 목록(§6) 확인 후 올바른 버전 선택
해상도 미지원해당 모델이 지원하지 않는 Resolution모델 특성 표(§6)에서 지원 해상도 선택
종횡비 미지원해당 모델이 지원하지 않는 AspectRatio모델 특성 표(§6)에서 지원 종횡비 선택
첫·끝 프레임 제약첫·끝 프레임 생성 조건 미충족Kling 2.1 첫·끝 프레임은 Resolution: 1080P 필수
참고 이미지 개수 초과FileInfos 개수가 모델 한도 초과모델별 한도(Vidu q2 1~7 / GV 최대 3 등)로 제한
Prompt 누락참고 이미지도 Prompt도 없음Prompt 추가 또는 참고 이미지 제공

5. 엔진별 호출 예시

5.0 공통 호출 골격

모든 엔진은 동일한 endpoint / action / region / auth 위에서 ModelName + ModelVersion + Prompt + OutputConfig만 바뀝니다. 아래 골격을 기준으로 §5.1 표의 엔진별 차이만 끼워 넣으면 됩니다.

Common Request Skeleton
JSON
{
  "endpoint": "vod.intl.tencentcloudapi.com",
  "action": "CreateAigcVideoTask",
  "region": "ap-seoul",
  "auth": "TC3-HMAC-SHA256",
  "request": {
    "SubAppId": "150003****",
    "ModelName": "",
    "ModelVersion": "",
    "Prompt": "A capybara mascot moves gently in a short studio video",
    "NegativePrompt": "low quality, distorted, flicker, blurry",
    "EnhancePrompt": "Enabled",
    "OutputConfig": {
      "StorageMode": "Temporary",
      "Duration": 5,
      "Resolution": "720P",
      "AspectRatio": "16:9",
      "AudioGeneration": "Disabled"
    }
  }
}
Common Response
200
{
  "Response": {
    "TaskId": "150003****-AigcVideoTask-XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXT",
    "RequestId": "XXXXXXXX-****-XXXXXXXXXXXX"
  }
}

5.1 엔진별 차이 매트릭스

#ModelNameModelVersionOutputConfig 권장값ComplianceCheck특이사항 / 가이드
1Kling3.0-OmniDuration: 5 / Resolution: "720P" / AspectRatio: "16:9"필수 (Input/Output Enabled)플래그십. §6.1 Kling 가이드
2KlingO1Duration: 5 / Resolution: "720P" / AspectRatio: "16:9"필수 (Input/Output Enabled)경량 고속 모델. §6.1 Kling 가이드
3Hailuo2.3Duration: 5 / Resolution: "720P" / AspectRatio: "16:9"MiniMax Video.
4Viduq3Duration: 5 / Resolution: "720P" / AspectRatio: "16:9"필수 (Input/Output Enabled)§6.2 Vidu 가이드
5GV3.1Duration: 5 / Resolution: "720P" / AspectRatio: "16:9"Google Veo. 오디오 생성 지원.
6OS2.0Duration: 5 / Resolution: "720P" / AspectRatio: "16:9"OpenAI Sora.
7PixVerseV6.0Duration: 5 / Resolution: "720P" / AspectRatio: "16:9"§6.3 PixVerse 가이드
8H21.0Duration: 5 / Resolution: "720P" / AspectRatio: "16:9"
9Jimeng3.0proDuration: 5 / Resolution: "720P" / AspectRatio: "16:9"
10Seedance1.5-proDuration: 5 / Resolution: "720P" / AspectRatio: "16:9"
11Mingmou1.0Duration: 5 / Resolution: "720P" / AspectRatio: "16:9"

5.2 엔진별 전체 JSON

11개 엔진의 전체 Request Body를 한눈에 비교할 수 있도록 격자로 배치했습니다. 모든 엔진의 응답은 동일하게 { "Response": { "TaskId": "...", "RequestId": "..." } } 형태이며, 이후 DescribeTaskDetail로 결과를 조회합니다.

Kling - 3.0-OmniRequest
{
  "endpoint": "vod.intl.tencentcloudapi.com",
  "action": "CreateAigcVideoTask",
  "region": "ap-seoul",
  "auth": "TC3-HMAC-SHA256",
  "request": {
    "SubAppId": "150003****",
    "ModelName": "Kling",
    "ModelVersion": "3.0-Omni",
    "Prompt": "A capybara mascot moves gently in a short studio video",
    "NegativePrompt": "low quality, distorted, flicker, blurry",
    "EnhancePrompt": "Enabled",
    "OutputConfig": {
      "StorageMode": "Temporary",
      "Duration": 5,
      "Resolution": "720P",
      "AspectRatio": "16:9",
      "AudioGeneration": "Disabled",
      "InputComplianceCheck": "Enabled",
      "OutputComplianceCheck": "Enabled"
    }
  }
}
Kling - O1Request
{
  "endpoint": "vod.intl.tencentcloudapi.com",
  "action": "CreateAigcVideoTask",
  "region": "ap-seoul",
  "auth": "TC3-HMAC-SHA256",
  "request": {
    "SubAppId": "150003****",
    "ModelName": "Kling",
    "ModelVersion": "O1",
    "Prompt": "A capybara mascot moves gently in a short studio video",
    "NegativePrompt": "low quality, distorted, flicker, blurry",
    "EnhancePrompt": "Enabled",
    "OutputConfig": {
      "StorageMode": "Temporary",
      "Duration": 5,
      "Resolution": "720P",
      "AspectRatio": "16:9",
      "AudioGeneration": "Disabled",
      "InputComplianceCheck": "Enabled",
      "OutputComplianceCheck": "Enabled"
    }
  }
}
Hailuo - 2.3Request
{
  "endpoint": "vod.intl.tencentcloudapi.com",
  "action": "CreateAigcVideoTask",
  "region": "ap-seoul",
  "auth": "TC3-HMAC-SHA256",
  "request": {
    "SubAppId": "150003****",
    "ModelName": "Hailuo",
    "ModelVersion": "2.3",
    "Prompt": "A capybara mascot moves gently in a short studio video",
    "NegativePrompt": "low quality, distorted, flicker, blurry",
    "EnhancePrompt": "Enabled",
    "OutputConfig": {
      "StorageMode": "Temporary",
      "Duration": 5,
      "Resolution": "720P",
      "AspectRatio": "16:9",
      "AudioGeneration": "Disabled"
    }
  }
}
Vidu - q3Request
{
  "endpoint": "vod.intl.tencentcloudapi.com",
  "action": "CreateAigcVideoTask",
  "region": "ap-seoul",
  "auth": "TC3-HMAC-SHA256",
  "request": {
    "SubAppId": "150003****",
    "ModelName": "Vidu",
    "ModelVersion": "q3",
    "Prompt": "A capybara mascot moves gently in a short studio video",
    "NegativePrompt": "low quality, distorted, flicker, blurry",
    "EnhancePrompt": "Enabled",
    "OutputConfig": {
      "StorageMode": "Temporary",
      "Duration": 5,
      "Resolution": "720P",
      "AspectRatio": "16:9",
      "AudioGeneration": "Disabled",
      "InputComplianceCheck": "Enabled",
      "OutputComplianceCheck": "Enabled"
    }
  }
}
GV - 3.1Request
{
  "endpoint": "vod.intl.tencentcloudapi.com",
  "action": "CreateAigcVideoTask",
  "region": "ap-seoul",
  "auth": "TC3-HMAC-SHA256",
  "request": {
    "SubAppId": "150003****",
    "ModelName": "GV",
    "ModelVersion": "3.1",
    "Prompt": "A capybara mascot moves gently in a short studio video",
    "NegativePrompt": "low quality, distorted, flicker, blurry",
    "EnhancePrompt": "Enabled",
    "OutputConfig": {
      "StorageMode": "Temporary",
      "Duration": 5,
      "Resolution": "720P",
      "AspectRatio": "16:9",
      "AudioGeneration": "Disabled"
    }
  }
}
OS - 2.0Request
{
  "endpoint": "vod.intl.tencentcloudapi.com",
  "action": "CreateAigcVideoTask",
  "region": "ap-seoul",
  "auth": "TC3-HMAC-SHA256",
  "request": {
    "SubAppId": "150003****",
    "ModelName": "OS",
    "ModelVersion": "2.0",
    "Prompt": "A capybara mascot moves gently in a short studio video",
    "NegativePrompt": "low quality, distorted, flicker, blurry",
    "EnhancePrompt": "Enabled",
    "OutputConfig": {
      "StorageMode": "Temporary",
      "Duration": 5,
      "Resolution": "720P",
      "AspectRatio": "16:9",
      "AudioGeneration": "Disabled"
    }
  }
}
PixVerse - V6.0Request
{
  "endpoint": "vod.intl.tencentcloudapi.com",
  "action": "CreateAigcVideoTask",
  "region": "ap-seoul",
  "auth": "TC3-HMAC-SHA256",
  "request": {
    "SubAppId": "150003****",
    "ModelName": "PixVerse",
    "ModelVersion": "V6.0",
    "Prompt": "A capybara mascot moves gently in a short studio video",
    "NegativePrompt": "low quality, distorted, flicker, blurry",
    "EnhancePrompt": "Enabled",
    "OutputConfig": {
      "StorageMode": "Temporary",
      "Duration": 5,
      "Resolution": "720P",
      "AspectRatio": "16:9",
      "AudioGeneration": "Disabled"
    }
  }
}
H2 - 1.0Request
{
  "endpoint": "vod.intl.tencentcloudapi.com",
  "action": "CreateAigcVideoTask",
  "region": "ap-seoul",
  "auth": "TC3-HMAC-SHA256",
  "request": {
    "SubAppId": "150003****",
    "ModelName": "H2",
    "ModelVersion": "1.0",
    "Prompt": "A capybara mascot moves gently in a short studio video",
    "NegativePrompt": "low quality, distorted, flicker, blurry",
    "EnhancePrompt": "Enabled",
    "OutputConfig": {
      "StorageMode": "Temporary",
      "Duration": 5,
      "Resolution": "720P",
      "AspectRatio": "16:9",
      "AudioGeneration": "Disabled"
    }
  }
}
Jimeng - 3.0proRequest
{
  "endpoint": "vod.intl.tencentcloudapi.com",
  "action": "CreateAigcVideoTask",
  "region": "ap-seoul",
  "auth": "TC3-HMAC-SHA256",
  "request": {
    "SubAppId": "150003****",
    "ModelName": "Jimeng",
    "ModelVersion": "3.0pro",
    "Prompt": "A capybara mascot moves gently in a short studio video",
    "NegativePrompt": "low quality, distorted, flicker, blurry",
    "EnhancePrompt": "Enabled",
    "OutputConfig": {
      "StorageMode": "Temporary",
      "Duration": 5,
      "Resolution": "720P",
      "AspectRatio": "16:9",
      "AudioGeneration": "Disabled"
    }
  }
}
Seedance - 1.5-proRequest
{
  "endpoint": "vod.intl.tencentcloudapi.com",
  "action": "CreateAigcVideoTask",
  "region": "ap-seoul",
  "auth": "TC3-HMAC-SHA256",
  "request": {
    "SubAppId": "150003****",
    "ModelName": "Seedance",
    "ModelVersion": "1.5-pro",
    "Prompt": "A capybara mascot moves gently in a short studio video",
    "NegativePrompt": "low quality, distorted, flicker, blurry",
    "EnhancePrompt": "Enabled",
    "OutputConfig": {
      "StorageMode": "Temporary",
      "Duration": 5,
      "Resolution": "720P",
      "AspectRatio": "16:9",
      "AudioGeneration": "Disabled"
    }
  }
}
Mingmou - 1.0Request
{
  "endpoint": "vod.intl.tencentcloudapi.com",
  "action": "CreateAigcVideoTask",
  "region": "ap-seoul",
  "auth": "TC3-HMAC-SHA256",
  "request": {
    "SubAppId": "150003****",
    "ModelName": "Mingmou",
    "ModelVersion": "1.0",
    "Prompt": "A capybara mascot moves gently in a short studio video",
    "NegativePrompt": "low quality, distorted, flicker, blurry",
    "EnhancePrompt": "Enabled",
    "OutputConfig": {
      "StorageMode": "Temporary",
      "Duration": 5,
      "Resolution": "720P",
      "AspectRatio": "16:9",
      "AudioGeneration": "Disabled"
    }
  }
}

6. 모델별 상세 가이드

6.1 Kling

Kling 모델 상세 가이드

Kling 모델 버전별 기능 매트릭스

모델 버전지원 기능핵심 특징최대 참조 이미지오디오 지원영상 길이
3.0-OmniText/Image/Reference전 기능 통합 · 최고 화질8장TTS/더빙/SFX3~15초
3.0Text/Image기본 플래그십, 범용 최적6장지원3~15초
3.0-motion-controlText/Image/Reference정밀 모션 컨트롤6장지원최대 10초
O1Text/Image/Reference경량 고속 모델4장지원3~10초
2.6Text/Image안정 버전 (레거시)4장지원5/10초
2.5Text/Image구세대 모델2장미지원5/10초

Kling 고급 기능

동작 제어 (Motion Control)

ModelVersion: 3.0-motion-control — 인물 자세, 동작 궤적을 제어할 수 있습니다.

FileInfos에 포즈 이미지(Category: "Pose")를 추가하여 동작 가이드를 지정합니다.

JSON Motion Control Request
{"SubAppId":1500044236,"ModelName":"Kling","ModelVersion":"3.0-motion-control","Prompt":"A dancer performing ballet moves gracefully","FileInfos":[{"Type":"Url","Category":"Image","Url":"https://example.com/first-frame.jpg","Usage":"FirstFrame"},{"Type":"Url","Category":"Video","Url":"https://example.com/pose-guide.mp4","Usage":"Reference"}],"OutputConfig":{"StorageMode":"Temporary","Duration":10,"Resolution":"1080P"}}
Lip Sync

SceneType: lip_sync — 영상 내 인물의 입 모양을 음성에 맞춰 동기화합니다.

Step 1: DescribeAigcFaceInfo로 영상 내 인물 얼굴 정보(FaceId, 구간) 조회

Step 2: 조회된 FaceId를 사용하여 CreateAigcVideoTask 호출

JSON Lip Sync Request
{"SubAppId":1500044236,"ModelName":"Kling","ModelVersion":"2.6","Prompt":"Lip Sync","SceneType":"lip_sync","ExtInfo":"{\"AdditionalParameters\":\"{\\\"session_id\\\":\\\"FACE_SESSION_ID\\\",\\\"face_id\\\":\\\"0\\\",\\\"voice_id\\\":\\\"YOUR_VOICE_ID\\\"}\"}"}
디지털 휴먼 (Digital Human)

사진 1장 + 음성(TTS 또는 음성 파일)으로 디지털 휴먼 비디오를 생성합니다.

JSON Digital Human Request
{"SubAppId":1500044236,"ModelName":"Kling","ModelVersion":"2.6","FileInfos":[{"Type":"Url","Category":"Image","Url":"https://example.com/portrait.jpg","Usage":"FirstFrame"},{"Type":"Url","Category":"Audio","Url":"https://example.com/speech.mp3","Usage":"Reference"}],"SceneType":"digital_human","OutputConfig":{"StorageMode":"Temporary","Resolution":"1080P"}}
Multi-shot (다중 숏)

Kling 3.0 시리즈는 Multi-shot (다중 숏)을 지원합니다. multi_shot: true 설정 시 다중 숏 모드 활성화.

customize: multi_prompt로 각 숏의 시간+프롬프트 직접 지정
intelligence: prompt 기반 자동 분할

JSON Multi-shot (Customize)
{"SubAppId":1500044236,"ModelName":"Kling","ModelVersion":"3.0-Omni","Prompt":"","OutputConfig":{"StorageMode":"Temporary","Duration":15,"Resolution":"1080P"},"ExtInfo":"{\"AdditionalParameters\":\"{\\\"multi_shot\\\": true, \\\"shot_type\\\": \\\"customize\\\", \\\"multi_prompt\\\": [{\\\"index\\\": 1, \\\"prompt\\\": \\\"A person sitting on a park bench\\\", \\\"duration\\\": \\\"5\\\"}, {\\\"index\\\": 2, \\\"prompt\\\": \\\"The person stands up and walks away\\\", \\\"duration\\\": \\\"5\\\"}, {\\\"index\\\": 3, \\\"prompt\\\": \\\"Wide shot of the empty park bench\\\", \\\"duration\\\": \\\"5\\\"}]}\"}"}
Outpainting (이미지 확장)

ModelVersion: scene — 이미지의 주변 영역을 확장합니다. 확장 후 전체 면적 ≤ 원본의 3배

JSON Outpainting Request
{"SubAppId":1500044236,"ModelName":"Kling","ModelVersion":"scene","FileInfos":[{"Type":"Url","Url":"https://example.com/input.jpg"}],"Prompt":"Extend the scene with a beautiful sunset sky","OutputConfig":{"StorageMode":"Temporary"},"ExtInfo":"{\"AdditionalParameters\":\"{\\\"up_expansion_ratio\\\": 0.5, \\\"down_expansion_ratio\\\": 0.2, \\\"left_expansion_ratio\\\": 0.3, \\\"right_expansion_ratio\\\": 0.3}\"}"}
커스텀 보이스 (Custom Voice)

Kling 2.6, 3.0, 3.0-Omni에서 사용자 정의 보이스를 지정하여 영상 내 음성을 합성할 수 있습니다. 사전 준비: CreateKlingCustomVoice API로 보이스 ID 생성 필요

JSON Voice ID Request
{"SubAppId":1500044236,"ModelName":"Kling","ModelVersion":"3.0-Omni","Prompt":"A narrator explaining the story","FileInfos":[{"Type":"Url","Category":"Image","Url":"https://example.com/scene.jpg","Usage":"FirstFrame"}],"OutputConfig":{"StorageMode":"Temporary","Duration":10,"Resolution":"1080P","AudioGeneration":"Enabled"},"ExtInfo":"{\"AdditionalParameters\":\"{\\\"voice_id\\\": \\\"YOUR_VOICE_ID\\\"}\"}"}

6.2 Vidu

Vidu 모델 상세 가이드

Vidu 시나리오별 사용법

커스텀 캐릭터 (Custom Subject)

동일 캐릭터/오브젝트를 여러 영상에서 재사용하려면 캐릭터를 먼저 등록합니다. Vidu는 사전 등록 없이 영상 호출 한 번에 캐릭터를 같이 넘기는 임시 모드도 지원합니다 — §7.5 Vidu 임시 캐릭터 참조.

사전 등록 흐름: CreateAigcAdvancedCustomElement 로 등록 → 약 30초 후 DescribeAigcAdvancedCustomElements 로 실제 Element Id 회수 → 이후 SubjectInfos.N.Id 로 참조. 자세한 워크플로는 §7.3 캐릭터 일관성 (Element) 참조.

Text-to-Video
JSON Vidu Text-to-Video
{"SubAppId":1500044236,"ModelName":"Vidu","ModelVersion":"q2","Prompt":"A golden retriever running on a beach at sunset","OutputConfig":{"StorageMode":"Temporary","Duration":4,"AspectRatio":"16:9"}}
이미지 → 영상 (Image-to-Video / 시작·끝 프레임)

첫 프레임: FileInfos[0].Usage = "FirstFrame". 끝 프레임 추가 시: LastFrameUrl 사용

JSON Vidu First+Last Frame
{"SubAppId":1500044236,"ModelName":"Vidu","ModelVersion":"q3-pro","Prompt":"Smooth transition from day to night","FileInfos":[{"Type":"Url","Category":"Image","Url":"https://example.com/day.jpg","Usage":"FirstFrame"}],"LastFrameUrl":"https://example.com/night.jpg","OutputConfig":{"StorageMode":"Temporary","Duration":4,"AspectRatio":"16:9"}}
참조 이미지 기반 영상 + q3-mix

다중 참조 이미지로 스타일/캐릭터를 참조하여 영상 생성. q3-mix는 더 세밀한 스타일 믹싱 지원.

JSON Vidu q3-mix Reference
{"SubAppId":1500044236,"ModelName":"Vidu","ModelVersion":"q3-mix","Prompt":"Character walks through a fantasy forest","FileInfos":[{"Type":"Url","Category":"Image","Url":"https://example.com/char.jpg","Usage":"Reference"},{"Type":"Url","Category":"Image","Url":"https://example.com/style.jpg","Usage":"Reference"}],"OutputConfig":{"StorageMode":"Temporary","Duration":4}}

6.3 PixVerse

PixVerse 모델 상세 가이드

PixVerse 시나리오별 사용법

PixVerse는 Text-to-Video, Image-to-Video, First+Last Frame, Reference, 비디오 편집을 지원합니다.

비디오 편집 (Video Edit)

기존 비디오를 입력으로 받아 스타일 변환, 효과 추가 등의 편집을 수행합니다. FileInfos에 Category: "Video"로 원본 비디오를 전달합니다.

JSON PixVerse Video Edit
{"SubAppId":1500044236,"ModelName":"PixVerse","ModelVersion":"V6.0","Prompt":"Transform to anime style","FileInfos":[{"Type":"Url","Category":"Video","Url":"https://example.com/input.mp4","Usage":"Reference"}],"OutputConfig":{"StorageMode":"Temporary"}}

7. 시각 일관성 고급 기법

동일한 액션(CreateAigcVideoTask) 위에서 영상의 시각적 일관성을 끌어올리는 기법들입니다. 해외(ap-seoul) 계정 기준으로 게이트웨이가 받는 파라미터 키 이름과 응답 형태를 정리했습니다.

🧩
한눈에 보기
기법한 줄 요약핵심 키
첫/끝 프레임 보간두 이미지를 시작·끝으로 잡고 사이를 채움FileInfos[Usage="FirstFrame"] + LastFrameUrl
다중 참조 (Reference)여러 이미지를 스타일/구도 참고로 사용FileInfos[Usage="Reference"]
캐릭터 일관성 (Element)사전 등록한 캐릭터를 모든 영상에 동일하게 등장SubjectInfos[].Id + <<<element_1>>>
Vidu 임시 캐릭터등록 없이 호출 한 번에 캐릭터 동시 전달SubjectInfos[Name+ImageUrls] + [@Name]
멀티 컷 (분할 촬영)한 영상 안에서 카메라 워크가 여러 번 전환ExtInfomulti_shot JSON

7.1 첫 프레임 + 끝 프레임 보간

장면 N의 마지막 프레임 = 장면 N+1의 첫 프레임으로 강제해 컷 전환을 매끄럽게 만듭니다. 시작 이미지는 FileInfos[Usage="FirstFrame"], 끝 이미지는 LastFrameUrl로 넘깁니다.

JSON First + Last Frame
JSON
{
  "SubAppId":     0,
  "ModelName":    "Kling",
  "ModelVersion": "2.1",
  "Prompt":       "smooth bridge between two scenes",
  "FileInfos": [
    { "Type": "Url", "Category": "Image", "Url": "https://example.com/start.png", "Usage": "FirstFrame" }
  ],
  "LastFrameUrl": "https://example.com/end.png",
  "OutputConfig": { "StorageMode": "Temporary", "Resolution": "1080P", "Duration": 5 }
}
제약내용
KlingModelVersion = 2.1 + Resolution = 1080P 조합에서 LastFrameUrl 작동
Vidu / GVVidu는 q2-pro / q2-turbo, GV는 별도 조건
이미지5MB 이하, jpeg / jpg / png / webp

위 호출은 약 30초 내에 완료되며, 첫 프레임에서 끝 프레임으로 부드럽게 전환되는 5초 영상이 반환됩니다.

7.2 다중 참조 (Reference)

같은 인물·사물을 여러 각도에서 본 이미지를 같이 넣어 모델이 형태를 더 정확히 잡게 합니다. Usage = "Reference" 항목은 첫 프레임으로 고정되지 않고 단순 참고 입력으로만 쓰입니다.

JSON Multi-Reference
JSON
{
  "SubAppId":     0,
  "ModelName":    "Kling",
  "ModelVersion": "3.0-Omni",
  "Prompt":       "create a new scene combining the references",
  "FileInfos": [
    { "Type": "Url", "Category": "Image", "Url": "https://example.com/ref-a.png", "Usage": "Reference" },
    { "Type": "Url", "Category": "Image", "Url": "https://example.com/ref-b.png", "Usage": "Reference" }
  ],
  "EnhancePrompt": "Enabled",
  "OutputConfig": { "StorageMode": "Temporary", "Resolution": "1080P", "Duration": 5, "AspectRatio": "16:9", "AudioGeneration": "Enabled" }
}
  • 다중 참조는 최대 7장까지 (참고 영상이 같이 들어가면 4장까지) 허용됩니다.
  • 참조 이미지가 2장을 넘어가면 같은 호출에서 LastFrameUrl을 같이 쓸 수 없습니다.

7.3 캐릭터 일관성 (Element)

여러 컷에 같은 등장 인물·캐릭터를 등장시키려면 사전 등록 후 ID로 호출합니다. 등록 → 목록 조회로 ID 회수 → 영상 생성에 사용 → (필요 시) 삭제의 4단계 흐름입니다.

Step 1 — 등록 (CreateAigcAdvancedCustomElement)

JSON Register Element
JSON
{
  "SubAppId":           0,
  "ElementName":        "samurai-hero",
  "ElementDescription": "main character of cyberpunk short film",
  "ReferenceType":      "image_refer",
  "ElementImageList":   "{\"frontal_image\":\"https://example.com/face.png\",\"refer_images\":[{\"image_url\":\"https://example.com/a.png\"},{\"image_url\":\"https://example.com/b.png\"}]}",
  "DisableModeration":  "True"
}
필드의미
ElementName표시용 이름, 20자 이하
ElementDescription설명, 100자 이하
ReferenceTypeimage_refer (이미지 기반) 또는 video_refer (영상 기반)
ElementImageListJSON 문자열. 안에 frontal_image(정면 1장) + refer_images(다른 각도 1~3장). 객체 그대로 넘기면 거부됨
DisableModeration해외 계정에서는 "True"로 보내야 해외용 라이브러리에 등록됨
⚠️
JSON 문자열 주의
ElementImageListTagList는 객체가 아니라 JSON 문자열입니다. 응답으로 받는 TaskId(형식 {accountId}-CreateAigcAdvancedCustomElement-...t)는 등록 작업을 가리키는 임시 ID이며, 실제 캐릭터 ID는 약 30초 뒤 등록 목록 조회로 받아야 합니다.

Step 2 — 등록된 캐릭터 조회 (DescribeAigcAdvancedCustomElements)

JSON List Elements — Response
200
{
  "Response": {
    "TotalCount": 3,
    "ElementSet": [
      { "Id": "313829804205144", "Name": "samurai-hero", "Description": "...", "VoiceId": "", "CreateTime": "2026-06-19T08:38:37Z" }
    ],
    "RequestId": "..."
  }
}

여기서 받은 Id가 영상 생성 호출에 들어갈 진짜 캐릭터 ID입니다 (요청 파라미터: SubAppId, Limit, Offset).

Step 3 — 캐릭터 사용 (SubjectInfos)

등록한 캐릭터를 영상에 등장시킵니다. 프롬프트 안에서는 <<<element_1>>>, <<<element_2>>> 같은 토큰으로 SubjectInfos 배열 순서대로 참조합니다.

JSON Use Element
JSON
{
  "SubAppId":     0,
  "ModelName":    "Kling",
  "ModelVersion": "3.0-Omni",
  "SubjectInfos": [
    { "Id": "313829804205144" },
    { "Id": "313829801220307" }
  ],
  "Prompt": "let <<<element_1>>> hold <<<element_2>>>'s hand on a beach at sunset",
  "OutputConfig": { "StorageMode": "Temporary", "Resolution": "1080P", "Duration": 5 }
}
필드의미
SubjectInfos[].Id등록된 캐릭터의 Id. Kling은 필수, Vidu는 선택
SubjectInfos[].Name캐릭터 이름. Vidu는 필수(프롬프트 안 [@name]으로 참조), Kling은 선택

Step 4 — 캐릭터 삭제 (DeleteAigcAdvancedCustomElement)

JSON Delete Element
JSON
{ "SubAppId": 0, "ElementId": "313829804205144" }

해외 라이브러리의 일부 캐릭터는 FailedOperation으로 거부될 수 있습니다. 정책상 의도된 동작이며, 보통은 그대로 두면 됩니다.

7.4 Vidu 임시 캐릭터

Vidu는 사전 등록 없이 영상 호출 한 번에 캐릭터를 같이 넘기는 임시 모드를 지원합니다. 프롬프트 안에서는 [@Name] 형태로 참조합니다.

JSON Vidu Temporary Subject
JSON
{
  "SubAppId":     0,
  "ModelName":    "Vidu",
  "ModelVersion": "q2-pro",
  "SubjectInfos": [
    {
      "Name": "Princess",
      "ImageUrls": [ "https://example.com/princess-1.png", "https://example.com/princess-2.png" ]
    }
  ],
  "Prompt": "[@Princess] sits on a throne and smiles",
  "OutputConfig": { "StorageMode": "Temporary", "Resolution": "1080P", "Duration": 4 }
}
필드의미
SubjectInfos[].Name임시 캐릭터 호칭. 프롬프트 안 [@Name]으로 참조
SubjectInfos[].ImageUrls최대 3장 (해상도 128x128 이상, 비율 1:4 이내)
SubjectInfos[].VideoUrls최대 1개 5초 영상 (q2-pro 모델만)
SubjectInfos[].VoiceId음색 ID (선택)

7.5 멀티 컷 (한 영상 안에 여러 컷)

Kling 3.0 계열은 한 호출 안에서 카메라 앵글이 여러 번 바뀌는 영상을 만들 수 있습니다. 키 자체는 ExtInfo 하나지만, ExtInfo가 JSON 문자열이고 그 안의 AdditionalParameters도 또 한 번 JSON 문자열입니다 — 즉 두 번 직렬화합니다.

Python ExtInfo 구성
import json

inner = {
    "multi_shot":  True,
    "shot_type":   "customize",   # 또는 "intelligence"
    "multi_prompt": [
        { "index": 1, "prompt": "wide shot, robot enters alley", "duration": 2 },
        { "index": 2, "prompt": "close-up, robot eyes glow",     "duration": 3 }
    ]
}
ext_info = json.dumps({
    "AdditionalParameters": json.dumps(inner, ensure_ascii=False)
}, ensure_ascii=False)
필드의미
multi_shottrue멀티 컷 켜기
shot_typecustomize사용자가 컷별 프롬프트를 직접 지정
intelligence모델이 알아서 컷 분할 (이때 multi_prompt 무시, 외부 Prompt만 사용)
multi_prompt[].index1부터컷 순서
multi_prompt[].prompt문자열컷별 프롬프트 (최대 512자)
multi_prompt[].duration정수 ≥ 1컷별 길이. 모든 duration 합 = 외부 OutputConfig.Duration
  • 컷은 최소 1개, 최대 6개.
  • 모든 컷의 duration 합이 외부 OutputConfig.Duration과 같아야 합니다.

7.6 Python 호출 템플릿 (call_json)

공식 SDK의 typed 모델(models.CreateAigcVideoTaskRequest)은 SubjectInfos, LastFrameUrl, ExtInfo 같은 신규 필드를 아직 클래스 어트리뷰트로 노출하지 않는 경우가 있습니다. 가장 안전한 방법은 CommonClient.call_json(action, payload_dict)로 액션을 직접 호출하는 것입니다.

Python 등록 → ID 회수 → 영상 생성 → 폴링
import os, json, time
from tencentcloud.common import credential
from tencentcloud.common.profile.client_profile import ClientProfile
from tencentcloud.common.profile.http_profile import HttpProfile
from tencentcloud.common.common_client import CommonClient

cred = credential.Credential(
    os.environ["TENCENTCLOUD_SECRET_ID"],
    os.environ["TENCENTCLOUD_SECRET_KEY"],
)
hp = HttpProfile(); hp.endpoint = "vod.intl.tencentcloudapi.com"
cp = ClientProfile(); cp.httpProfile = hp
client = CommonClient("vod", "2018-07-17", cred, "ap-seoul", profile=cp)

# 1) 캐릭터 등록
elem_image_list = json.dumps({
    "frontal_image": "https://example.com/face.png",
    "refer_images": [
        {"image_url": "https://example.com/a.png"},
        {"image_url": "https://example.com/b.png"},
    ],
}, ensure_ascii=False)

resp = client.call_json("CreateAigcAdvancedCustomElement", {
    "SubAppId":           0,
    "ElementName":        "samurai-hero",
    "ElementDescription": "main character",
    "ReferenceType":      "image_refer",
    "ElementImageList":   elem_image_list,
    "DisableModeration":  "True",
})
register_task_id = resp["Response"]["TaskId"]

# 2) 약 30초 후 등록 목록 조회로 진짜 ID 회수
time.sleep(30)
list_resp = client.call_json("DescribeAigcAdvancedCustomElements", {"SubAppId": 0, "Limit": 50})
elem_id = next(
    e["Id"] for e in list_resp["Response"]["ElementSet"]
    if e["Name"] == "samurai-hero"
)

# 3) 캐릭터를 사용해 영상 생성
resp = client.call_json("CreateAigcVideoTask", {
    "SubAppId":     0,
    "ModelName":    "Kling",
    "ModelVersion": "3.0-Omni",
    "SubjectInfos": [{"Id": elem_id}],
    "Prompt":       "<<<element_1>>> walks through a misty bamboo forest at dawn",
    "OutputConfig": {"StorageMode": "Temporary", "Resolution": "1080P", "Duration": 5, "AspectRatio": "16:9"},
})
video_task_id = resp["Response"]["TaskId"]

# 4) 폴링 (DescribeTaskDetail → Response.AigcVideoTask)
while True:
    detail = client.call_json("DescribeTaskDetail", {"SubAppId": 0, "TaskId": video_task_id})
    avt = detail["Response"]["AigcVideoTask"]
    status = avt["Status"]                      # PROCESSING / FINISH / FAIL
    if status == "FINISH":
        print("done:", avt["Output"]["FileInfoSet"][0]["FileUrl"]); break
    if status == "FAIL":
        print("failed:", avt.get("Message")); break
    time.sleep(6)
📡
폴링 흐름
CreateAigcVideoTask 응답의 TaskIdDescribeTaskDetail로 폴링합니다. 결과는 Response.AigcVideoTask 안에 잡히며 StatusPROCESSING / FINISH / FAIL 셋 중 하나입니다. 완료 시 결과 URL은 Output.FileInfoSet[0].FileUrl에 있습니다. 폴링 간격은 6초가 적당하고, 5~10분 이상 걸리면 사실상 실패로 봐도 됩니다.

7.7 운영 메모 & 자주 보는 오류

항목내용
결과 URL 보존Temporary는 짧으면 24시간 안에 만료. 보존하려면 StorageMode: "Permanent"로 보내거나, 결과 mp4를 받아 별도 COS로 재업로드
SDK 호환신규 필드는 typed 모델에 미노출일 수 있음 → CommonClient.call_json으로 우회가 가장 안전
검수 (Compliance)해외 계정 / ap-seoul에서는 일부 InputComplianceCheck / OutputComplianceCheck 옵션이 거부됨. 게이트웨이 기본값에 맡기고 필요 시 자체 모더레이션 도입 권장
오류 코드보통의 원인
UnknownParameter키 이름이 잘못됨. 특히 단수/복수 — SubjectInfos가 맞고 SubjectInfo/Subjects는 거부됨
MissingParameter: ModelName필수 키 누락
InvalidParameterValue.ModelVersionNotSupport모델 + 버전 조합이 미지원
InvalidParameterValue.SubAppIdSubAppId가 잘못됨 (해외 계정은 보통 0 또는 본인 application id)
FailedOperation액션 자체는 통했지만 내부 처리 실패 (가짜 이미지 / 정책 위반 / 학습 실패 등)
고급 기법 요약
텍스트→비디오(Kling 3.0-Omni) · 첫 프레임→비디오(약 60초) · 첫/끝 프레임 보간(Kling 2.1, 약 30초) · 다중 참조 · 캐릭터 등록(ElementImageList JSON 문자열, 약 30초 후 ID 발급) · 캐릭터 사용(SubjectInfos) · 멀티 컷(ExtInfomulti_shot)을 지원합니다. 파라미터 키는 복수형 SubjectInfos가 정확하며, 단수 SubjectInfoUnknownParameter로 거부됩니다.

8. 과금 & 한도

💰
Pricing
Video Generation 상세 과금 정책은 담당자에게 문의해 주십시오.
ℹ️
Quota
Video Generation 한도는 SubAppId 단위로 관리됩니다. Quota 조회/설정 API와 429 응답 처리 흐름은 Text Generation 페이지의 §4. AIGC Quota 관리를 참고하십시오.
This page is intended for developer reference and is not an official Tencent webpage.

1. Music Generation Overview

오디오 생성 Task를 생성합니다. 두 가지 모드를 지원합니다: SFX (Text-to-SFX) + 음악 생성 (Text-to-Music).

API: CreateAigcAudioTask — Endpoint: vod.tencentcloudapi.com

TaskId를 받은 뒤 DescribeTaskDetail API로 결과를 조회합니다.

1.1 API 정보

POSTvod.tencentcloudapi.com
항목
Endpointvod.tencentcloudapi.com
MethodPOST
X-TC-ActionCreateAigcAudioTask
X-TC-Version2018-07-17
X-TC-Regionap-seoul (Intl 계정) / ap-guangzhou (China 계정)

1.2 지원 모델

Sound Effects (SFX, SceneType: sfx)

ModelNameModelVersion설명
KlingKling AI SFX (prompt + duration만 지원)

Music (음악, SceneType: music)

ModelNameModelVersion설명
MiniMaxMusic2.0, 2.5, 2.6MiniMax Text-to-Music (lyrics 파라미터 지원)
GL (Google Lyria)3.0-clip짧은 클립 (~30초), 처리 ~18초
GL (Google Lyria)3.0-pro풀 트랙 (~2분 36초), 처리 ~50초

2. Input Parameters

ParameterTypeDescription
ModelNamerequiredString모델 이름 (Kling / MiniMaxMusic / GL(Google Lyria))
ModelVersionoptionalString모델 버전
SceneTyperequiredStringsfx (SFX) 또는 music (음악)
PromptrequiredString생성 프롬프트
SubAppIdrequiredIntegerVOD Sub Application ID (필수. 누락 시 MissingParameter 에러)
AdditionalParametersoptionalStringJSON 형식 추가 파라미터 (예: lyrics)
OutputConfig.StorageModeoptionalStringTemporary / Permanent
OutputConfig.DurationoptionalInteger출력 길이 (초, SFX 전용)
OutputConfig.OutputAudioFormatoptionalString출력 포맷 (mp3 등, 음악 전용)

2.1 Output Parameters

ParameterTypeDescription
TaskIdString비동기 태스크 ID (DescribeTaskDetail로 결과 조회)
RequestIdString요청 고유 ID
처리 시간 가이드
• Kling SFX 6초: ~20초 이내
• Kling SFX 10초: ~30초
• MiniMaxMusic 2.0/2.5/2.6: 50~75초
• GL 3.0-clip (~30초 클립): ~20초
• GL 3.0-pro (~150초 풀 트랙): ~50초

3. Architecture

Architecture Diagram
AIGC Architecture

4. 코드 예시

4.1 Kling SFX

Kling SFX CreateAigcAudioTask
JSON
{
    "ModelName": "Kling",
    "SceneType": "sfx",
    "Prompt": "Fireworks sound during celebration",
    "OutputConfig": {
        "StorageMode": "Temporary",
        "Duration": 6
    }
}

4.2 MiniMaxMusic 2.0 음악 생성

MiniMaxMusic 2.0 CreateAigcAudioTask
JSON
{
    "ModelName": "MiniMaxMusic",
    "ModelVersion": "2.0",
    "SceneType": "music",
    "Prompt": "A cheerful pop song",
    "AdditionalParameters": "{\"lyrics\": \"Hello world, this is my song\"}",
    "OutputConfig": {
        "StorageMode": "Temporary",
        "OutputAudioFormat": "mp3"
    }
}

4.3 GL (Google Lyria) 3.0-clip

짧은 클립 전용 (~30초). 처리 시간 약 18초.

GL 3.0-clip Request — CreateAigcAudioTask
JSON
{
    "SubAppId": 0,
    "ModelName": "GL",
    "ModelVersion": "3.0-clip",
    "SceneType": "music",
    "Prompt": "Cinematic orchestral build-up, hopeful, 30-second clip",
    "OutputConfig": {
        "StorageMode": "Temporary",
        "OutputAudioFormat": "mp3"
    }
}
GL 3.0-clip Response — DescribeTaskDetail
JSON
{
    "TaskType": "AigcAudioTask",
    "Status": "FINISH",
    "CreateTime":      "2026-06-07T15:24:05Z",
    "BeginProcessTime":"2026-06-07T15:24:05Z",
    "FinishTime":      "2026-06-07T15:24:23Z",
    "AigcAudioTask": {
        "TaskId":   "***-AigcAudioTask-***t",
        "Status":   "FINISH",
        "ErrCode":  0,
        "Progress": 100,
        "Input": {
            "ModelName":     "GL",
            "ModelVersion":  "3.0-clip",
            "SceneType":     "music",
            "Prompt":        "Cinematic orchestral build-up, hopeful, 30-second clip",
            "OutputConfig":  { "StorageMode": "Temporary", "OutputAudioFormat": "mp3" }
        },
        "Output": {
            "AudioInfos": [{
                "StorageMode": "Temporary",
                "FileUrl":     "http://***.vod2.myqcloud.com/.../aigcAudioGenFile.mp3",
                "ExpireTime":  "2026-06-14T15:24:25Z",
                "MetaData": {
                    "Size":          744610,
                    "Container":     "mp3",
                    "Bitrate":       193580,
                    "Duration":      30.772,
                    "AudioStreamSet": [{ "Bitrate": 192000, "SamplingRate": 44100, "Codec": "mp3" }],
                    "AudioDuration": 30.772
                }
            }]
        }
    }
}

4.4 GL (Google Lyria) 3.0-pro

풀 트랙 생성 (~2분 36초). 처리 시간 약 50초.

GL 3.0-pro Request — CreateAigcAudioTask
JSON
{
    "SubAppId": 0,
    "ModelName": "GL",
    "ModelVersion": "3.0-pro",
    "SceneType": "music",
    "Prompt": "Energetic synth-pop instrumental with retro 80s vibes, driving drum machine, bright lead synth, full song structure",
    "OutputConfig": {
        "StorageMode": "Temporary",
        "OutputAudioFormat": "mp3"
    }
}
GL 3.0-pro Response — DescribeTaskDetail
JSON
{
    "TaskType": "AigcAudioTask",
    "Status": "FINISH",
    "CreateTime":      "2026-06-07T17:08:36Z",
    "BeginProcessTime":"2026-06-07T17:08:36Z",
    "FinishTime":      "2026-06-07T17:09:26Z",
    "AigcAudioTask": {
        "TaskId":   "***-AigcAudioTask-***t",
        "Status":   "FINISH",
        "ErrCode":  0,
        "Progress": 100,
        "Input": {
            "ModelName":     "GL",
            "ModelVersion":  "3.0-pro",
            "SceneType":     "music",
            "Prompt":        "Energetic synth-pop instrumental with retro 80s vibes, driving drum machine, bright lead synth, full song structure",
            "OutputConfig":  { "StorageMode": "Temporary", "OutputAudioFormat": "mp3" }
        },
        "Output": {
            "AudioInfos": [{
                "StorageMode": "Temporary",
                "FileUrl":     "http://***.vod2.myqcloud.com/.../aigcAudioGenFile.mp3",
                "ExpireTime":  "2026-06-14T17:09:26Z",
                "MetaData": {
                    "Size":          3748900,
                    "Container":     "mp3",
                    "Bitrate":       192311,
                    "Duration":      155.95,
                    "AudioStreamSet": [{ "Bitrate": 192000, "SamplingRate": 44100, "Codec": "mp3" }],
                    "AudioDuration": 155.951
                }
            }]
        }
    }
}

4.5 GL 모델 비교

GL 3.0-clipGL 3.0-pro
출력 길이~30초 (짧은 클립)~150초 (풀 트랙)
처리 시간~18초~50초
파일 크기 (192kbps mp3)~744 KB~3.7 MB
권장 용도BGM 인트로/스팅어, 광고 클립풀 음원, 컨텐츠 BGM, 라이센싱
GL 3.0-pro 권장 사용법
구체적인 장르/악기/구조를 prompt에 명시하십시오 (예: "with X instrument, Y BPM, full song structure"). 막연한 prompt에서는 오류가 발생할 수 있습니다.
GL 모델 주의사항
AdditionalParameterslyrics 필드는 MiniMaxMusic 전용입니다. GL 모델에 lyrics를 넣으면 ErrCode=70000 + "AudioInfos is empty"로 출력이 누락됩니다. GL은 instrumental 전용입니다.
동시 실행 제한
Audio 모델 패밀리별 동시 1 task 권장. 초과 시 ErrCode=70000으로 즉시 종료됩니다.
MiniMaxMusic 한국어 가사 지원
lyrics 필드에 한국어를 그대로 입력하면 보컬이 한국어로 발음됩니다.
결과 조회
DescribeTaskDetail API로 TaskId를 조회하여 결과를 확인합니다.

5. 과금 안내

💰
Pricing
요금 관련 상세 정보는 AIGC 가격 가이드를 참고하십시오.
This page is intended for developer reference and is not an official Tencent webpage.
ℹ️ Intl 계정: VOD endpoint(vod.tencentcloudapi.com) + region ap-seoul로 정상 호출 가능. China 계정: region ap-guangzhou. 어느 경우든 SubAppId는 필수.

1. 3D Generation Overview

Hunyuan 3D World Model (Hunyuan 3D World Model)을 사용한 3D 콘텐츠 생성입니다. 두 가지 모드를 지원합니다:

1. 360 전경도 (Panorama): CreateAigcImageTask — SceneType: 3d_panorama

2. 3D 모델/장면 생성: CreateAigcVideoTask — SceneType: 3d_scene

1.1 API 정보

360 Panorama

POSTvod.tencentcloudapi.com
항목
X-TC-ActionCreateAigcImageTask
ModelNameHunyuan
ModelVersion3d_2.0
SceneType3d_panorama

3D Scene/Model

POSTvod.tencentcloudapi.com
항목
X-TC-ActionCreateAigcVideoTask
ModelNameHunyuan
ModelVersion3d_2.0
SceneType3d_scene

1.2 모델 기능

ModeInputOutputUse Case
세계 생성 (Text/Image→3D)텍스트 프롬프트 (사실/카툰/고풍/SF 등), 단일 이미지 (사진/스케치/손그림)360° 가상 3DGS/Mesh 장면, 자유 이동·물리 충돌 지원, Unity/UE 엔진 임포트 가능게임 레벨, VR 공간, 인테리어, 문화 창작
세계 재건 (실경 3D 복제)다시점 이미지 또는 단편 비디오 (환형 촬영)1:1 고충실도 디지털 트윈, 측량·편집·시뮬레이션 가능산업 트윈, 문화재 디지털화, 부동산 샘플룸
전경도 합성 (360 Panorama)텍스트 / 단일 투시 이미지무봉합 360° ERP 전경도VR/AR, 영상 배경, 가상 라이브

1.3 출력 사양

항목
출력 포맷3DGS (Gaussian Splatting), Mesh (GLB/FBX/OBJ), PLY (포인트 클라우드), 전경 비디오
생성 속도텍스트→3D: 3~8분 / 이미지·비디오 재건: 5~15분
엔진 호환Unity / Unreal Engine 네이티브 지원
오픈소스2026.04.16 오픈소스 (모델 가중치 + 추론 코드 + 기술 백서, 상업 가능)

2. Parameters — Panorama (CreateAigcImageTask)

ParameterTypeDescription
SubAppIdrequiredIntegerVOD Sub Application ID (필수. 누락 시 MissingParameter 에러)
ModelNamerequiredStringHunyuan
ModelVersionrequiredString3d_2.0
SceneTyperequiredString3d_panorama
PromptrequiredString생성 프롬프트
FileInfos.NoptionalArray입력 이미지
OutputConfig.StorageModeoptionalStringTemporary / Permanent

3. Parameters — 3D Scene (CreateAigcVideoTask)

ParameterTypeDescription
SubAppIdrequiredIntegerVOD Sub Application ID (필수. 누락 시 MissingParameter 에러)
ModelNamerequiredStringHunyuan
ModelVersionrequiredString3d_2.0
SceneTyperequiredString3d_scene
PromptrequiredString생성 프롬프트
FileInfos.NoptionalArray입력 이미지
OutputConfig.StorageModeoptionalStringTemporary / Permanent
OutputConfig.DurationoptionalInteger출력 길이 (초)
OutputConfig.ResolutionoptionalString1080P
OutputConfig.AudioGenerationoptionalStringEnabled / Disabled

4. Architecture

Architecture Diagram
AIGC Architecture

5. 코드 예시

5.1 360 Panorama

Hunyuan 3D CreateAigcImageTask (Panorama)
JSON
{
    "SubAppId": 1500044236,
    "ModelName": "Hunyuan",
    "ModelVersion": "3d_2.0",
    "Prompt": "A futuristic cyberpunk city at night with neon lights",
    "OutputConfig": {
        "StorageMode": "Permanent"
    },
    "SceneType": "3d_panorama"
}

5.2 3D Scene Generation

Hunyuan 3D CreateAigcVideoTask (3D Scene)
JSON
{
    "SubAppId": 1500044236,
    "ModelName": "Hunyuan",
    "ModelVersion": "3d_2.0",
    "Prompt": "A traditional Korean hanok village surrounded by autumn foliage, photorealistic rendering, 8K resolution",
    "OutputConfig": {
        "StorageMode": "Temporary",
        "Duration": 16,
        "Resolution": "1080P",
        "AudioGeneration": "Enabled"
    },
    "SceneType": "3d_scene"
}
Status 처리 주의
종료 상태는 FINISH 또는 DONE 둘 다 가능합니다 (호출 경로에 따라 상이). 반드시 양쪽 모두 체크하십시오. 또한 ErrCode가 0이 아니면 실패이므로 Status만으로 성공을 판단하지 마세요.
처리 시간 가이드
Panorama: 약 1분 (58~74초)
Scene (3D Video): 5~15분 이상 (단순 5초 1080P도 25분+ 소요 케이스 관측)
동시 실행 제한
모델 패밀리(Image/Video)별 동시 1 task 권장. 초과 시 Status=FINISH + ErrCode=70000 + "Generate task reached the maximum concurrency."로 즉시 종료됩니다. ErrCode 검사가 필수입니다.

6. 과금 안내

💰
Pricing
요금 관련 상세 정보는 AIGC 가격 가이드를 참고하십시오.
This page is intended for developer reference and is not an official Tencent webpage.
ℹ️ 담당자에게 MPS로 사용을 안내받은 경우에만 아래 내용을 참고해주십시오.

1. MPS AIGC Overview

MPS(Media Processing Service) 엔드포인트를 통한 AIGC 콘텐츠 생성 가이드입니다. MPaaS AIGC(VOD 엔드포인트)와 동일한 모델 패밀리를 사용하며, 인증 방식(TC3-HMAC-SHA256)과 파라미터 구조가 다릅니다. 본 문서의 모든 스키마는 실제 호출로 검증되었습니다.

MPaaS AIGC vs MPS AIGC
MPaaS AIGC (VOD)MPS AIGC
Endpointvod.tencentcloudapi.commps.intl.tencentcloudapi.com
인증AIGC API Token (Bearer)SecretId/SecretKey (TC3-HMAC-SHA256)
결과 저장SubAppId 내 미디어임시 URL(약 12h) 또는 StoreCosParam(영구 COS)
SDKtencentcloud-sdk-python (vod)tencentcloud-sdk-python (mps)
API Version2018-07-172019-06-12

1.1 공통 API 정보

항목
Endpointmps.intl.tencentcloudapi.com
API Version2019-06-12
Regionap-seoul (Intl) / ap-guangzhou (China)
인증TC3-HMAC-SHA256 (SecretId + SecretKey)
MethodPOST
Content-Typeapplication/json

1.2 지원 모델 — Image

모델명설명버전
GEMNano Banana — 고품질 범용 이미지 생성2.5 3.0 3.1
OG1K/2K/4K 해상도 이미지 생성image2_low image2_medium image2_high
QwenQwen 이미지 생성0925
Seedream고해상도 AI 아트 생성4.5 5.0-lite
Kling이미지 생성 + Outpainting2.1 3.0 3.0-Omni scene
Vidu고품질 이미지 생성q2
JimengJimeng 이미지 생성 엔진4.0
MJ (Midjourney)고품질 아트 이미지, 참조 + Prompt 기반v7
GPT-Image2OpenAI 이미지 생성/편집, 마스크, 투명 레이어gpt-image-2

1.3 지원 모델 — Video

모델명설명버전
Kling전체 모델 영상 — Text/Image/Reference/Motion Control/Lip Sync/Multi-shot/Outpainting1.6 2.0 2.1 2.5 2.6 3.0 3.0-Omni O1 3.0-motion-control
ViduText/Image/First+Last Frame/Reference/Custom Subjectq2 q2-turbo q2-pro q3 q3-pro q3-turbo q3-mix
Hailuo (MiniMax Video)고품질 영상 생성02 2.3 2.3-fast
GV (Google Veo)Google AI 영상 생성, 오디오 지원3.1 3.1-fast
OS (OpenAI Sora)OpenAI 영상 생성2.0
JimengJimeng 영상 생성 엔진3.0pro
Seedance고품질 영상 생성1.0-pro 1.0-lite-i2v 1.0-pro-fast 1.5-pro
MingmouMingmou 영상 생성1.0
H2H2 영상 생성 엔진1.0

1.4 Action 목록

Action기능비고
CreateAigcImageTask이미지 생성 태스크 생성비동기 (TaskId 반환)
CreateAigcVideoTask비디오 생성 태스크 생성비동기 (TaskId 반환)
DescribeAigcImageTask이미지 태스크 결과 조회TaskId로 폴링
DescribeAigcVideoTask비디오 태스크 결과 조회TaskId로 폴링
DescribeUsageData미디어 처리 사용량 통계StartTime/EndTime 구간 집계

2. CreateAigcImageTask

AIGC 이미지 생성 태스크를 생성합니다. 비동기 방식으로 TaskId를 반환하며, DescribeAigcImageTask로 결과를 조회합니다.

2.1 Input Parameters

ParameterTypeDescription
ModelNamerequiredString모델명 (GEM, Kling, Seedream, Qwen, Jimeng, MJ, Vidu, OG 등)
ModelVersionoptionalString모델 버전 (예: 3.1, 5.0-lite, 3.0-Omni)
PromptrequiredString생성 프롬프트
NegativePromptoptionalString제외할 요소 (네거티브 프롬프트)
EnhancePromptoptionalBoolean프롬프트 자동 보강 여부
ImageInfos.NoptionalArray of Object참조 이미지 (Image-to-Image, 편집)
ImageInfos.N.ImageUrlrequiredString참조 이미지 URL
StoreCosParamoptionalObject영구 COS 저장 설정. 미지정 시 약 12시간 유효한 임시 URL 반환 (별도 MPS_QcsRole 권한 필요)
AdditionalParametersoptionalStringJSON 문자열 추가 파라미터. 예: {"size":"2048x2048"} (Seedream은 최소 3,686,400 px 이상 필요)

2.2 Output Parameters

ParameterTypeDescription
TaskIdString태스크 고유 ID (DescribeAigcImageTask에 사용)
RequestIdString요청 고유 ID

2.3 호출 예시

Python CreateAigcImageTask
Python
import json
from tencentcloud.common import credential
from tencentcloud.common.profile.client_profile import ClientProfile
from tencentcloud.common.profile.http_profile import HttpProfile
from tencentcloud.mps.v20190612 import mps_client, models

cred = credential.Credential("YOUR_SECRET_ID", "YOUR_SECRET_KEY")
httpProfile = HttpProfile()
httpProfile.endpoint = "mps.intl.tencentcloudapi.com"
clientProfile = ClientProfile()
clientProfile.httpProfile = httpProfile
client = mps_client.MpsClient(cred, "ap-seoul", clientProfile)

req = models.CreateAigcImageTaskRequest()
params = {
    "ModelName": "Seedream",
    "ModelVersion": "5.0-lite",
    "Prompt": "A serene zen garden with cherry blossoms, soft morning light",
    "EnhancePrompt": True,
    "AdditionalParameters": json.dumps({"size": "2048x2048"})
}
req.from_json_string(json.dumps(params))
resp = client.CreateAigcImageTask(req)
print(resp.to_json_string())
# {"TaskId": "2600012260-AigcImage-743691...", "RequestId": "c3cef9a9-..."}
CLI tccli
Shell
tccli mps CreateAigcImageTask \
  --endpoint mps.intl.tencentcloudapi.com \
  --region ap-seoul \
  --ModelName "GEM" \
  --ModelVersion "3.1" \
  --Prompt "A serene mountain landscape with cherry blossoms" \
  --EnhancePrompt True \
  --AdditionalParameters '{"size":"2048x2048"}'
Response CreateAigcImageTask
JSON
{
    "Response": {
        "RequestId": "c3cef9a9-66af-4735-a6eb-ef03019b75f4",
        "TaskId": "2600012260-AigcImage-743691911ecf4003a5ed2f25343fc38f"
    }
}

3. CreateAigcVideoTask

AIGC 비디오 생성 태스크를 생성합니다. 비동기 방식으로 TaskId를 반환하며, DescribeAigcVideoTask로 결과를 조회합니다.

3.1 Input Parameters

ParameterTypeDescription
ModelNamerequiredString모델명 (Kling, Vidu, Hailuo, GV, OS, Seedance, Jimeng 등)
ModelVersionoptionalString모델 버전 (예: 3.0-turbo, q3, q3-drama)
PromptrequiredString생성 프롬프트
NegativePromptoptionalString제외할 요소
EnhancePromptoptionalBoolean프롬프트 자동 보강 여부
ImageInfos.NoptionalArray of Object참조 이미지 (First/Last Frame, Reference)
ImageInfos.N.ImageUrlrequiredString참조 이미지 URL
StoreCosParamoptionalObject영구 COS 저장 설정. 미지정 시 약 12시간 유효한 임시 URL 반환 (MPS_QcsRole 권한 필요)
AdditionalParametersoptionalStringJSON 문자열. 예: {"duration":5,"resolution":"1080P","aspect_ratio":"16:9"}

3.2 Output Parameters

ParameterTypeDescription
TaskIdString태스크 고유 ID (DescribeAigcVideoTask에 사용)
RequestIdString요청 고유 ID

3.3 호출 예시

Python CreateAigcVideoTask
Python
import json
from tencentcloud.common import credential
from tencentcloud.common.profile.client_profile import ClientProfile
from tencentcloud.common.profile.http_profile import HttpProfile
from tencentcloud.mps.v20190612 import mps_client, models

cred = credential.Credential("YOUR_SECRET_ID", "YOUR_SECRET_KEY")
httpProfile = HttpProfile()
httpProfile.endpoint = "mps.intl.tencentcloudapi.com"
clientProfile = ClientProfile()
clientProfile.httpProfile = httpProfile
client = mps_client.MpsClient(cred, "ap-seoul", clientProfile)

req = models.CreateAigcVideoTaskRequest()
params = {
    "ModelName": "Kling",
    "ModelVersion": "3.0-turbo",
    "Prompt": "A cat walking gracefully on a sunny windowsill, cinematic",
    "ImageInfos": [{
        "ImageUrl": "https://example.com/cat-photo.jpg"
    }],
    "AdditionalParameters": json.dumps({
        "duration": 5,
        "resolution": "1080P",
        "aspect_ratio": "16:9"
    })
}
req.from_json_string(json.dumps(params))
resp = client.CreateAigcVideoTask(req)
print(resp.to_json_string())
# {"TaskId": "2600012260-AigcVideo-xxxx", "RequestId": "..."}
CLI tccli
Shell
tccli mps CreateAigcVideoTask \
  --endpoint mps.intl.tencentcloudapi.com \
  --region ap-seoul \
  --ModelName "Kling" \
  --ModelVersion "3.0-turbo" \
  --Prompt "Ocean waves crashing on rocks at sunset, cinematic" \
  --AdditionalParameters '{"duration":5,"resolution":"1080P","aspect_ratio":"16:9"}'
Response CreateAigcVideoTask
JSON
{
    "Response": {
        "RequestId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
        "TaskId": "2600012260-AigcVideo-9f8e7d6c5b4a39281706f5e4d3c2b1a0"
    }
}

4. DescribeAigcImageTask

CreateAigcImageTask로 생성한 이미지 태스크의 상태와 결과를 조회합니다. Status가 DONE(성공) 또는 FAIL(실패)이 될 때까지 폴링합니다.

4.1 Input Parameters

ParameterTypeDescription
TaskIdrequiredStringCreateAigcImageTask에서 반환된 TaskId

4.2 Output Parameters

ParameterTypeDescription
StatusStringWAIT (대기) / RUN (처리 중) / DONE (성공) / FAIL (실패)
ImageUrlsArray of String생성된 이미지 URL 목록. 성공 시 채워지며, StoreCosParam 미지정 시 약 12시간 유효한 프리사인 COS URL
MessageString성공 시 "ok", 실패 시 에러 메시지
RequestIdString요청 ID

4.3 Response 예시

Response DescribeAigcImageTask (DONE)
JSON
{
    "Response": {
        "Status": "DONE",
        "ImageUrls": [
            "https://aigc-output-image-***.cos.ap-guangzhou.myqcloud.com/.../2600012260-AigcImage-***_0.jpg?q-sign-algorithm=sha1&q-ak=***&q-sign-time=***"
        ],
        "Message": "ok",
        "RequestId": "bf66c45d-2324-417f-a545-d3b60bde2645"
    }
}
실패 판정
Status=FAIL이면 ImageUrls는 빈 배열이고 Message에 사유가 담깁니다. 예: 잘못된 size 지정 시 "image size must be at least 3686400 pixels". 성공 시 Status=DONE, Message="ok"입니다.

5. DescribeAigcVideoTask

CreateAigcVideoTask로 생성한 비디오 태스크의 상태와 결과를 조회합니다.

5.1 Input Parameters

ParameterTypeDescription
TaskIdrequiredStringCreateAigcVideoTask에서 반환된 TaskId

5.2 Output Parameters

ParameterTypeDescription
StatusStringWAIT (대기) / RUN (처리 중) / DONE (성공) / FAIL (실패)
VideoUrlsArray of String생성된 비디오 URL 목록. StoreCosParam 미지정 시 약 12시간 유효한 프리사인 COS URL
ResolutionString실제 출력 해상도 (예: 1920x1088)
MessageString성공 시 "ok", 실패 시 에러 메시지
RequestIdString요청 ID

5.3 Response 예시

Response DescribeAigcVideoTask (DONE)
JSON
{
    "Response": {
        "Status": "DONE",
        "VideoUrls": [
            "https://aigc-output-video-***.cos.ap-guangzhou.myqcloud.com/.../2600012260-AigcVideo-***_0.mp4?q-sign-algorithm=sha1&q-ak=***&q-sign-time=***"
        ],
        "Resolution": "1920x1088",
        "Message": "ok",
        "RequestId": "7e6d5c4b-3a29-1807-f6e5-d4c3b2a10987"
    }
}

6. DescribeUsageData

MPS 미디어 처리 사용량 통계를 조회합니다. AIGC를 포함한 작업 유형(TaskType)별로 집계되며, 지정한 시간 구간(StartTime~EndTime)에 대해 반환됩니다.

6.1 Input Parameters

ParameterTypeDescription
StartTimerequiredString조회 시작 시간 (ISO 8601, 예: 2026-06-01T00:00:00+09:00)
EndTimerequiredString조회 종료 시간 (시작과 동일 일자 권장)

6.2 Output Parameters

ParameterTypeDescription
DataArray of Object작업 유형별 사용량 배열
Data[].TaskTypeString작업 유형 (예: Transcode, AiContentReview 등)
Data[].SummaryArray of Object구간별 집계
Data[].Summary[].TimeString시간 구간
Data[].Summary[].CountInteger작업 건수
Data[].Summary[].UsageInteger사용량
RequestIdString요청 ID

6.3 호출 예시

CLI tccli
Shell
tccli mps DescribeUsageData \
  --endpoint mps.intl.tencentcloudapi.com \
  --region ap-seoul \
  --StartTime "2026-06-01T00:00:00+09:00" \
  --EndTime "2026-06-01T23:59:59+09:00"
Response DescribeUsageData
JSON
{
    "Response": {
        "Data": [
            {
                "TaskType": "Transcode",
                "Summary": [
                    {"Time": "2026-06-01T00:00:00+09:00", "Count": 12, "Usage": 12}
                ]
            }
        ],
        "RequestId": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
    }
}

7. Polling Pattern (공통)

Image/Video 모두 비동기 방식입니다. Create 후 Describe를 반복 호출하여 결과를 확인합니다.

Python Polling Pattern
Python
import time, json
from tencentcloud.mps.v20190612 import mps_client, models

# ... client setup omitted (see above) ...

# After CreateAigcImageTask / CreateAigcVideoTask:
task_id = "your-task-id-here"

while True:
    # For Image:
    req = models.DescribeAigcImageTaskRequest()
    # For Video: req = models.DescribeAigcVideoTaskRequest()
    req.from_json_string(json.dumps({"TaskId": task_id}))
    resp = json.loads(client.DescribeAigcImageTask(req).to_json_string())
    # For Video: resp = json.loads(client.DescribeAigcVideoTask(req).to_json_string())

    status = resp.get("Status", "")

    if status == "DONE":
        # Success - extract URLs
        urls = resp.get("ImageUrls", [])      # For Video: resp.get("VideoUrls", [])
        print(f"Result: {urls[0]}")
        break
    elif status == "FAIL":
        raise RuntimeError(f"Task failed: {resp.get('Message')}")
    else:  # WAIT / RUN
        print(f"Status: {status} ...")
        time.sleep(6)
동시 실행 제한
모델 패밀리(Image/Video)별 동시 1 task 권장. 한도 초과 시 Create 호출 단계에서 RequestLimitExceeded 에러가 반환됩니다. 약 30초 후 재시도하면 정상 처리됩니다.
This page is intended for developer reference and is not an official Tencent webpage.
🎬 VOD(Video on Demand) 콘솔 최초 진입부터 애플리케이션 생성 · SubAppId 획득 · 트랜스코딩 · CDN(EdgeOne) 연동까지의 스텝바이스텝 온보딩 가이드입니다.

1. Overview

Tencent Cloud VOD(Video on Demand)는 영상 업로드 · 저장 · 트랜스코딩 · 가속 배포(CDN)를 제공하는 미디어 서비스입니다. 본 가이드는 콘솔에 처음 진입한 사용자가 다음 순서로 초기 설정을 완료하는 과정을 다룹니다.

  1. VOD 서비스 활성화 (Activate)
  2. 서브 애플리케이션(Subapplication) 모드 활성화
  3. 애플리케이션 생성 및 SubAppId 획득
  4. 영상 업로드
  5. 간단한 트랜스코딩 실행
  6. EdgeOne CDN 가속 도메인 연동
사전 준비
Tencent Cloud 계정(인증 완료)과 콘솔 로그인이 필요합니다. 국제 버전(intl) 콘솔 기준으로 설명합니다.

2. Step 1 — VOD 서비스 활성화

콘솔 상단 메뉴에서 Products › Video Services › Video on Demand로 이동합니다. 최초 진입 시 서비스 활성화(Activate) 안내가 표시됩니다.

  1. 콘솔 우측 상단 검색창에 Video on Demand 입력 후 진입
  2. Activate Now 버튼 클릭
  3. 약관 동의 후 활성화 완료 — 콘솔 대시보드로 전환됩니다
기본 애플리케이션 APPID
활성화하면 계정 APPID와 동일한 기본 애플리케이션(Default App)이 자동 생성됩니다. APPID는 Account › Account Info에서 확인할 수 있습니다.

3. Step 2 — 서브 애플리케이션 모드 활성화

여러 비즈니스/환경을 격리하려면 서브 애플리케이션(Subapplication) 모드를 활성화합니다. 활성화 후 각 애플리케이션은 독립된 SubAppId로 리소스가 분리됩니다.

  1. VOD 콘솔 좌측 메뉴에서 Application Management 진입
  2. Activate Subapplication 클릭
  3. 안내 팝업에서 Use Now 선택
  4. 서브 애플리케이션 관리에 필요한 Admin Role(관리 역할) 권한 부여에 동의

4. Step 3 — 애플리케이션 생성 & SubAppId 획득

서브 애플리케이션 모드가 활성화되면 새 애플리케이션을 생성하고, 생성된 애플리케이션의 SubAppId를 확인합니다. 이후 모든 API 호출 시 이 SubAppId를 지정합니다.

  1. Application Management 화면에서 Create Application 클릭
  2. 애플리케이션 이름(예: my-vod-app)과 설명 입력 후 생성
  3. 애플리케이션 목록에서 생성된 항목의 SubAppId(숫자)를 복사 — 콘솔에 노출됩니다

4.1 CLI로 생성/조회 (선택)

CLI CreateSubAppId / DescribeSubAppIds
Shell
# 서브 애플리케이션 생성
tccli vod CreateSubAppId \
  --region ap-seoul \
  --Name "my-vod-app" \
  --Description "Demo VOD application"

# 생성된 SubAppId 목록 조회
tccli vod DescribeSubAppIds --region ap-seoul

5. Step 4 — 영상 업로드

애플리케이션이 준비되면 영상을 업로드합니다. 콘솔에서 직접 업로드하거나, URL 풀(Pull) 업로드를 사용할 수 있습니다.

5.1 콘솔 업로드

  1. 대상 애플리케이션 선택 (좌측 상단 애플리케이션 전환 드롭다운)
  2. Media Assets › Video Management 진입
  3. Upload Video 클릭 → 로컬 파일 선택 → 업로드

5.2 URL Pull 업로드 (CLI)

CLI PullUpload
Shell
tccli vod PullUpload \
  --region ap-seoul \
  --SubAppId 1500000000 \
  --MediaUrl "https://example.com/sample.mp4" \
  --MediaName "sample-video"

6. Step 5 — 간단한 트랜스코딩

업로드한 영상을 표준 트랜스코딩 템플릿으로 변환합니다. 변환이 완료되면 각 출력 규격별 재생 URL을 얻을 수 있습니다.

  1. 업로드된 영상 항목에서 Process Video 클릭
  2. Transcoding 탭 선택 후 트랜스코딩 템플릿 선택 (예: H.264 · 720P)
  3. OK으로 작업 제출 → 상태가 Processing → Completed로 전환
  4. 완료 후 Manage → 트랜스코딩 출력의 재생 URL 복사

6.1 CLI 트랜스코딩 (선택)

CLI ProcessMedia
Shell
tccli vod ProcessMedia \
  --region ap-seoul \
  --SubAppId 1500000000 \
  --FileId "5285890799710174442" \
  --MediaProcessTask '{"TranscodeTaskSet":[{"Definition":100}]}'
템플릿 ID(Definition)
Definition은 트랜스코딩 템플릿 ID입니다. 시스템 기본 템플릿 또는 Template Settings에서 만든 커스텀 템플릿 ID를 사용합니다.

7. Step 6 — EdgeOne CDN 가속 도메인 연동

기본 재생 도메인 대신 EdgeOne 가속 도메인을 연동하면 더 빠른 글로벌 배포가 가능합니다. EdgeOne에서 도메인을 추가한 뒤, VOD에 해당 도메인을 가져오는(import) 순서로 진행합니다.

7.1 EdgeOne에 도메인 추가

  1. EdgeOne 콘솔 › Site List에서 대상 사이트 선택
  2. Domain Name Service › Domain Management 진입
  3. Add Domain 클릭 → 가속 도메인 입력
  4. Origin(오리진) 타입을 Video on Demand (VOD)로 선택, 대상 VOD 애플리케이션 지정
  5. 발급된 CNAME 값을 도메인 DNS에 등록

7.2 VOD에 EdgeOne 도메인 가져오기

  1. VOD 콘솔 › Distribution and Playback › Domain Name 진입
  2. Add DomainImport existing EdgeOne domain 선택
  3. 앞서 추가한 EdgeOne 도메인을 선택 후 가져오기
  4. 도메인 상태가 Deployed가 되면 재생 도메인으로 사용 가능

7.3 재생 인증(Key) 주의

토큰 인증 방식
EdgeOne 연동 도메인에서 VOD 재생 보호(Key Hotlink Protection)를 사용할 경우, VOD는 Type V 토큰 인증만 지원합니다. 재생 서명 생성 시 이 방식에 맞춰 URL을 발급하십시오.

8. References

문서링크
VOD Getting Startedwww.tencentcloud.com/document/product/266/8757
Subapplication Systemwww.tencentcloud.com/document/product/266/33987
Add Acceleration Domainwww.tencentcloud.com/document/product/266/56731
Using EdgeOne with VODwww.tencentcloud.com/document/product/266/66749
This page is intended for developer reference and is not an official Tencent webpage.
This page is intended for developer reference and is not an official Tencent webpage.