Vídeo

API de criação de vídeo

Gere vídeos de anúncios imobiliários a partir de fotos. Adicione legendas, música, características do imóvel e branding personalizado — tudo a partir de uma única chamada JSON síncrona.

POST/api/create_video

Constrói um vídeo MP4 a partir de uma lista de imagens com efeitos de movimento, legendas opcionais, música de fundo, sobreposições com características do imóvel e cartões finais. O endpoint é síncrono: bloqueia até o vídeo ser renderizado e depois devolve HTTP 200 com o videoUrl final.

Exemplos de vídeos walkthrough
Vê vídeos reais de anúncios gerados a partir de algumas fotos — verticais e horizontais.
Ver exemplos →

Síncrono, com timeout longo

O endpoint bloqueia até 10 minutos enquanto o vídeo é renderizado, depois devolve o URL reproduzível. Define o timeout do teu cliente HTTP para pelo menos 11 minutos — os 30–60 segundos padrão da maioria das bibliotecas HTTP terminarão antes da Pedra responder.

Se a renderização exceder 10 minutos, o endpoint devolve 500 com {"error": "Video processing timeout after 10 minutes..."}. O vídeo pode ainda terminar em segundo plano — contacta o suporte com o corpo do pedido se isto acontecer.

Parâmetros de topo

apiKeystringobrigatório
A tua chave API.
imagesarrayobrigatório
Lista ordenada de objetos image. Cada um torna-se um frame/clip no vídeo. Ver "Objeto image" abaixo.
isVerticalboolean
Formato vertical 9:16 para Instagram Reels / TikTok. Por defeito 16:9 horizontal.
Default: false
propertyCharacteristicsarray
Array de pares {label, value} (Bedrooms, Bathrooms, Surface, Price, etc). Mostrado apenas quando uma imagem tem characteristics.enabled = true.
musicobject
Música de fundo. Objeto: { enabled: boolean, track: string }.
voiceobject
Narração. Objeto: { enabled: boolean, audioUrl: string }.
brandingobject
Logo personalizado, foto do agente e sobreposição de cor de marca. Ver secção "Branding".
endingTitlestring
Título mostrado no cartão final.
endingSubtitlestring
Subtítulo do cartão final (normalmente uma CTA ou informação de contacto).

Objeto image

Cada entrada de images descreve um frame:

imageUrlstringobrigatório
URL da foto (ou data URI base64).
effectstringobrigatório
Efeito de movimento aplicado a este frame.
Values: zoom-in zoom-out static transition
secondImageUrlstring
Obrigatório quando effect = "transition". Imagem para a qual transicionar.
subtitlestring
Legenda mostrada sobre este frame.
titlestring
Sobreposição de título grande (ex.: "Living Room", "Kitchen").
watermarkobject
Configuração da marca de água: { enabled, position, opacity }. Ativada por defeito em bottom-right com opacity 1.0. Define { enabled: false } para desativar.
characteristicsobject
Mostra a sobreposição propertyCharacteristics neste frame: { enabled: true }.

Opções de marca de água

enabledboolean
Mostra a marca de água da Pedra.
Default: true
positionstring
Onde aparece a marca de água.
Values: top-left top top-right left center right bottom-left bottom bottom-right
Default: bottom-right
opacitynumber
De 0.0 (invisível) a 1.0 (totalmente opaco).
Default: 1

Faixas de música

enabledbooleanobrigatório
Ativa a música de fundo.
trackstringobrigatório
Estilo musical.
Values: calm uplifting corporate piano

Branding

showWatermarkboolean
Mostra o teu logo personalizado como marca de água em vez do da Pedra.
watermarkUrlstring
URL do teu logo (recomendado PNG com transparência).
showProfessionalPictureboolean
Mostra a foto do agente no cartão final.
professionalPictureUrlstring
URL do retrato do agente.
primaryColorstring
Cor da marca usada para sobreposições, como string hex (ex.: "#007BFF").

Exemplo: vídeo mínimo

curl -X POST https://app.pedra.ai/api/create_video \
  -H "Content-Type: application/json" \
  -d '{
    "apiKey": "YOUR_API_KEY",
    "images": [
      { "imageUrl": "https://example.com/img1.jpg", "effect": "zoom-in" },
      { "imageUrl": "https://example.com/img2.jpg", "effect": "zoom-out" }
    ],
    "isVertical": false,
    "endingTitle": "Contact us!",
    "endingSubtitle": "Visit our website"
  }'

Exemplo: vídeo de anúncio de produção completo

Walkthrough de 7 frames com efeitos mistos (zoom-in / zoom-out / transition / static), marca de água personalizada + foto do agente + cor da marca, música, narração, legendas por frame, sobreposição com características do imóvel e cartão final. Corresponde ao padrão de payload real que a própria app Pedra utiliza.

curl -X POST https://app.pedra.ai/api/create_video \
  -H "Content-Type: application/json" \
  -d '{
    "apiKey": "YOUR_API_KEY",
    "images": [
      {
        "imageUrl": "https://example.com/exterior.jpg",
        "effect": "zoom-in",
        "subtitle": "Renovated 2-bedroom in Barcelona",
        "watermark": {"enabled": true, "position": "bottom-right", "opacity": 0.75},
        "characteristics": {"enabled": true}
      },
      {
        "imageUrl": "https://example.com/living-room.jpg",
        "effect": "zoom-out",
        "subtitle": "Bright, open-plan living space",
        "watermark": {"enabled": true, "position": "bottom-right", "opacity": 0.75}
      },
      {
        "imageUrl": "https://example.com/before.jpg",
        "secondImageUrl": "https://example.com/after.jpg",
        "effect": "transition",
        "title": "Before & After"
      }
    ],
    "isVertical": false,
    "propertyCharacteristics": [
      {"label": "Price", "value": "€450,000"},
      {"label": "Bedrooms", "value": "2"},
      {"label": "Bathrooms", "value": "1"},
      {"label": "Surface", "value": "85 m²"}
    ],
    "music": {"enabled": true, "track": "uplifting"},
    "voice": {"enabled": true, "audioUrl": "https://example.com/voiceover.mp3"},
    "branding": {
      "showWatermark": true,
      "watermarkUrl": "https://example.com/agency-logo.png",
      "showProfessionalPicture": true,
      "professionalPictureUrl": "https://example.com/agent-photo.jpg",
      "primaryColor": "#000000"
    },
    "endingTitle": "Felix Ingla",
    "endingSubtitle": "felix@pedra.ai"
  }'

Resposta

JSON
{
  "message": "Video created successfully",
  "videoId": "<uuid>",
  "videoUrl": "https://pedraimages.s3.eu-west-3.amazonaws.com/<uuid>"
}

Créditos

Cada frame custa 5 créditos — exceto frames com effect: "static", que são gratuitos. Um vídeo de 5 imagens com todos os efeitos zoom-in/zoom-out consome 25 créditos. Ver Preços.

Erros de validação

HTTP 400 é devolvido para:

  • Array images em falta ou vazio.
  • Qualquer imagem sem imageUrl (o erro indica o índice em falta).
  • effect fora de [zoom-in, zoom-out, transition, static].
  • effect: "transition" sem secondImageUrl.

Rótulos de características disponíveis

Ao usar propertyCharacteristics, as seguintes chaves de rótulo são renderizadas com ícones correspondentes na sobreposição: Bedrooms, Bathrooms, Surface, Price, Location, Parking, Heating, Outdoor. Rótulos personalizados são aceites mas renderizados sem ícone.

Seguinte

Ver Erros e limites para os modos de falha das tarefas de vídeo e o comportamento de timeouts.