together-video

Generate videos from text and image prompts via Together AI. 15+ models including Veo 2/3, Sora 2, Kling 2.1, Hailuo 02, Seedance, PixVerse, Vidu. Supports text-to-video, image-to-video, keyframe control, and reference images. Use when users want to generate videos, create video content, animate images, or work with any video generation task.

Safety Notice

This listing is imported from skills.sh public index metadata. Review upstream SKILL.md and repository scripts before running.

Copy this and send it to your AI assistant to learn

Install skill "together-video" with this command: npx skills add zainhas/togetherai-skills/zainhas-togetherai-skills-together-video

Together Video Generation

Overview

Generate videos asynchronously — submit a job, poll for completion, download the result.

  • Endpoint: /v2/videos
  • Async workflow: create job → poll status → download video
  • 15+ models from Google, OpenAI, MiniMax, Kuaishou, ByteDance, PixVerse, Vidu

Installation

# Python (recommended)
uv init  # optional, if starting a new project
uv add together
# or with pip
pip install together
# TypeScript / JavaScript
npm install together-ai

Set your API key:

export TOGETHER_API_KEY=<your-api-key>

Quick Start

Text-to-Video

import time
from together import Together
client = Together()

job = client.videos.create(
    prompt="A serene sunset over the ocean with gentle waves",
    model="minimax/video-01-director",
    width=1366,
    height=768,
)
print(f"Job ID: {job.id}")

# Poll until completion
while True:
    status = client.videos.retrieve(job.id)
    if status.status == "completed":
        print(f"Video URL: {status.outputs.video_url}")
        break
    elif status.status == "failed":
        print("Failed")
        break
    time.sleep(5)
import Together from "together-ai";
const together = new Together();

const job = await together.videos.create({
  prompt: "A serene sunset over the ocean with gentle waves",
  model: "minimax/video-01-director",
  width: 1366, height: 768,
});

// Poll until completion
while (true) {
  const status = await together.videos.retrieve(job.id);
  if (status.status === "completed") {
    console.log(`Video URL: ${status.outputs.video_url}`);
    break;
  } else if (status.status === "failed") break;
  await new Promise(r => setTimeout(r, 5000));
}
# Create a video generation job
curl -X POST "https://api.together.xyz/v2/videos" \
  -H "Authorization: Bearer $TOGETHER_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "minimax/video-01-director",
    "prompt": "A serene sunset over the ocean with gentle waves",
    "width": 1366,
    "height": 768
  }'

# Poll for completion (replace $JOB_ID with the id from the create response)
curl -X GET "https://api.together.xyz/v2/videos/$JOB_ID" \
  -H "Authorization: Bearer $TOGETHER_API_KEY"

Image-to-Video (Keyframes)

import base64, requests

image_url = "https://example.com/photo.jpg"
img_data = base64.b64encode(requests.get(image_url).content).decode("utf-8")

job = client.videos.create(
    prompt="Smooth camera zoom out",
    model="minimax/hailuo-02",
    frame_images=[{"input_image": img_data, "frame": 0}],
)
import * as fs from "fs";
import Together from "together-ai";
const together = new Together();

// Load and encode your image
const imageBuffer = fs.readFileSync("keyframe.jpg");
const base64Image = imageBuffer.toString("base64");

const job = await together.videos.create({
  prompt: "Smooth camera zoom out",
  model: "minimax/hailuo-02",
  frame_images: [{ input_image: base64Image, frame: 0 }],
});

// Poll until completion
while (true) {
  const status = await together.videos.retrieve(job.id);
  if (status.status === "completed") {
    console.log(`Video URL: ${status.outputs.video_url}`);
    break;
  } else if (status.status === "failed") break;
  await new Promise(r => setTimeout(r, 5000));
}
# Create an image-to-video job (replace $BASE64_IMAGE with your base64-encoded image)
curl -X POST "https://api.together.xyz/v2/videos" \
  -H "Authorization: Bearer $TOGETHER_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "minimax/hailuo-02",
    "prompt": "Smooth camera zoom out",
    "frame_images": [{"input_image": "$BASE64_IMAGE", "frame": 0}]
  }'

# Poll for completion (replace $JOB_ID with the id from the create response)
curl -X GET "https://api.together.xyz/v2/videos/$JOB_ID" \
  -H "Authorization: Bearer $TOGETHER_API_KEY"

Reference Images

job = client.videos.create(
    prompt="A cat dancing energetically",
    model="minimax/hailuo-02",
    reference_images=["https://example.com/cat.jpg"],
)

Parameters

ParameterTypeDescriptionDefault
promptstringText description (required for all models except Kling)-
modelstringModel ID (required)-
widthintVideo width1366
heightintVideo height768
secondsintDuration (1-10)5-6
fpsintFrames per second24-25
stepsintDiffusion stepsvaries
guidance_scalefloatPrompt adherence (6-10)varies
seedintRandom seedrandom
negative_promptstringWhat to exclude-
frame_imagesarrayKeyframe images (base64)-
reference_imagesarrayStyle reference URLs-
output_formatstring"MP4" or "WEBM""MP4"
output_qualityintBitrate/quality (lower = higher quality)20

Job Status Flow

StatusDescription
queuedWaiting in queue
in_progressGenerating
completedDone — video URL available
failedCheck info.errors
cancelledJob cancelled

Guidance Scale Tips

  • 6-7: Creative, more interpretation
  • 7-9: Balanced (recommended)
  • 9-10: Strict prompt adherence
  • >12: Avoid — causes artifacts

Key Models

ModelAPI StringDurationDimensions
Veo 3.0google/veo-3.08s1280x720, 1920x1080
Veo 3.0 + Audiogoogle/veo-3.0-audio8s1280x720, 1920x1080
Sora 2openai/sora-28s1280x720
Hailuo 02minimax/hailuo-0210s1366x768, 1920x1080
Kling 2.1 MasterkwaivgI/kling-2.1-master5s1920x1080
Seedance 1.0 ProByteDance/Seedance-1.0-pro5sMultiple
PixVerse v5pixverse/pixverse-v55sMultiple
Vidu 2.0vidu/vidu-2.08sMultiple

See references/models.md for the complete model table.

Resources

Source Transparency

This detail page is rendered from real SKILL.md content. Trust labels are metadata-based hints, not a safety guarantee.

Related Skills

Related by shared tags or category signals.

General

together-images

No summary provided by upstream source.

Repository SourceNeeds Review
General

together-audio

No summary provided by upstream source.

Repository SourceNeeds Review
General

together-evaluations

No summary provided by upstream source.

Repository SourceNeeds Review
General

together-dedicated-endpoints

No summary provided by upstream source.

Repository SourceNeeds Review