Genera video di annunci a partire da foto, modificali senza nuovo rendering, aggiungi voiceover con IA e sottotitoli sincronizzati e scegli la musica di sottofondo — tutto da chiamate JSON sincrone.
POST/api/create_video
Crea un video MP4 da un elenco di immagini con effetti di movimento, sottotitoli opzionali, musica di sottofondo, sovrapposizioni delle caratteristiche dell'immobile e schede finali. L'endpoint è sincrono: si blocca fino al rendering del video, poi restituisce HTTP 200 con la videoUrl finale.
L'endpoint si blocca mentre il video viene renderizzato, poi restituisce l'URL riproducibile. Il rendering può richiedere alcuni minuti, quindi imposta il timeout del client HTTP in modo generoso — i 30–60 secondi predefiniti della maggior parte delle librerie HTTP termineranno prima che Pedra risponda.
Parametri principali
apiKeystringobbligatorio
La tua chiave API.
imagesarrayobbligatorio
Elenco ordinato di oggetti image. Ognuno diventa un frame/clip nel video. Vedi "Oggetto image" sotto.
Array di coppie {label, value} (Bedrooms, Bathrooms, Surface, Price, ecc). Mostrato per impostazione predefinita su ogni frame quando fornito; imposta characteristics.enabled = false su un'immagine per nasconderlo in quel frame.
musicobject
Musica di sottofondo. Oggetto: { enabled: boolean, track: string }.
voiceobject
Voiceover. Oggetto: { enabled: boolean, audioId: string, showSubtitles: boolean }. Genera l'audioId con /api/generate_voice. Vedi la sezione Voce sotto.
brandingobject
Logo personalizzato, foto dell'agente e overlay del colore del brand. Vedi la sezione "Branding".
endingTitlestring
Titolo mostrato sulla scheda finale.
endingSubtitlestring
Sottotitolo sulla scheda finale (di solito una CTA o informazioni di contatto).
propertyIdstring
Id opzionale della proprietà (da list_properties o create_property) a cui appartengono queste foto. Se impostato, il video finale viene salvato in quella proprietà — visibile nella scheda Video e modificabile dall'app — invece di essere restituito solo come URL.
Oggetto image
Ogni voce in images descrive un frame:
imageUrlstringobbligatorio
URL della foto (o data URI base64).
effectstringobbligatorio
Effetto di movimento applicato a questo frame.
Values:zoom-inzoom-outstatictransition
secondImageUrlstring
Obbligatorio quando effect = "transition". Immagine verso cui passare.
subtitlestring
Didascalia mostrata su questo frame.
titlestring
Sovrapposizione di titolo grande (es. "Living Room", "Kitchen").
watermarkobject
Configurazione filigrana: { enabled, position, opacity }. Disattivata per impostazione predefinita. Imposta { enabled: true } per applicare la tua filigrana (bottom-right, opacity 1.0 di default).
characteristicsobject
Mostra/nasconde l'overlay propertyCharacteristics su questo frame. Attivo per impostazione predefinita quando propertyCharacteristics è fornito; imposta { enabled: false } per nasconderlo.
Walkthrough di 3 frame con effetti misti (zoom-in / zoom-out / transition / static), filigrana personalizzata + foto dell'agente + colore del brand, musica, voiceover, sottotitoli per frame, overlay con caratteristiche dell'immobile e scheda finale. Corrisponde al pattern di payload reale usato dall'app stessa di Pedra.
{
"message": "Video created successfully",
"videoId": "<uuid>",
"videoUrl": "https://img.pedra.ai/<uuid>"
}
Crediti
Ogni frame costa 5 crediti — tranne i frame con effect: "static", che sono gratuiti. Un video da 5 immagini con tutti gli effetti zoom-in/zoom-out consuma 25 crediti. Vedi Prezzi.
Errori di validazione
HTTP 400 viene restituito per:
Array images mancante o vuoto.
Qualsiasi immagine senza imageUrl (l'errore indica l'indice problematico).
effect non in [zoom-in, zoom-out, transition, static].
effect: "transition" senza secondImageUrl.
Etichette delle caratteristiche disponibili
Quando usi propertyCharacteristics, le seguenti chiavi di etichetta vengono renderizzate con icone corrispondenti nell'overlay: Bedrooms, Bathrooms, Surface, Price, Location, Parking, Heating, Outdoor. Le etichette personalizzate sono accettate ma renderizzate senza icona.
Aggiornare un video esistente
POST/api/update_video
Modifica un video già creato — tramite videoId — senza ri-renderizzare i clip invariati. Riordinare, cambiare musica o voiceover, modificare branding, schede finali, sottotitoli e titoli vengono riassemblati gratuitamente. Solo le foto nuove o modificate vengono ri-animate (e costano crediti). Come create_video, è sincrono e restituisce la nuova videoUrl. Se il video è stato creato con una propertyId, quel collegamento viene ereditato automaticamente — non serve rinviarlo.
Semantica di aggiornamento parziale
Tutti i campi tranne videoId sono opzionali. Ometti images per mantenere la timeline esistente e cambiare solo audio/testo/branding (un riassemblaggio gratuito). Ometti music, voice, branding o il testo finale per lasciare ciascuno al valore memorizzato — modificare la musica non cancella mai il voiceover, e viceversa. Quando invii images, un clip la cui foto + effetto (+ seconda foto per le transizioni) corrisponde a uno esistente viene riutilizzato così com'è.
Parametri principali
apiKeystringobbligatorio
La tua chiave API.
videoIdstringobbligatorio
Id del video da modificare (il videoId restituito da create_video).
imagesarray
Elenco ordinato completo di immagini per ricostruire la timeline; i clip che corrispondono a una foto + effetto esistenti vengono riutilizzati (nessun re-render, nessun credito). Ometti per mantenere la timeline attuale e modificare solo audio/testo/branding.
musicobject
Musica di sottofondo. Oggetto: { enabled: boolean, track: string }.
voiceobject
Voiceover. Oggetto: { enabled: boolean, audioId: string, showSubtitles: boolean }. Genera l'audioId con /api/generate_voice. Vedi la sezione Voce sotto.
brandingobject
Logo personalizzato, foto dell'agente e overlay del colore del brand. Vedi la sezione "Branding".
endingTitlestring
Titolo mostrato sulla scheda finale.
endingSubtitlestring
Sottotitolo sulla scheda finale (di solito una CTA o informazioni di contatto).
Array di coppie {label, value} (Bedrooms, Bathrooms, Surface, Price, ecc). Mostrato per impostazione predefinita su ogni frame quando fornito; imposta characteristics.enabled = false su un'immagine per nasconderlo in quel frame.
I clip riutilizzati non costano nulla. Solo i frame nuovi o modificati (non statici) vengono ri-animati a 5 crediti ciascuno. Una modifica solo musica/voce/testo è gratuita. Nota: i video creati prima del riutilizzo dei clip ri-animano tutti i clip alla prima modifica basata sulle immagini.
Voiceover e audio
Un flusso in due passaggi: scrivi un copione dalle foto (o fornisci il tuo), rendilo in audio, poi allega l'audioId restituito all'oggetto voice di un video. I sottotitoli vengono generati automaticamente dai tempi delle parole del voiceover.
Generare un copione per il voiceover
POST/api/generate_voice_script
Scrive un copione breve e naturale a partire dalle foto dell'annuncio e (facoltativamente) dai dati dell'immobile. Usa la visione affinché il copione rifletta ciò che è realmente nelle immagini. Restituisce il testo — passalo a /api/generate_voice, o modificalo prima.
Parametri principali
apiKeystringobbligatorio
La tua chiave API.
imagesarray
Foto su cui basare il copione — un array di stringhe URL o oggetti { imageUrl }. Le prime vengono analizzate con la visione.
propertyCharacteristicsarray
Dati {label, value} opzionali dell'immobile da inserire nel copione (Bedrooms, Surface, Price, ecc).
languagestring
Lingua del copione. Predefinito inglese. Vedi /api/music_library per i valori accettati.
{
"message": "Script generated successfully",
"script": "Welcome to this bright, renovated two-bedroom apartment. Step into a sunlit, open-plan living space with room to breathe across 85 square metres."
}
La generazione del copione è gratuita.
Generare un voiceover
POST/api/generate_voice
Rende un copione in una traccia di voiceover tramite sintesi vocale. Restituisce un audioId — passalo a voice.audioId di un video in create_video o update_video per allegare la narrazione (e i suoi sottotitoli sincronizzati).
Parametri principali
apiKeystringobbligatorio
La tua chiave API.
textstringobbligatorio
Il copione da narrare. Massimo 1000 caratteri.
languagestring
Lingua della voce (seleziona il narratore). Predefinito inglese. Vedi /api/music_library per i valori accettati.
Default:English
curl -X POST https://app.pedra.ai/api/generate_voice \
-H "Content-Type: application/json" \
-d '{
"apiKey": "YOUR_API_KEY",
"text": "Welcome to this bright, renovated two-bedroom apartment.",
"language": "English"
}'
Ogni voiceover costa 1 credito. Il limite di testo è di 1000 caratteri.
Elencare la libreria musicale
POST/api/music_library
Restituisce i valori validi di music.track (chiavi di genere) con etichette, oltre alle lingue accettate dagli endpoint di voiceover. Di sola lettura — non consuma mai crediti e accetta GET o POST.