Opprett en Runway-karakteropptreden
Opprett en Runway Act-Two-oppgave for karakteropptreden via CometAPI ved å bruke et karakterbilde eller en video og et referanseklipp med opptreden.
curl --request POST \
--url https://api.cometapi.com/runwayml/v1/character_performance \
--header "Authorization: Bearer $COMETAPI_KEY" \
--header "Content-Type: application/json" \
--data '{
"model": "act_two",
"character": {
"type": "image",
"uri": "https://example.com/character.jpg"
},
"reference": {
"type": "video",
"uri": "https://example.com/performance.mp4"
},
"bodyControl": true,
"expressionIntensity": 3
}'import os
import requests
response = requests.post(
"https://api.cometapi.com/runwayml/v1/character_performance",
headers={"Authorization": f"Bearer {os.environ['COMETAPI_KEY']}"},
json={
"model": "act_two",
"character": {
"type": "image",
"uri": "https://example.com/character.jpg"
},
"reference": {
"type": "video",
"uri": "https://example.com/performance.mp4"
},
"bodyControl": True,
"expressionIntensity": 3
},
)
response.raise_for_status()
print(response.json())const response = await fetch(
"https://api.cometapi.com/runwayml/v1/character_performance",
{
method: "POST",
headers: {
Authorization: `Bearer ${process.env.COMETAPI_KEY}`,
"Content-Type": "application/json",
},
body: JSON.stringify({
"model": "act_two",
"character": {
"type": "image",
"uri": "https://example.com/character.jpg"
},
"reference": {
"type": "video",
"uri": "https://example.com/performance.mp4"
},
"bodyControl": true,
"expressionIntensity": 3
}),
},
);
if (!response.ok) throw new Error(await response.text());
console.log(await response.json());<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.cometapi.com/runwayml/v1/character_performance",
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([
'model' => 'act_two',
'character' => [
'type' => 'image',
'uri' => 'https://example.com/character.jpg'
],
'reference' => [
'type' => 'video',
'uri' => 'https://example.com/performance.mp4'
]
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"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.cometapi.com/runwayml/v1/character_performance"
payload := strings.NewReader("{\n \"model\": \"act_two\",\n \"character\": {\n \"type\": \"image\",\n \"uri\": \"https://example.com/character.jpg\"\n },\n \"reference\": {\n \"type\": \"video\",\n \"uri\": \"https://example.com/performance.mp4\"\n }\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
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.cometapi.com/runwayml/v1/character_performance")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"model\": \"act_two\",\n \"character\": {\n \"type\": \"image\",\n \"uri\": \"https://example.com/character.jpg\"\n },\n \"reference\": {\n \"type\": \"video\",\n \"uri\": \"https://example.com/performance.mp4\"\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.cometapi.com/runwayml/v1/character_performance")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"model\": \"act_two\",\n \"character\": {\n \"type\": \"image\",\n \"uri\": \"https://example.com/character.jpg\"\n },\n \"reference\": {\n \"type\": \"video\",\n \"uri\": \"https://example.com/performance.mp4\"\n }\n}"
response = http.request(request)
puts response.read_body{
"id": "00000000-0000-4000-8000-000000000000"
}{
"code": "<string>",
"message": "<string>",
"data": "<unknown>"
}{
"error": {
"message": "<string>",
"type": "<string>",
"code": "<string>"
}
}act_two til å overføre opptredenen fra en referansevideo til et karakterbilde
eller en video. Forespørselen returnerer en oppgave-id for å hente det ferdige resultatet.
Forbered ressursene
- Autentiser med CometAPI API-nøkkelen din.
- Angi
modeltilact_two. - Oppgi
character.typesomimageellervideo, med ressursen icharacter.uri. Sørg for at et gjenkjennelig ansikt er synlig og innenfor rammen. - Oppgi
reference.typesomvideo, med et opptredensklipp på 3 til 30 sekunder ireference.uri. - Erstatt eksempel-URL-ene for medier med tilgjengelige HTTPS-URL-er. Mediefeltene godtar også Base64-data-URI-er med en kodet størrelse på opptil 5 MB.
Konfigurer opptredenen
Baremodel, character og reference er påkrevd.
| Felt | Slik bruker du det |
|---|---|
bodyControl | Angi true for å be om kroppsbevegelser og gester i tillegg til ansiktsuttrykk. Utelat for å la innstillingen være uspesifisert. |
expressionIntensity | Bruk 1 til 5; høyere verdier ber om sterkere uttrykk. Utelat for 3. |
seed | Bruk 1 til 4294967295 for en eksplisitt sampling seed. Utelat for en tilfeldig seed. |
contentModeration.publicFigureThreshold | Bruk auto for standard deteksjon av offentlige personer eller low for mindre restriktiv deteksjon. |
bodyControl: false behandles som utelatelse, så det eksplisitt ikke
deaktiverer kroppskontroll. En seed eller expressionIntensity med verdien 0 behandles også
som utelatelse. Utelat valgfrie felt i stedet for å sende null.
Valgfrie verdier for ratio er 1280:720,
720:1280, 960:960, 1104:832, 832:1104, eller 1584:672.
Hent resultatet
Lagre den returnerteid og bruk
Hent en Runway-oppgave for å hente oppgavestatusen.
Når status er SUCCEEDED, leser du resultat-URL-ene fra output. Hvis oppgaven
mislykkes, undersøker du failure og failureCode når de finnes.Autorisasjoner
Your CometAPI API key.
Kropp
Act-Two character-performance request.
Model ID for this request.
act_two Character image or video to animate. Keep a recognizable face visible and inside the frame.
- Option 1
- Option 2
Show child attributes
Show child attributes
Reference video containing the performance to apply. The video must be 3 to 30 seconds long.
Show child attributes
Show child attributes
Set true to request body movements and gestures in addition to facial expressions. Omit to leave this option unspecified; false is treated as omission.
Expression intensity from 1 through 5. Higher values request stronger expressions. Omit for 3; 0 is treated as omission.
0 <= x <= 5Sampling seed. Omit for a random seed; 0 is treated as omission.
0 <= x <= 4294967295Optional requested frame dimensions.
1280:720, 720:1280, 960:960, 1104:832, 832:1104, 1584:672 Content moderation settings. Omit to use the standard settings.
Show child attributes
Show child attributes
Svar
The task was created. Save its id for task retrieval.
Task ID for GET /runwayml/v1/tasks/{id}.
Task state, when returned.
Task submission timestamp, when returned.
Result URLs, when returned.
Failure explanation, when returned.
Machine-readable failure code, when returned.
Task estimate metadata, when returned.
Show child attributes
Show child attributes
Task cost metadata, when returned.
Show child attributes
Show child attributes
curl --request POST \
--url https://api.cometapi.com/runwayml/v1/character_performance \
--header "Authorization: Bearer $COMETAPI_KEY" \
--header "Content-Type: application/json" \
--data '{
"model": "act_two",
"character": {
"type": "image",
"uri": "https://example.com/character.jpg"
},
"reference": {
"type": "video",
"uri": "https://example.com/performance.mp4"
},
"bodyControl": true,
"expressionIntensity": 3
}'import os
import requests
response = requests.post(
"https://api.cometapi.com/runwayml/v1/character_performance",
headers={"Authorization": f"Bearer {os.environ['COMETAPI_KEY']}"},
json={
"model": "act_two",
"character": {
"type": "image",
"uri": "https://example.com/character.jpg"
},
"reference": {
"type": "video",
"uri": "https://example.com/performance.mp4"
},
"bodyControl": True,
"expressionIntensity": 3
},
)
response.raise_for_status()
print(response.json())const response = await fetch(
"https://api.cometapi.com/runwayml/v1/character_performance",
{
method: "POST",
headers: {
Authorization: `Bearer ${process.env.COMETAPI_KEY}`,
"Content-Type": "application/json",
},
body: JSON.stringify({
"model": "act_two",
"character": {
"type": "image",
"uri": "https://example.com/character.jpg"
},
"reference": {
"type": "video",
"uri": "https://example.com/performance.mp4"
},
"bodyControl": true,
"expressionIntensity": 3
}),
},
);
if (!response.ok) throw new Error(await response.text());
console.log(await response.json());<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.cometapi.com/runwayml/v1/character_performance",
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([
'model' => 'act_two',
'character' => [
'type' => 'image',
'uri' => 'https://example.com/character.jpg'
],
'reference' => [
'type' => 'video',
'uri' => 'https://example.com/performance.mp4'
]
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"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.cometapi.com/runwayml/v1/character_performance"
payload := strings.NewReader("{\n \"model\": \"act_two\",\n \"character\": {\n \"type\": \"image\",\n \"uri\": \"https://example.com/character.jpg\"\n },\n \"reference\": {\n \"type\": \"video\",\n \"uri\": \"https://example.com/performance.mp4\"\n }\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
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.cometapi.com/runwayml/v1/character_performance")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"model\": \"act_two\",\n \"character\": {\n \"type\": \"image\",\n \"uri\": \"https://example.com/character.jpg\"\n },\n \"reference\": {\n \"type\": \"video\",\n \"uri\": \"https://example.com/performance.mp4\"\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.cometapi.com/runwayml/v1/character_performance")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"model\": \"act_two\",\n \"character\": {\n \"type\": \"image\",\n \"uri\": \"https://example.com/character.jpg\"\n },\n \"reference\": {\n \"type\": \"video\",\n \"uri\": \"https://example.com/performance.mp4\"\n }\n}"
response = http.request(request)
puts response.read_body{
"id": "00000000-0000-4000-8000-000000000000"
}{
"code": "<string>",
"message": "<string>",
"data": "<unknown>"
}{
"error": {
"message": "<string>",
"type": "<string>",
"code": "<string>"
}
}