Veo 3.1 Améliorer une vidéo
Utilisez le point de terminaison d'amélioration vidéo pour créer une tâche asynchrone.
Vue d'ensemble
Utilisez le point de terminaison d'amélioration vidéo avec les entrées requises. Utilisez l'ID de tâche retourné pour récupérer son état, ou fournissez callback_url pour les livraisons documentées ci-dessous.
Démarrage rapide
- Créez une clé API et définissez-la comme RUNAPI_API_KEY.
- Envoyer une requête POST dont le corps correspond au schéma de requête.
- Enregistrez l'identifiant de tâche retourné, puis interrogez l'état jusqu'à atteindre un état terminal ou gérez les callbacks documentés ci-dessous.
Point de terminaison
- URL de base
https://runapi.ai- Version de l'API
v1- Authentification
Authorization: Bearer YOUR_API_TOKEN
Modèles pris en charge
Ouvrez une page de modèle pour consulter la tarification actuelle, les limites de débit et les conditions d'utilisation commerciale.
Schéma de requête
Envoyez uniquement les champs documentés. Lorsqu'il est fourni, callback_url reçoit les livraisons de Task documentées ci-dessous.
Corps de la requête4 champs
callback_urlstringindexintegeroutput_resolutionstring1080p, 4k
source_task_idstringCréer une acceptation
POST /api/v1/veo_3_1/upscale_video
Schéma de réponse
{
"properties": {
"billing": {
"properties": {
"refund": {
"oneOf": [
{
"properties": {
"refunded_at": {
"type": "string"
}
},
"required": [
"refunded_at"
],
"type": "object",
"unevaluatedProperties": false
},
{
"enum": [
null
]
}
]
},
"reservation": {
"oneOf": [
{
"properties": {
"amount_cents": {
"type": "integer"
}
},
"required": [
"amount_cents"
],
"type": "object",
"unevaluatedProperties": false
},
{
"enum": [
null
]
}
]
},
"settlement": {
"oneOf": [
{
"properties": {
"amount_micro_cents": {
"type": "integer"
},
"charged_amount_cents": {
"type": "integer"
}
},
"required": [
"charged_amount_cents",
"amount_micro_cents"
],
"type": "object",
"unevaluatedProperties": false
},
{
"enum": [
null
]
}
]
}
},
"required": [
"reservation",
"settlement",
"refund"
],
"type": "object",
"unevaluatedProperties": false
},
"id": {
"type": "string"
},
"status": {
"enum": [
"processing"
],
"type": "string"
},
"task_replayed": {
"type": "boolean"
}
},
"required": [
"id",
"status",
"billing"
],
"type": "object",
"unevaluatedProperties": false
}
Exemple de réponse
{
"billing": {
"refund": null,
"reservation": null,
"settlement": null
},
"id": "tsk_reference_demo",
"status": "processing"
}
Interrogation en cours
GET /api/v1/veo_3_1/upscale_video/:id
Schéma de réponse
{
"properties": {
"billing": {
"properties": {
"refund": {
"oneOf": [
{
"properties": {
"refunded_at": {
"type": "string"
}
},
"required": [
"refunded_at"
],
"type": "object",
"unevaluatedProperties": false
},
{
"enum": [
null
]
}
]
},
"reservation": {
"oneOf": [
{
"properties": {
"amount_cents": {
"type": "integer"
}
},
"required": [
"amount_cents"
],
"type": "object",
"unevaluatedProperties": false
},
{
"enum": [
null
]
}
]
},
"settlement": {
"oneOf": [
{
"properties": {
"amount_micro_cents": {
"type": "integer"
},
"charged_amount_cents": {
"type": "integer"
}
},
"required": [
"charged_amount_cents",
"amount_micro_cents"
],
"type": "object",
"unevaluatedProperties": false
},
{
"enum": [
null
]
}
]
}
},
"required": [
"reservation",
"settlement",
"refund"
],
"type": "object",
"unevaluatedProperties": false
},
"id": {
"type": "string"
},
"status": {
"enum": [
"processing"
],
"type": "string"
}
},
"required": [
"id",
"status",
"billing"
],
"type": "object",
"unevaluatedProperties": false
}
Exemple de réponse
{
"billing": {
"refund": null,
"reservation": null,
"settlement": null
},
"id": "tsk_reference_demo",
"status": "processing"
}
Interrogation terminée
GET /api/v1/veo_3_1/upscale_video/:id
Schéma de réponse
{
"properties": {
"billing": {
"properties": {
"refund": {
"oneOf": [
{
"properties": {
"refunded_at": {
"type": "string"
}
},
"required": [
"refunded_at"
],
"type": "object",
"unevaluatedProperties": false
},
{
"enum": [
null
]
}
]
},
"reservation": {
"oneOf": [
{
"properties": {
"amount_cents": {
"type": "integer"
}
},
"required": [
"amount_cents"
],
"type": "object",
"unevaluatedProperties": false
},
{
"enum": [
null
]
}
]
},
"settlement": {
"oneOf": [
{
"properties": {
"amount_micro_cents": {
"type": "integer"
},
"charged_amount_cents": {
"type": "integer"
}
},
"required": [
"charged_amount_cents",
"amount_micro_cents"
],
"type": "object",
"unevaluatedProperties": false
},
{
"enum": [
null
]
}
]
}
},
"required": [
"reservation",
"settlement",
"refund"
],
"type": "object",
"unevaluatedProperties": false
},
"id": {
"type": "string"
},
"sources": {
"items": {
"properties": {
"url": {
"type": "string"
}
},
"required": [
"url"
],
"type": "object",
"unevaluatedProperties": false
},
"type": "array"
},
"status": {
"enum": [
"completed"
],
"type": "string"
},
"videos": {
"items": {
"properties": {
"url": {
"type": "string",
"x-runapi-generated-media": true
}
},
"required": [
"url"
],
"type": "object",
"unevaluatedProperties": false
},
"type": "array"
}
},
"required": [
"id",
"status",
"videos",
"billing"
],
"type": "object",
"unevaluatedProperties": false
}
Exemple de réponse
{
"billing": {
"refund": null,
"reservation": null,
"settlement": null
},
"id": "tsk_reference_demo",
"status": "completed",
"videos": [
{
"url": "https://file.runapi.ai/reference-video.mp4"
}
]
}
Échec de l'interrogation
GET /api/v1/veo_3_1/upscale_video/:id
Schéma de réponse
{
"properties": {
"billing": {
"properties": {
"refund": {
"oneOf": [
{
"properties": {
"refunded_at": {
"type": "string"
}
},
"required": [
"refunded_at"
],
"type": "object",
"unevaluatedProperties": false
},
{
"enum": [
null
]
}
]
},
"reservation": {
"oneOf": [
{
"properties": {
"amount_cents": {
"type": "integer"
}
},
"required": [
"amount_cents"
],
"type": "object",
"unevaluatedProperties": false
},
{
"enum": [
null
]
}
]
},
"settlement": {
"oneOf": [
{
"properties": {
"amount_micro_cents": {
"type": "integer"
},
"charged_amount_cents": {
"type": "integer"
}
},
"required": [
"charged_amount_cents",
"amount_micro_cents"
],
"type": "object",
"unevaluatedProperties": false
},
{
"enum": [
null
]
}
]
}
},
"required": [
"reservation",
"settlement",
"refund"
],
"type": "object",
"unevaluatedProperties": false
},
"error": {
"type": "string"
},
"id": {
"type": "string"
},
"status": {
"enum": [
"failed"
],
"type": "string"
}
},
"required": [
"id",
"status",
"error",
"billing"
],
"type": "object",
"unevaluatedProperties": false
}
Exemple de réponse
{
"billing": {
"refund": null,
"reservation": null,
"settlement": null
},
"error": "Task processing failed.",
"id": "tsk_reference_demo",
"status": "failed"
}
Rappel client : terminé
POST callback_url
Schéma de réponse
{
"properties": {
"id": {
"type": "string"
},
"sources": {
"items": {
"properties": {
"url": {
"type": "string"
}
},
"required": [
"url"
],
"type": "object",
"unevaluatedProperties": false
},
"type": "array"
},
"status": {
"enum": [
"completed"
],
"type": "string"
},
"videos": {
"items": {
"properties": {
"url": {
"type": "string",
"x-runapi-generated-media": true
}
},
"required": [
"url"
],
"type": "object",
"unevaluatedProperties": false
},
"type": "array"
}
},
"required": [
"id",
"status",
"videos"
],
"type": "object",
"unevaluatedProperties": false
}
Exemple de réponse
{
"id": "tsk_reference_demo",
"status": "completed",
"videos": [
{
"url": "https://file.runapi.ai/reference-video.mp4"
}
]
}
Rappel client : échoué
POST callback_url
Schéma de réponse
{
"properties": {
"error": {
"oneOf": [
{
"type": "string"
},
{
"properties": {
"code": {
"type": "string"
},
"limit_cents": {
"type": "integer"
},
"message": {
"type": "string"
},
"reset_at": {
"format": "date-time",
"type": [
"string",
"null"
]
},
"used_cents": {
"type": "integer"
},
"window": {
"enum": [
"1h",
"1d",
"7d",
"daily",
"weekly",
"monthly",
"lifetime"
],
"type": "string"
}
},
"required": [
"code",
"message"
],
"type": "object",
"unevaluatedProperties": false
}
]
},
"id": {
"type": "string"
},
"status": {
"enum": [
"failed"
],
"type": "string"
}
},
"required": [
"id",
"status",
"error"
],
"type": "object",
"unevaluatedProperties": false
}
Exemple de réponse
{
"error": {
"code": "generation_failed",
"message": "Task processing failed."
},
"id": "tsk_reference_demo",
"status": "failed"
}
Erreurs
POST /api/v1/veo_3_1/upscale_video
Schéma de réponse
{
"properties": {
"error": {
"description": "Message d'erreur lisible par l'humain.",
"type": "string"
}
},
"required": [
"error"
],
"type": "object",
"unevaluatedProperties": false
}
Exemple de réponse
{
"error": "Authentication required"
}
Erreurs
GET /api/v1/veo_3_1/upscale_video/:id
Schéma de réponse
{
"properties": {
"error": {
"description": "Message d'erreur lisible par l'humain.",
"type": "string"
}
},
"required": [
"error"
],
"type": "object",
"unevaluatedProperties": false
}
Exemple de réponse
{
"error": "Authentication required"
}
Erreurs
POST /api/v1/veo_3_1/upscale_video
Schéma de réponse
{
"oneOf": [
{
"properties": {
"error": {
"description": "Message d'erreur lisible par l'humain.",
"type": "string"
}
},
"required": [
"error"
],
"type": "object",
"unevaluatedProperties": false
},
{
"properties": {
"error": {
"description": "Résumé de validation lisible par l'humain.",
"type": "string"
},
"errors": {
"additionalProperties": {
"items": {
"type": "string"
},
"type": "array"
},
"description": "Messages de validation indexés par champ de requête public, avec un tableau de chaînes lisibles par l'humain pour chaque champ.",
"type": "object"
}
},
"required": [
"error",
"errors"
],
"type": "object",
"unevaluatedProperties": false
}
]
}
Exemple de réponse
{
"error": "output_resolution must be one of: 1080p, 4k"
}
Erreurs
POST /api/v1/veo_3_1/upscale_video
Schéma de réponse
{
"properties": {
"error": {
"description": "Message d'erreur lisible par l'humain.",
"type": "string"
}
},
"required": [
"error"
],
"type": "object",
"unevaluatedProperties": false
}
Exemple de réponse
{
"error": "Insufficient balance"
}
Erreurs
POST /api/v1/veo_3_1/upscale_video
Schéma de réponse
{
"properties": {
"error": {
"description": "Message d'erreur lisible par l'humain.",
"type": "string"
}
},
"required": [
"error"
],
"type": "object",
"unevaluatedProperties": false
}
Exemple de réponse
{
"error": "API key credit limit exceeded"
}
Erreurs
POST /api/v1/veo_3_1/upscale_video
Schéma de réponse
{
"properties": {
"error": {
"description": "Message d'erreur lisible par l'humain.",
"type": "string"
}
},
"required": [
"error"
],
"type": "object",
"unevaluatedProperties": false
}
Exemple de réponse
{
"error": "The request uses features that are not supported for the selected model"
}
Erreurs
POST /api/v1/veo_3_1/upscale_video
Schéma de réponse
{
"properties": {
"error": {
"description": "Message d'erreur lisible par l'humain.",
"type": "string"
}
},
"required": [
"error"
],
"type": "object",
"unevaluatedProperties": false
}
Exemple de réponse
{
"error": "Rate limit reached. Please retry later."
}
Erreurs
POST /api/v1/veo_3_1/upscale_video
Schéma de réponse
{
"properties": {
"error": {
"description": "Message d'erreur lisible par l'humain.",
"type": "string"
}
},
"required": [
"error"
],
"type": "object",
"unevaluatedProperties": false
}
Exemple de réponse
{
"error": "Service under maintenance, please try again later"
}
Erreurs
POST /api/v1/veo_3_1/upscale_video
Schéma de réponse
{
"properties": {
"error": {
"description": "Message d'erreur lisible par l'humain.",
"type": "string"
}
},
"required": [
"error"
],
"type": "object",
"unevaluatedProperties": false
}
Exemple de réponse
{
"error": "The request timed out"
}
Erreurs
GET /api/v1/veo_3_1/upscale_video/:id
Schéma de réponse
{
"properties": {
"error": {
"description": "Message d'erreur lisible par l'humain.",
"type": "string"
}
},
"required": [
"error"
],
"type": "object",
"unevaluatedProperties": false
}
Exemple de réponse
{
"error": "Task with id 'tsk_reference_demo' not found"
}
Exemples de code générés
Utilisez directement cURL, ou installez un SDK pour votre langage. Chaque exemple soumet la requête validée indiquée dans cette référence.
Installer
pip install runapi-veo-3-1
import os
from runapi.veo_3_1 import Veo31Client
client = Veo31Client(api_key=os.environ["RUNAPI_API_KEY"])
task = client.upscale_video.create(
source_task_id="tsk_source_video"
)