1. claude mcp add runapi -s user -- npx -y @runapi.ai/mcp
2. 重启 Claude Code
3. 粘贴这个 prompt:生成一段视频:"Golden hour sunset over Icelandic black sand beach, slow ocean waves crashing on volcanic rocks, warm sky colors transitioning from amber to deep purple, low-angle slow push-in, epic atmosphere, cinematic 4K."
1. codex plugin install runapi-mcp@agents
2. 重启 Codex
3. 粘贴这个 prompt:生成一段视频:"Golden hour sunset over Icelandic black sand beach, slow ocean waves crashing on volcanic rocks, warm sky colors transitioning from amber to deep purple, low-angle slow push-in, epic atmosphere, cinematic 4K."
1. npx @runapi.ai/mcp init cursor
2. 重启 Cursor
3. 粘贴这个 prompt:生成一段视频:"Golden hour sunset over Icelandic black sand beach, slow ocean waves crashing on volcanic rocks, warm sky colors transitioning from amber to deep purple, low-angle slow push-in, epic atmosphere, cinematic 4K."
1. npx @runapi.ai/mcp init windsurf
2. 重启 Windsurf
3. 粘贴这个 prompt:生成一段视频:"Golden hour sunset over Icelandic black sand beach, slow ocean waves crashing on volcanic rocks, warm sky colors transitioning from amber to deep purple, low-angle slow push-in, epic atmosphere, cinematic 4K."
curl -X POST https://runapi.ai/api/v1/veo_3_1/text_to_video \
-H "Authorization: Bearer $RUNAPI_KEY" \
-H "Content-Type: application/json" \
--data-binary @- <<'JSON'
{
"model": "veo-3.1",
"prompt": "Golden hour sunset over Icelandic black sand beach, slow ocean waves crashing on volcanic rocks, warm sky colors transitioning from amber to deep purple, low-angle slow push-in, epic atmosphere, cinematic 4K."
}
JSON
import { Veo31Client } from "@runapi.ai/veo-3-1";
const client = new Veo31Client({
apiKey: process.env.RUNAPI_API_KEY,
});
const result = await client.textToVideo.run({
"model": "veo-3.1",
"prompt": "Golden hour sunset over Icelandic black sand beach, slow ocean waves crashing on volcanic rocks, warm sky colors transitioning from amber to deep purple, low-angle slow push-in, epic atmosphere, cinematic 4K."
});
console.log(result.id);
require "runapi/veo_3_1"
client = RunApi::Veo31::Client.new
result = client.text_to_video.run(
model: "veo-3.1",
prompt: "Golden hour sunset over Icelandic black sand beach, slow ocean waves crashing on volcanic rocks, warm sky colors transitioning from amber to deep purple, low-angle slow push-in, epic atmosphere, cinematic 4K."
)
puts result.id
package main
import (
"context"
"fmt"
"log"
"net/http"
"os"
"strings"
)
func main() {
body := strings.NewReader("{\"model\":\"veo-3.1\",\"prompt\":\"Golden hour sunset over Icelandic black sand beach, slow ocean waves crashing on volcanic rocks, warm sky colors transitioning from amber to deep purple, low-angle slow push-in, epic atmosphere, cinematic 4K.\"}")
req, err := http.NewRequestWithContext(context.Background(), http.MethodPost, "https://runapi.ai/api/v1/veo_3_1/text_to_video", body)
if err != nil {
log.Fatal(err)
}
req.Header.Set("Authorization", "Bearer "+os.Getenv("RUNAPI_API_KEY"))
req.Header.Set("Content-Type", "application/json")
resp, err := http.DefaultClient.Do(req)
if err != nil {
log.Fatal(err)
}
defer resp.Body.Close()
fmt.Println(resp.Status)
}
A steaming pizza is pulled from a wood-fired oven on a long wooden peel. Cheese stretches as a slice is lifted. Close-up details of the bubbling crust and charred edges. Warm, rustic Italian restaurant ambiance. Food photography lighting with warm tones.
curl -X POST https://runapi.ai/api/v1/veo_3_1/text_to_video \
-H "Authorization: Bearer $RUNAPI_KEY" \
-H "Content-Type: application/json" \
--data-binary @- <<'JSON'
{
"model": "veo-3.1",
"prompt": "A steaming pizza is pulled from a wood-fired oven on a long wooden peel. Cheese stretches as a slice is lifted. Close-up details of the bubbling crust and charred edges. Warm, rustic Italian restaurant ambiance. Food photography lighting with warm tones."
}
JSON