Skill v1.0.0
currentAutomated scan100/100version: "1.0.0" name: agnes-videogen description: "Generate videos using the Agnes Video V2.0 model API. Use when the user asks to generate videos via Agnes AI platform (apihub.agnes-ai.com). Triggers on: agnes video, agnes 视频, video gen, generate video, text to video, image to video, keyframe interpolation, 生视频, 文生视频, 图生视频."
Agnes Video Generation
Generate videos using the Agnes Video V2.0 API.
Prerequisites
- An Agnes AI API key from API Platform
- Base URL:
https://apihub.agnes-ai.com/v1
API Architecture
Agnes Video V2.0 uses an asynchronous two-step workflow:
- Create Video Task — submit the request, get a
video_id - Retrieve Video Result — poll the
video_idto get the final video
API Endpoints
Step 1: Create Video Task
Endpoint: POST https://apihub.agnes-ai.com/v1/videos
Headers:
Authorization: Bearer YOUR_API_KEYContent-Type: application/json
Step 2: Retrieve Video Result
Endpoint: GET https://apihub.agnes-ai.com/agnesapi?video_id=<VIDEO_ID>
Headers:
Authorization: Bearer YOUR_API_KEY
Optional parameter: model_name — specify model explicitly (e.g., agnes-video-v2.0)
Legacy method (compatibility): GET https://apihub.agnes-ai.com/v1/videos/<TASK_ID>
Model Name
agnes-video-v2.0
Request Parameters (Create Task)
| Parameter | Type | Required | Description | |
|---|---|---|---|---|
| model | string | Yes | Use agnes-video-v2.0 | |
| prompt | string | Yes | Text description of the video content | |
| image | string / array | No | Image URL or image URL array (for image-to-video) | |
| mode | string | No | Generation mode: ti2vid (text-to-video) or keyframes | |
| height | integer | No | Video height. Default: 768 | |
| width | integer | No | Video width. Default: 1152 | |
| num_frames | integer | No | Number of frames. Must be ≤ 441, follows 8n + 1 rule | |
| frame_rate | number | No | Video FPS. Range: 1–60 | |
| num_inference_steps | integer | No | Number of inference steps | |
| seed | integer | No | Random seed for reproducible results | |
| negative_prompt | string | No | Content to avoid | |
| extra_body.image | array | No | Input image URLs for multi-image or keyframe mode | |
| extra_body.mode | string | No | Additional mode setting, e.g., keyframes |
Workflows
1. Text-to-Video
curl -X POST https://apihub.agnes-ai.com/v1/videos \-H "Authorization: Bearer YOUR_API_KEY" \-H "Content-Type: application/json" \-d '{"model": "agnes-video-v2.0","prompt": "A cinematic shot of a cat walking on the beach at sunset, soft ocean waves, warm golden lighting, realistic motion","height": 768,"width": 1152,"num_frames": 121,"frame_rate": 24}'
Response:
{"id": "task_YOUR_TASK_ID","task_id": "task_YOUR_TASK_ID","video_id": "video_YOUR_VIDEO_ID","object": "video","model": "agnes-video-v2.0","status": "queued","progress": 0,"created_at": 1780457477,"seconds": "10.0","size": "1280x768"}
2. Image-to-Video (single image)
curl -X POST https://apihub.agnes-ai.com/v1/videos \-H "Authorization: Bearer YOUR_API_KEY" \-H "Content-Type: application/json" \-d '{"model": "agnes-video-v2.0","prompt": "The woman slowly turns around and looks back at the camera, natural facial expression, cinematic camera movement","image": "https://example.com/image.png","num_frames": 121,"frame_rate": 24}'
3. Multi-Image Video
curl -X POST https://apihub.agnes-ai.com/v1/videos \-H "Authorization: Bearer YOUR_API_KEY" \-H "Content-Type: application/json" \-d '{"model": "agnes-video-v2.0","prompt": "Create a smooth transformation scene between the two reference images, cinematic lighting, consistent character identity, natural motion","extra_body": {"image": ["https://example.com/image1.png","https://example.com/image2.png"]},"num_frames": 121,"frame_rate": 24}'
4. Keyframe Interpolation
curl -X POST https://apihub.agnes-ai.com/v1/videos \-H "Authorization: Bearer YOUR_API_KEY" \-H "Content-Type: application/json" \-d '{"model": "agnes-video-v2.0","prompt": "Generate a smooth cinematic transition between the keyframes, maintaining visual consistency and natural camera movement","extra_body": {"image": ["https://example.com/keyframe1.png","https://example.com/keyframe2.png"],"mode": "keyframes"},"num_frames": 121,"frame_rate": 24}'
Retrieve Video Result
Poll until status is "completed" and progress is 100:
curl --location --request GET \'https://apihub.agnes-ai.com/agnesapi?video_id=video_xxxxxx' \--header 'Authorization: Bearer YOUR_API_KEY'
Completed response:
{"id": "task_YOUR_TASK_ID","video_id": "video_YOUR_VIDEO_ID","model": "agnes-video-v2.0","object": "video","status": "completed","progress": 100,"seconds": "10.0","size": "1280x768","remixed_from_video_id": "https://storage.googleapis.com/agnes-aigc/aigc/videos/2026/06/03/video_xxxxxx.mp4","error": null}
Final video URL: remixed_from_video_id
Result Fields
| Field | Type | Description | |
|---|---|---|---|
| id | string | Task ID | |
| video_id | string | Video ID | |
| model | string | Model used | |
| object | string | Always "video" | |
| status | string | Task status (queued, processing, completed, failed) | |
| progress | integer | Progress percentage (0–100) | |
| seconds | string | Video duration | |
| size | string | Video resolution (e.g., "1280x768") | |
| remixed_from_video_id | string | Final video URL (only when completed) | |
| error | string / null | Error message if failed |
Important Notes
- Asynchronous workflow: Submit → get
video_id→ poll for result num_framesmust follow8n + 1rule and be ≤ 441frame_raterange: 1–60- Default resolution: 1152×768
- Recommended polling interval: 5–10 seconds
- Timeout recommended: 60s–360s for create request
- Pricing: Currently free during beta
Supported Capabilities
- Text-to-Video generation
- Image-to-Video generation
- Multi-image video composition
- Keyframe interpolation
- Custom resolution, frame rate, and duration
- Reproducible results via seed