검수 차단 사유 조회
curl --request GET \
--url https://api.gravitex.ai/v1/video/generations/moderation-result/{task_id} \
--header 'Authorization: <authorization>'import requests
url = "https://api.gravitex.ai/v1/video/generations/moderation-result/{task_id}"
headers = {"Authorization": "<authorization>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: '<authorization>'}};
fetch('https://api.gravitex.ai/v1/video/generations/moderation-result/{task_id}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.gravitex.ai/v1/video/generations/moderation-result/{task_id}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: <authorization>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.gravitex.ai/v1/video/generations/moderation-result/{task_id}"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "<authorization>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.gravitex.ai/v1/video/generations/moderation-result/{task_id}")
.header("Authorization", "<authorization>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.gravitex.ai/v1/video/generations/moderation-result/{task_id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = '<authorization>'
response = http.request(request)
puts response.read_bodySeedance 2.0(/generations)
검수 차단 사유 조회
GET /v1/video/generations/moderation-result/
GET
/
v1
/
video
/
generations
/
moderation-result
/
{task_id}
검수 차단 사유 조회
curl --request GET \
--url https://api.gravitex.ai/v1/video/generations/moderation-result/{task_id} \
--header 'Authorization: <authorization>'import requests
url = "https://api.gravitex.ai/v1/video/generations/moderation-result/{task_id}"
headers = {"Authorization": "<authorization>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: '<authorization>'}};
fetch('https://api.gravitex.ai/v1/video/generations/moderation-result/{task_id}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.gravitex.ai/v1/video/generations/moderation-result/{task_id}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: <authorization>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.gravitex.ai/v1/video/generations/moderation-result/{task_id}"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "<authorization>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.gravitex.ai/v1/video/generations/moderation-result/{task_id}")
.header("Authorization", "<authorization>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.gravitex.ai/v1/video/generations/moderation-result/{task_id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = '<authorization>'
response = http.request(request)
puts response.read_body소개
Seedance 2.0 작업이 콘텐츠 안전 / 저작권 / 공인 / 실인물 얼굴 정책으로failed된 경우, GET /v1/video/generations/{task_id}는 일반적인 오류만 반환할 수 있습니다. 업스트림 차단 카테고리와 세부 정보는 이 엔드포인트를 사용하세요.
기본적으로 비활성화—BytePlus 화이트리스트 필요. BytePlus 영업팀에 문의하고 관리자가 채널에서 “moderation result query”를 활성화해야 합니다. 미활성화 시:
403 channel_not_whitelisted.인증
string
필수
Bearer Token, 예:
Bearer sk-xxxxxxxxxx경로 매개변수
string
필수
실패한 작업의
task_id(seedance-2-0 / seedance-2-0-fast만 해당)제한
| 제한 | 설명 |
|---|---|
| 모델 | seedance-2-0 시리즈 실패 작업만 |
| 시간 창 | 생성 후 14일 이내; 초과 시 400 query_window_expired |
| 상태 | failed만 해당; 그 외 400 invalid_task_status |
| 소유권 | 본인 작업만(토큰 user_id) |
| 속도 | 채널당 10 QPM; 429 rate_limited |
| 캐시 | 첫 성공 조회가 저장됨; 반복 조회는 "cached": true 반환, QPM 소비 없음 |
예제
curl "https://api.gravitex.ai/v1/video/generations/moderation-result/cgt-20260430135030-xxxxx" \
-H "Authorization: Bearer sk-xxxxxxxxxx"
응답
{
"task_id": "cgt-20260430135030-xxxxx",
"block_reasons": [
{
"label": "Celebrity",
"sub_label": "Celebrity",
"detail": "Potentially contains Public Figures."
},
{
"label": "Copyright",
"sub_label": "IP",
"detail": "Potential copyright restriction. Potentially related content: Spider-Man: Homecoming-Peter Parker"
}
],
"cached": false,
"queried_at": 1715140800
}
block_reasons 필드
| 필드 | 설명 |
|---|---|
label | 카테고리: Safety / Copyright / Celebrity / Deepfake |
sub_label | 하위 카테고리: Safety; Copyright 하위 IP / Other; Celebrity; Deepfake 하위 RealHuman |
detail | 사람이 읽을 수 있는 세부 정보; IP 또는 공인 이름 포함 가능 |
일반적인 오류
| HTTP | error.type | 의미 |
|---|---|---|
400 | invalid_request | task_id 누락 |
400 | invalid_task_status | 작업이 failed가 아님; 조회할 검수 차단 없음 |
400 | unsupported_model | seedance-2-0 시리즈가 아님 |
400 | query_window_expired | 14일 조회 창 밖 |
403 | channel_not_whitelisted | 채널에서 검수 결과 조회 미활성화 |
404 | not_found | 작업 없음, 또는 업스트림 NotFound.Id(검수 차단 아님 / 잘못된 ID / 채널 미화이트리스트) |
429 | rate_limited | 채널 10 QPM 제한 초과; 나중에 재시도 |
502 | upstream_error | 404가 아닌 업스트림 오류; error.message 참조 |
{
"error": {
"message": "moderation query is not enabled on this channel; please contact admin to apply for BytePlus whitelist activation",
"type": "channel_not_whitelisted"
}
}
block_reasons배열이 비어 있으면 작업이failed였지만 검수에 의해 차단되지 않음(다른 실패 원인).
⌘I
