API REST
API de ClipToks para desarrolladores
Automatiza la creación de vídeos desde tus propias aplicaciones, scripts o flujos de n8n con una API REST sencilla.
URL base:
https://cliptoks.com/api/v1
Autenticación
Incluye tu clave en la cabecera Authorization de cada petición:
Authorization: Bearer tk_TU_CLAVE
También puedes usar la cabecera X-API-Key: tk_TU_CLAVE
Endpoints
| Método | Endpoint | Descripción |
|---|---|---|
| GET | /me |
Datos de tu cuenta y minutos restantes. |
| GET | /voices |
Lista de voces disponibles (incluidas las clonadas). |
| POST | /generate |
Crea un vídeo o audio. Consume minutos. |
| GET | /jobs/{id} |
Estado de un trabajo y su resultado. |
| GET | /assets |
Lista tu biblioteca de archivos generados. |
| GET | /assets/{id}/download |
Descarga el archivo de un recurso. |
| DELETE | /assets/{id} |
Elimina un recurso de tu biblioteca. |
Generar un vídeo
Encola un trabajo. La respuesta devuelve un job_id que puedes consultar hasta que esté listo.
curl -X POST https://cliptoks.com/api/v1/generate \
-H "Authorization: Bearer tk_TU_CLAVE" \
-H "Content-Type: application/json" \
-d '{"tool":"idea2video","params":{"idea":"5 curiosidades sobre el espacio","lang":"es"}}'
import requests
r = requests.post(
"https://cliptoks.com/api/v1/generate",
headers={"Authorization": "Bearer tk_TU_CLAVE"},
json={"tool": "idea2video",
"params": {"idea": "5 curiosidades sobre el espacio", "lang": "es"}},
)
print(r.json()) # {'job_id': 123, 'status': 'queued'}
const res = await fetch("https://cliptoks.com/api/v1/generate", {
method: "POST",
headers: {
"Authorization": "Bearer tk_TU_CLAVE",
"Content-Type": "application/json",
},
body: JSON.stringify({
tool: "idea2video",
params: { idea: "5 curiosidades sobre el espacio", lang: "es" },
}),
});
console.log(await res.json());
<?php
$ch = curl_init("https://cliptoks.com/api/v1/generate");
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_POST => true,
CURLOPT_HTTPHEADER => [
"Authorization: Bearer tk_TU_CLAVE",
"Content-Type: application/json",
],
CURLOPT_POSTFIELDS => json_encode([
"tool" => "idea2video",
"params" => ["idea" => "5 curiosidades sobre el espacio", "lang" => "es"],
]),
]);
echo curl_exec($ch);
var client = java.net.http.HttpClient.newHttpClient();
var req = java.net.http.HttpRequest.newBuilder()
.uri(java.net.URI.create("https://cliptoks.com/api/v1/generate"))
.header("Authorization", "Bearer tk_TU_CLAVE")
.header("Content-Type", "application/json")
.POST(java.net.http.HttpRequest.BodyPublishers.ofString(
"{\"tool\":\"idea2video\",\"params\":{\"idea\":\"...\"}}"))
.build();
var res = client.send(req, java.net.http.HttpResponse.BodyHandlers.ofString());
System.out.println(res.body());
Usa un nodo «HTTP Request» con esta configuración:
Método: POST
URL: https://cliptoks.com/api/v1/generate
Headers:
Authorization = Bearer tk_TU_CLAVE
Content-Type = application/json
Body (JSON):
{"tool":"idea2video","params":{"idea":"5 curiosidades sobre el espacio","lang":"es"}}
Consultar el trabajo y descargar
Consulta el job_id hasta que el estado sea «done». Entonces tendrás la URL de descarga.
curl https://cliptoks.com/api/v1/jobs/123 -H "Authorization: Bearer tk_TU_CLAVE"
# Respuesta cuando termina:
{
"job_id": 123,
"tool": "idea2video",
"status": "done",
"progress": 100,
"asset": {
"id": 987,
"type": "video",
"duration": 42.5,
"download_url": "https://cliptoks.com/api/v1/assets/987/download"
}
}
Códigos de error
| Código | Significado |
|---|---|
401 | Clave de API ausente o no válida. |
402 | Sin minutos disponibles. Mejora tu plan. |
403 | Tu plan no incluye acceso a la API. |
422 | Faltan parámetros o son incorrectos. |
429 | Has superado el límite de peticiones por minuto. |

