curl -X GET "https://api.realoficial.com.br/api/v1/renders?limit=20&page=1" \
-H "Authorization: Bearer seu_token_aqui" \
-H "Content-Type: application/json"
{
"message": "Lista de renders obtida com sucesso.",
"data": {
"current_page": 1,
"data": [
{
"id": "01k6ij90yqtsyrzjb0hveqy9ef",
"short_id": "01k4ef56yqtsyrzjb0gveqy7cd",
"status": "done",
"download_url": "https://cdn-wasabi.realoficial.com.br/renders/01k6ij90yqtsyrzjb0hveqy9ef.mp4?v=20250124",
"render_hash": "a1b2c3d4e5f6...",
"storage_provider": "wasabi",
"created_at": "2025-01-24T11:00:00.000000Z",
"short": {
"id": "01k4ef56yqtsyrzjb0gveqy7cd",
"title": "Momento viral #1",
"start_time": 245.5,
"end_time": 305.2,
"thumbnail_url": "https://img.youtube.com/vi/abc123/maxresdefault.jpg",
"project": {
"id": "01k3ab12yqtsyrzjb0fveqy5zx",
"url": "https://www.youtube.com/watch?v=abc123"
},
"renders": [
{
"id": "01k6ij90yqtsyrzjb0hveqy9ef",
"created_at": "2025-01-24T11:00:00.000000Z"
}
]
},
"published_platforms": ["tiktok", "instagram"]
},
{
"id": "01k6ij91yqtsyrzjb0hveqy0gh",
"short_id": "01k4ef57yqtsyrzjb0gveqy8de",
"status": "processing",
"download_url": null,
"render_hash": "b2c3d4e5f6g7...",
"storage_provider": "wasabi",
"created_at": "2025-01-24T11:05:00.000000Z",
"short": {
"id": "01k4ef57yqtsyrzjb0gveqy8de",
"title": "Momento viral #2",
"start_time": 512.0,
"end_time": 571.5,
"thumbnail_url": "https://img.youtube.com/vi/abc123/maxresdefault.jpg",
"project": {
"id": "01k3ab12yqtsyrzjb0fveqy5zx",
"url": "https://www.youtube.com/watch?v=abc123"
}
},
"published_platforms": []
}
],
"first_page_url": "https://api.realoficial.com.br/api/v1/renders?page=1",
"from": 1,
"last_page": 5,
"per_page": 20,
"to": 20,
"total": 87
}
}
Liste todas as renderizacoes do usuario
curl -X GET "https://api.realoficial.com.br/api/v1/renders?limit=20&page=1" \
-H "Authorization: Bearer seu_token_aqui" \
-H "Content-Type: application/json"
{
"message": "Lista de renders obtida com sucesso.",
"data": {
"current_page": 1,
"data": [
{
"id": "01k6ij90yqtsyrzjb0hveqy9ef",
"short_id": "01k4ef56yqtsyrzjb0gveqy7cd",
"status": "done",
"download_url": "https://cdn-wasabi.realoficial.com.br/renders/01k6ij90yqtsyrzjb0hveqy9ef.mp4?v=20250124",
"render_hash": "a1b2c3d4e5f6...",
"storage_provider": "wasabi",
"created_at": "2025-01-24T11:00:00.000000Z",
"short": {
"id": "01k4ef56yqtsyrzjb0gveqy7cd",
"title": "Momento viral #1",
"start_time": 245.5,
"end_time": 305.2,
"thumbnail_url": "https://img.youtube.com/vi/abc123/maxresdefault.jpg",
"project": {
"id": "01k3ab12yqtsyrzjb0fveqy5zx",
"url": "https://www.youtube.com/watch?v=abc123"
},
"renders": [
{
"id": "01k6ij90yqtsyrzjb0hveqy9ef",
"created_at": "2025-01-24T11:00:00.000000Z"
}
]
},
"published_platforms": ["tiktok", "instagram"]
},
{
"id": "01k6ij91yqtsyrzjb0hveqy0gh",
"short_id": "01k4ef57yqtsyrzjb0gveqy8de",
"status": "processing",
"download_url": null,
"render_hash": "b2c3d4e5f6g7...",
"storage_provider": "wasabi",
"created_at": "2025-01-24T11:05:00.000000Z",
"short": {
"id": "01k4ef57yqtsyrzjb0gveqy8de",
"title": "Momento viral #2",
"start_time": 512.0,
"end_time": 571.5,
"thumbnail_url": "https://img.youtube.com/vi/abc123/maxresdefault.jpg",
"project": {
"id": "01k3ab12yqtsyrzjb0fveqy5zx",
"url": "https://www.youtube.com/watch?v=abc123"
}
},
"published_platforms": []
}
],
"first_page_url": "https://api.realoficial.com.br/api/v1/renders?page=1",
"from": 1,
"last_page": 5,
"per_page": 20,
"to": 20,
"total": 87
}
}
GET https://api.realoficial.com.br/api/v1/renders
done)Show Propriedades do render
pending, processing, done, errordone)r2 ou wasabicurl -X GET "https://api.realoficial.com.br/api/v1/renders?limit=20&page=1" \
-H "Authorization: Bearer seu_token_aqui" \
-H "Content-Type: application/json"
{
"message": "Lista de renders obtida com sucesso.",
"data": {
"current_page": 1,
"data": [
{
"id": "01k6ij90yqtsyrzjb0hveqy9ef",
"short_id": "01k4ef56yqtsyrzjb0gveqy7cd",
"status": "done",
"download_url": "https://cdn-wasabi.realoficial.com.br/renders/01k6ij90yqtsyrzjb0hveqy9ef.mp4?v=20250124",
"render_hash": "a1b2c3d4e5f6...",
"storage_provider": "wasabi",
"created_at": "2025-01-24T11:00:00.000000Z",
"short": {
"id": "01k4ef56yqtsyrzjb0gveqy7cd",
"title": "Momento viral #1",
"start_time": 245.5,
"end_time": 305.2,
"thumbnail_url": "https://img.youtube.com/vi/abc123/maxresdefault.jpg",
"project": {
"id": "01k3ab12yqtsyrzjb0fveqy5zx",
"url": "https://www.youtube.com/watch?v=abc123"
},
"renders": [
{
"id": "01k6ij90yqtsyrzjb0hveqy9ef",
"created_at": "2025-01-24T11:00:00.000000Z"
}
]
},
"published_platforms": ["tiktok", "instagram"]
},
{
"id": "01k6ij91yqtsyrzjb0hveqy0gh",
"short_id": "01k4ef57yqtsyrzjb0gveqy8de",
"status": "processing",
"download_url": null,
"render_hash": "b2c3d4e5f6g7...",
"storage_provider": "wasabi",
"created_at": "2025-01-24T11:05:00.000000Z",
"short": {
"id": "01k4ef57yqtsyrzjb0gveqy8de",
"title": "Momento viral #2",
"start_time": 512.0,
"end_time": 571.5,
"thumbnail_url": "https://img.youtube.com/vi/abc123/maxresdefault.jpg",
"project": {
"id": "01k3ab12yqtsyrzjb0fveqy5zx",
"url": "https://www.youtube.com/watch?v=abc123"
}
},
"published_platforms": []
}
],
"first_page_url": "https://api.realoficial.com.br/api/v1/renders?page=1",
"from": 1,
"last_page": 5,
"per_page": 20,
"to": 20,
"total": 87
}
}
GET /renders?project_id=01k3ab12yqtsyrzjb0fveqy5zx
done, o campo download_url contem a URL direta para o arquivo MP4:
// Baixar video programaticamente
async function downloadVideo(render) {
if (render.status !== 'done') {
throw new Error('Render ainda nao concluido');
}
const response = await fetch(render.download_url);
const blob = await response.blob();
// Salvar localmente
const url = URL.createObjectURL(blob);
const a = document.createElement('a');
a.href = url;
a.download = `${render.short.title}.mp4`;
a.click();
}
download_url disponivel.// Fluxo completo: criar projeto -> aguardar cortes -> renderizar -> baixar
async function processVideo(youtubeUrl) {
const token = 'seu_token_aqui';
const headers = {
'Authorization': `Bearer ${token}`,
'Content-Type': 'application/json'
};
// 1. Criar projeto
const createResponse = await fetch('https://api.realoficial.com.br/api/v1/createShorts', {
method: 'POST',
headers,
body: JSON.stringify({
url: youtubeUrl,
clipDuration: '60',
startTime: 0,
endTime: 1800,
aspect_ratio: 'vertical',
layout: 'single'
})
});
const project = await createResponse.json();
// 2. Aguardar processamento (polling)
let shorts = [];
while (shorts.length === 0) {
await new Promise(r => setTimeout(r, 30000)); // 30 segundos
const shortsResponse = await fetch(
`https://api.realoficial.com.br/api/v1/shorts/${project.data.id}?sort=score`,
{ headers }
);
const shortsData = await shortsResponse.json();
if (shortsData.project?.status === 'face_analysis_done') {
shorts = shortsData.data.data;
}
}
// 3. Renderizar os 3 melhores cortes
const topShorts = shorts.slice(0, 3);
for (const short of topShorts) {
await fetch(
`https://api.realoficial.com.br/api/v1/shorts/${project.data.id}/${short.id}/render`,
{ method: 'POST', headers }
);
}
// 4. Aguardar renders
await new Promise(r => setTimeout(r, 120000)); // 2 minutos
// 5. Obter URLs dos videos
const rendersResponse = await fetch(
`https://api.realoficial.com.br/api/v1/renders?project_id=${project.data.id}`,
{ headers }
);
const renders = await rendersResponse.json();
return renders.data.data
.filter(r => r.status === 'done')
.map(r => r.download_url);
}