자산 그룹 생성(실인물)
curl --request POST \
--url https://api.gravitex.ai/api/v3/seedance \
--header 'Authorization: <authorization>' \
--header 'Content-Type: application/json' \
--data '
{
"CallbackURL": "<string>",
"ProjectName": "<string>"
}
'import requests
url = "https://api.gravitex.ai/api/v3/seedance"
payload = {
"CallbackURL": "<string>",
"ProjectName": "<string>"
}
headers = {
"Authorization": "<authorization>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: '<authorization>', 'Content-Type': 'application/json'},
body: JSON.stringify({CallbackURL: '<string>', ProjectName: '<string>'})
};
fetch('https://api.gravitex.ai/api/v3/seedance', 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/api/v3/seedance",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'CallbackURL' => '<string>',
'ProjectName' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"Authorization: <authorization>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.gravitex.ai/api/v3/seedance"
payload := strings.NewReader("{\n \"CallbackURL\": \"<string>\",\n \"ProjectName\": \"<string>\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "<authorization>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.gravitex.ai/api/v3/seedance")
.header("Authorization", "<authorization>")
.header("Content-Type", "application/json")
.body("{\n \"CallbackURL\": \"<string>\",\n \"ProjectName\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.gravitex.ai/api/v3/seedance")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = '<authorization>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"CallbackURL\": \"<string>\",\n \"ProjectName\": \"<string>\"\n}"
response = http.request(request)
puts response.read_bodySeedance 2.0(/generations/tasks)
자산 그룹 생성(실인물)
CreateVisualValidateSession — 실인물 검증 세션 시작
POST
/
api
/
v3
/
seedance
자산 그룹 생성(실인물)
curl --request POST \
--url https://api.gravitex.ai/api/v3/seedance \
--header 'Authorization: <authorization>' \
--header 'Content-Type: application/json' \
--data '
{
"CallbackURL": "<string>",
"ProjectName": "<string>"
}
'import requests
url = "https://api.gravitex.ai/api/v3/seedance"
payload = {
"CallbackURL": "<string>",
"ProjectName": "<string>"
}
headers = {
"Authorization": "<authorization>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: '<authorization>', 'Content-Type': 'application/json'},
body: JSON.stringify({CallbackURL: '<string>', ProjectName: '<string>'})
};
fetch('https://api.gravitex.ai/api/v3/seedance', 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/api/v3/seedance",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'CallbackURL' => '<string>',
'ProjectName' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"Authorization: <authorization>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.gravitex.ai/api/v3/seedance"
payload := strings.NewReader("{\n \"CallbackURL\": \"<string>\",\n \"ProjectName\": \"<string>\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "<authorization>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.gravitex.ai/api/v3/seedance")
.header("Authorization", "<authorization>")
.header("Content-Type", "application/json")
.body("{\n \"CallbackURL\": \"<string>\",\n \"ProjectName\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.gravitex.ai/api/v3/seedance")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = '<authorization>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"CallbackURL\": \"<string>\",\n \"ProjectName\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body소개
H5 실인물 검증 세션을 시작합니다. 실인물 자산 그룹(GroupType = LivenessFace)은 CreateAssetGroup으로 생성할 수 없습니다(강제로 AIGC로 덮어씀). 이 흐름을 통해서만 생성할 수 있습니다.
가상 자산 라이브러리와 동일한 Asset/AssetGroup Action 세트를 공유합니다. 검증을 통과하고 GroupId를 받은 후, 추가/삭제/수정/조회는 AIGC와 완전히 동일합니다.
응답 형식이 다른 Action과 다릅니다: 원본 평면 구조이며
{ResponseMetadata, Result} 봉투가 아닙니다.할당량 확인은 이 단계에서 수행됩니다: 상한 초과 시
403이 반환되며, ResponseMetadata.Error.Code = "QuotaExceeded", H5 검증 링크는 생성되지 않습니다.인증
string
필수
Bearer Token, 예:
Bearer sk-your_token_key요청 매개변수
string
어떤 값을 전달해도 고정된 콜백 페이지 주소로 강제 덮어씁니다 — 호출자가 지정한 임의 주소로 리디렉션되는 것을 방지합니다.
GetVisualValidateResult는 Bearer 인증과 함께 동일 API를 사용하며, 콜백 페이지에 컨텍스트 전달에 의존하지 않습니다string
기본값:"default"
프로젝트 이름
요청 예제
curl -X POST "https://api.gravitex.ai/api/v3/seedance?Action=CreateVisualValidateSession&Version=2024-01-01" \
-H "Authorization: Bearer sk-your_token_key" \
-H "Content-Type: application/json" \
-d '{}'
응답 예제
{
"BytedToken": "202607...",
"H5Link": "https://www.byteplus.com/en/liveness-face-manage/authorization?pl=...",
"CallbackURL": "https://api.gravitex.ai/asset-validate-callback.html"
}
| 필드 | 설명 |
|---|---|
H5Link | 최종 사용자에게 실인물 검증 완료를 위해 표시(WebView/브라우저에서 열기 권장) |
BytedToken | 호출자가 직접 저장, 30분 내 유효하며 한 번만 검증 가능; 완료 후 GetVisualValidateResult로 GroupId 교환 |
CallbackURL | 검증 완료 후 대체 표시 페이지, BytedToken으로 결과를 능동적으로 폴링하는 데 영향 없음 |
실인물 자산 추가 제한
- 할당량 독립: 각 사용자의 채널별 실인물 자산 그룹 수는 별도로 제한됩니다(
AIGC와 별도 계산) - 얼굴 매칭: 각 실인물 자산 그룹은 고유한 실제 인물에 대응; 업로드된 자산은 검증 참조 얼굴과 비교되며, 불일치 또는 다중 얼굴 시
Status: Failed - 삭제 제한: DeleteAssetGroup 참조
⌘I
