{
  "aboutHtml": "<p>Το Seedance 2.0 Fast είναι το ξεχωριστά ονομαζόμενο προφίλ Fast, που επιλέγεται με το doubao-seedance-2-0-fast-260128. Υποστηρίζει δημιουργία, επεξεργασία και επέκταση βίντεο χρησιμοποιώντας κείμενο και αναφορές εικόνας, βίντεο και ήχου. Το προφίλ χρησιμεύει όταν οι οδηγίες σκηνής χρειάζονται περισσότερα από μια περιγραφή εμφάνισης: τα υπάρχοντα μέσα μπορούν επίσης να μεταδώσουν την ερμηνεία, την κινηματογραφική προσέγγιση της κάμερας και τον ήχο. Το όνομα Fast διακρίνει την ταυτότητα του αιτήματος· δεν υπόσχεται ότι μια μεμονωμένη ασύγχρονη εργασία ολοκληρώνεται σε καθορισμένο χρόνο.</p><p>Ξεκίνα με το στοιχείο που πρέπει να καθορίσει το νέο πλάνο. Το κείμενο μόνο του μπορεί να περιγράψει μια νέα σκηνή. Μια εικόνα μπορεί να καθορίσει χαρακτήρα, προϊόν ή σύνθεση· ένα βίντεο μπορεί να δώσει κίνηση ή μια υπάρχουσα ακολουθία για αναθεώρηση ή συνέχιση. Οι τεκμηριωμένοι συνδυασμοί περιεχομένου περιλαμβάνουν εικόνες με ήχο, βίντεο με ήχο και εικόνες, βίντεο και ήχο μαζί, με προαιρετικό κείμενο δίπλα στα οπτικά μέσα. Αυτοί οι συνδυασμοί δεν περιγράφουν αυτοτελές αίτημα μόνο με ήχο, οπότε συνδύασε τις ηχητικές αναφορές με την οπτική πηγή που πρέπει να καθοδηγήσουν.</p><p>Κράτησε ρητούς τους ρόλους αναφοράς στον πίνακα content και στις οδηγίες. Τα στοιχεία image_url, video_url και audio_url μπορούν να φέρουν τους ρόλους reference_image, reference_video και reference_audio. Περιέγραψε ποια εικόνα δίνει το θέμα, ποιο βίντεο δίνει την κάμερα ή τη δράση και ποιος ήχος δίνει την ηχητική επένδυση. Για ένα πλάνο προϊόντος, μια εικόνα θα μπορούσε να καθορίσει τη συσκευασία ενώ ένα βίντεο δείχνει μια κίνηση δίπλα από το αντικείμενο. Προσδιόρισε το επιθυμητό τέλος ώστε η σύντομη ακολουθία να έχει αξιοποιήσιμη τελική όψη, αντί να σταματά στη μέση μιας ενέργειας.</p><p>Για επεξεργασία, προσδιόρισε το αρχικό υλικό, την αλλαγή και τη συνέχεια που πρέπει να διατηρηθεί. Μια αλλαγή φόντου ή φωτισμού πρέπει να αφήνει σαφώς καθορισμένα το επιθυμητό θέμα και τη δράση. Για επέκταση, εξήγησε τι γίνεται μετά και πώς συνδέεται η νέα κίνηση με την υπάρχουσα σκηνή. Οι αναφορές καθοδηγούν τη δημιουργία· εξέτασε το πραγματικό σημείο σύνδεσης και όλο το απόσπασμα για την εμφάνιση, την κατεύθυνση κίνησης και τον χρονισμό, αντί να υποθέτεις ότι η συνέχεια διατηρεί κάθε λεπτομέρεια σε επίπεδο καρέ.</p><p>Το τεκμηριωμένο εύρος του 2.0 Fast είναι τέσσερα έως δεκαπέντε ακέραια δευτερόλεπτα, με διαθέσιμο το -1 για επιλογή διάρκειας από το μοντέλο μέσα σε αυτό το εύρος. Η προεπιλεγμένη διάρκεια είναι πέντε δευτερόλεπτα. Η ανάλυση εξόδου είναι 480p ή 720p, με προεπιλογή το 720p και αποκλεισμό του 1080p. Διάλεξε ανάμεσα στις σταθερές αναλογίες 16:9, 4:3, 1:1, 3:4, 9:16 και 21:9 ή σε κάδρο adaptive (προσαρμοστικό). Το κάδρο adaptive ακολουθεί τις σχετικές οδηγίες ή το πλαίσιο της αναφοράς· ένα πλάνο με πρώτο καρέ ακολουθεί την αρχική εικόνα του, ενώ το πολυτροπικό κάδρο μπορεί να δώσει προτεραιότητα στο βίντεο έναντι των εικόνων. Διάβασε τα επιστρεφόμενα πεδία της εργασίας για την πραγματική διάρκεια και αναλογία.</p><p>Χρησιμοποίησε το generate_audio για να επιλέξεις αν το παραγόμενο βίντεο περιλαμβάνει συγχρονισμένο ήχο. Η τεκμηριωμένη προεπιλογή είναι true· το false ζητά απουσία ήχου. Με ενεργοποιημένο ήχο, το προφίλ δημιουργεί φωνές, εφέ ή μουσική υπόκρουση από τις οδηγίες και το οπτικό περιεχόμενο και ο οδηγός συνιστά να περικλείεις τον διάλογο σε διπλά εισαγωγικά. Δήλωσε τον ομιλητή και την επιθυμητή σχέση ήχου και δράσης. Έλεγξε την ομιλία με κάποιον που κατέχει άπταιστα τη γλώσσα και έλεγξε τον συγχρονισμό του ήχου σε όλο το απόσπασμα, μαζί με κάθε επεξεργασμένο ή εκτεταμένο τμήμα.</p><p>Ο οδηγός του 2.0 Fast αποκλείει τους παλαιότερους ελέγχους frames και camera_fixed και δεν υποστηρίζει αναβαλλόμενη επεξεργασία flex. Περιέγραψε τη συμπεριφορά της κάμερας στη σκηνή και χρησιμοποίησε το duration για τη διάρκεια του αποσπάσματος. Οι επιλογές seed και watermark παραμένουν τεκμηριωμένες. Το ίδιο seed δεν εγγυάται πανομοιότυπη έξοδο, οπότε κράτησε το ολοκληρωμένο αρχείο όταν συγκρίνεις αναθεωρήσεις, αντί να βασίζεσαι μόνο στις ρυθμίσεις του αιτήματος.</p><p>Η χρήση token βίντεο υπολογίζεται ως (διάρκεια βίντεο εισόδου + διάρκεια βίντεο εξόδου) × πλάτος εξόδου × ύψος εξόδου × ρυθμός καρέ εξόδου / 1024. Τα αιτήματα που περιέχουν βίντεο εισόδου και όσα δεν περιέχουν έχουν διακριτές κατηγορίες χρέωσης. Το ερώτημα για την εργασία αναφέρει usage.completion_tokens και usage.total_tokens· κράτησε αυτές τις αναφερόμενες ποσότητες μαζί με το ολοκληρωμένο απόσπασμα.</p><p>Η υποβολή επιστρέφει αναγνωριστικό εργασίας πριν γίνει διαθέσιμο το ολοκληρωμένο βίντεο. Παρακολούθησε την κατάσταση επεξεργασίας, μετά ανάκτησε το content.video_url μετά την επιτυχία και κράτησε την αναφερόμενη διάρκεια, ανάλυση, αναλογία, ρυθμό καρέ και χρήση μαζί με το αποτέλεσμα. Το διάστημα λήξης μετριέται από τη δημιουργία της εργασίας, έχει προεπιλογή 172800 δευτερόλεπτα και κυμαίνεται από 3600 έως 259200 δευτερόλεπτα. Αποθήκευσε το τελικό απόσπασμα μαζί με τις αναφορές και τις οδηγίες του και μετά έλεγξε την ταυτότητα του θέματος, την επαφή αντικειμένων, τη συνέχεια στην κίνηση της κάμερας και τον χρονισμό του ήχου σε όλη την ακολουθία.</p>",
  "aboutText": "Το Seedance 2.0 Fast είναι το ξεχωριστά ονομαζόμενο προφίλ Fast, που επιλέγεται με το doubao-seedance-2-0-fast-260128. Υποστηρίζει δημιουργία, επεξεργασία και επέκταση βίντεο χρησιμοποιώντας κείμενο και αναφορές εικόνας, βίντεο και ήχου. Το προφίλ χρησιμεύει όταν οι οδηγίες σκηνής χρειάζονται περισσότερα από μια περιγραφή εμφάνισης: τα υπάρχοντα μέσα μπορούν επίσης να μεταδώσουν την ερμηνεία, την κινηματογραφική προσέγγιση της κάμερας και τον ήχο. Το όνομα Fast διακρίνει την ταυτότητα του αιτήματος· δεν υπόσχεται ότι μια μεμονωμένη ασύγχρονη εργασία ολοκληρώνεται σε καθορισμένο χρόνο.\n\nΞεκίνα με το στοιχείο που πρέπει να καθορίσει το νέο πλάνο. Το κείμενο μόνο του μπορεί να περιγράψει μια νέα σκηνή. Μια εικόνα μπορεί να καθορίσει χαρακτήρα, προϊόν ή σύνθεση· ένα βίντεο μπορεί να δώσει κίνηση ή μια υπάρχουσα ακολουθία για αναθεώρηση ή συνέχιση. Οι τεκμηριωμένοι συνδυασμοί περιεχομένου περιλαμβάνουν εικόνες με ήχο, βίντεο με ήχο και εικόνες, βίντεο και ήχο μαζί, με προαιρετικό κείμενο δίπλα στα οπτικά μέσα. Αυτοί οι συνδυασμοί δεν περιγράφουν αυτοτελές αίτημα μόνο με ήχο, οπότε συνδύασε τις ηχητικές αναφορές με την οπτική πηγή που πρέπει να καθοδηγήσουν.\n\nΚράτησε ρητούς τους ρόλους αναφοράς στον πίνακα content και στις οδηγίες. Τα στοιχεία image_url, video_url και audio_url μπορούν να φέρουν τους ρόλους reference_image, reference_video και reference_audio. Περιέγραψε ποια εικόνα δίνει το θέμα, ποιο βίντεο δίνει την κάμερα ή τη δράση και ποιος ήχος δίνει την ηχητική επένδυση. Για ένα πλάνο προϊόντος, μια εικόνα θα μπορούσε να καθορίσει τη συσκευασία ενώ ένα βίντεο δείχνει μια κίνηση δίπλα από το αντικείμενο. Προσδιόρισε το επιθυμητό τέλος ώστε η σύντομη ακολουθία να έχει αξιοποιήσιμη τελική όψη, αντί να σταματά στη μέση μιας ενέργειας.\n\nΓια επεξεργασία, προσδιόρισε το αρχικό υλικό, την αλλαγή και τη συνέχεια που πρέπει να διατηρηθεί. Μια αλλαγή φόντου ή φωτισμού πρέπει να αφήνει σαφώς καθορισμένα το επιθυμητό θέμα και τη δράση. Για επέκταση, εξήγησε τι γίνεται μετά και πώς συνδέεται η νέα κίνηση με την υπάρχουσα σκηνή. Οι αναφορές καθοδηγούν τη δημιουργία· εξέτασε το πραγματικό σημείο σύνδεσης και όλο το απόσπασμα για την εμφάνιση, την κατεύθυνση κίνησης και τον χρονισμό, αντί να υποθέτεις ότι η συνέχεια διατηρεί κάθε λεπτομέρεια σε επίπεδο καρέ.\n\nΤο τεκμηριωμένο εύρος του 2.0 Fast είναι τέσσερα έως δεκαπέντε ακέραια δευτερόλεπτα, με διαθέσιμο το -1 για επιλογή διάρκειας από το μοντέλο μέσα σε αυτό το εύρος. Η προεπιλεγμένη διάρκεια είναι πέντε δευτερόλεπτα. Η ανάλυση εξόδου είναι 480p ή 720p, με προεπιλογή το 720p και αποκλεισμό του 1080p. Διάλεξε ανάμεσα στις σταθερές αναλογίες 16:9, 4:3, 1:1, 3:4, 9:16 και 21:9 ή σε κάδρο adaptive (προσαρμοστικό). Το κάδρο adaptive ακολουθεί τις σχετικές οδηγίες ή το πλαίσιο της αναφοράς· ένα πλάνο με πρώτο καρέ ακολουθεί την αρχική εικόνα του, ενώ το πολυτροπικό κάδρο μπορεί να δώσει προτεραιότητα στο βίντεο έναντι των εικόνων. Διάβασε τα επιστρεφόμενα πεδία της εργασίας για την πραγματική διάρκεια και αναλογία.\n\nΧρησιμοποίησε το generate_audio για να επιλέξεις αν το παραγόμενο βίντεο περιλαμβάνει συγχρονισμένο ήχο. Η τεκμηριωμένη προεπιλογή είναι true· το false ζητά απουσία ήχου. Με ενεργοποιημένο ήχο, το προφίλ δημιουργεί φωνές, εφέ ή μουσική υπόκρουση από τις οδηγίες και το οπτικό περιεχόμενο και ο οδηγός συνιστά να περικλείεις τον διάλογο σε διπλά εισαγωγικά. Δήλωσε τον ομιλητή και την επιθυμητή σχέση ήχου και δράσης. Έλεγξε την ομιλία με κάποιον που κατέχει άπταιστα τη γλώσσα και έλεγξε τον συγχρονισμό του ήχου σε όλο το απόσπασμα, μαζί με κάθε επεξεργασμένο ή εκτεταμένο τμήμα.\n\nΟ οδηγός του 2.0 Fast αποκλείει τους παλαιότερους ελέγχους frames και camera_fixed και δεν υποστηρίζει αναβαλλόμενη επεξεργασία flex. Περιέγραψε τη συμπεριφορά της κάμερας στη σκηνή και χρησιμοποίησε το duration για τη διάρκεια του αποσπάσματος. Οι επιλογές seed και watermark παραμένουν τεκμηριωμένες. Το ίδιο seed δεν εγγυάται πανομοιότυπη έξοδο, οπότε κράτησε το ολοκληρωμένο αρχείο όταν συγκρίνεις αναθεωρήσεις, αντί να βασίζεσαι μόνο στις ρυθμίσεις του αιτήματος.\n\nΗ χρήση token βίντεο υπολογίζεται ως (διάρκεια βίντεο εισόδου + διάρκεια βίντεο εξόδου) × πλάτος εξόδου × ύψος εξόδου × ρυθμός καρέ εξόδου / 1024. Τα αιτήματα που περιέχουν βίντεο εισόδου και όσα δεν περιέχουν έχουν διακριτές κατηγορίες χρέωσης. Το ερώτημα για την εργασία αναφέρει usage.completion_tokens και usage.total_tokens· κράτησε αυτές τις αναφερόμενες ποσότητες μαζί με το ολοκληρωμένο απόσπασμα.\n\nΗ υποβολή επιστρέφει αναγνωριστικό εργασίας πριν γίνει διαθέσιμο το ολοκληρωμένο βίντεο. Παρακολούθησε την κατάσταση επεξεργασίας, μετά ανάκτησε το content.video_url μετά την επιτυχία και κράτησε την αναφερόμενη διάρκεια, ανάλυση, αναλογία, ρυθμό καρέ και χρήση μαζί με το αποτέλεσμα. Το διάστημα λήξης μετριέται από τη δημιουργία της εργασίας, έχει προεπιλογή 172800 δευτερόλεπτα και κυμαίνεται από 3600 έως 259200 δευτερόλεπτα. Αποθήκευσε το τελικό απόσπασμα μαζί με τις αναφορές και τις οδηγίες του και μετά έλεγξε την ταυτότητα του θέματος, την επαφή αντικειμένων, τη συνέχεια στην κίνηση της κάμερας και τον χρονισμό του ήχου σε όλη την ακολουθία.",
  "editorialOverlay": {
    "copy_fields": null,
    "copy_sha256": null,
    "copy_source": null,
    "html_sha256": "29be672cf2124d6c2fa2987879c9f771fb5eba05a50c7333502d8cc997d84d7a",
    "module_sha256": "ee9dc1c50b1e6a8fb7fa062030fcb4646b9aaaeb08be513b723a5a92a7290f06",
    "raw_model_unchanged": true,
    "schema": "ailoot-native-model-editorial-v1"
  },
  "locale": "el",
  "methods": [
    {
      "html": "<div class=\"sheet-head\"><span class=\"mav\" aria-hidden=\"true\">•</span><h2 id=\"sheet-title\">ByteDance: Seedance 2.0 Fast</h2><button class=\"icon-btn\" type=\"button\" data-close-sheet aria-label=\"Κλείσιμο\">×</button></div><div class=\"idline\"><span>ByteDance /</span><code>doubao-seedance-2-0-fast-260128</code><button type=\"button\" id=\"copy-id\">Αντιγραφή ID</button></div><nav class=\"card-jump-nav\" aria-label=\"Ενότητες κάρτας μοντέλου\"><button type=\"button\" data-card-jump=\"overview\">Εισαγωγή</button><button type=\"button\" data-card-jump=\"methods\">Είσοδοι και μέθοδοι</button><button type=\"button\" data-card-jump=\"pricing\">Τιμολόγηση</button><button type=\"button\" data-card-jump=\"examples\">Παραδείγματα</button><button type=\"button\" data-card-jump=\"results\">Αποτελέσματα</button><button type=\"button\" data-card-jump=\"aliases\">Εναλλακτικά ονόματα</button></nav><div class=\"card-method-tabs\" role=\"tablist\" aria-label=\"Μέθοδοι API\"><button type=\"button\" role=\"tab\" tabindex=\"0\" aria-controls=\"card-method-content\" aria-selected=\"true\" id=\"card-method-tab-0\" data-card-method=\"Ultra|videos|/v1/videos|doubao-seedance-2-0-fast-260128\">Βίντεο</button></div><div id=\"card-method-content\" role=\"tabpanel\" aria-labelledby=\"card-method-tab-0\"><section class=\"card-section\" data-card-section=\"overview\"><h3 tabindex=\"-1\">Εισαγωγή</h3><p class=\"mdesc-full\">Το Seedance 2.0 Fast είναι το πολυτροπικό προφίλ Fast για δημιουργία, επεξεργασία και επέκταση βίντεο. Δέχεται κείμενο και αναφορές εικόνας, βίντεο και ήχου, υποστηρίζει έξοδο με συγχρονισμένο ήχο ή χωρίς ήχο και η τεκμηρίωσή του αναφέρει αποσπάσματα 4–15 δευτερολέπτων σε 480p ή 720p.</p><dl class=\"card-io\" data-card-io><div><dt>Αποδεκτές είσοδοι</dt><dd>Κείμενο · Εικόνες · Βίντεο · Ήχος</dd></div><div><dt>Αποτελέσματα</dt><dd>Βίντεο</dd></div></dl><details class=\"card-about\"><summary>Σχετικά με το μοντέλο</summary><p class=\"note-s\" data-model-method-boundary>Αυτή η περιγραφή καλύπτει τις δυνατότητες του μοντέλου. Οι είσοδοι, έξοδοι και επιλογές που διατίθενται στο Ailoot παρατίθενται παρακάτω για την επιλεγμένη μέθοδο.</p><div class=\"mabout\" id=\"m-about\"><p>Το Seedance 2.0 Fast είναι το ξεχωριστά ονομαζόμενο προφίλ Fast, που επιλέγεται με το doubao-seedance-2-0-fast-260128. Υποστηρίζει δημιουργία, επεξεργασία και επέκταση βίντεο χρησιμοποιώντας κείμενο και αναφορές εικόνας, βίντεο και ήχου. Το προφίλ χρησιμεύει όταν οι οδηγίες σκηνής χρειάζονται περισσότερα από μια περιγραφή εμφάνισης: τα υπάρχοντα μέσα μπορούν επίσης να μεταδώσουν την ερμηνεία, την κινηματογραφική προσέγγιση της κάμερας και τον ήχο. Το όνομα Fast διακρίνει την ταυτότητα του αιτήματος· δεν υπόσχεται ότι μια μεμονωμένη ασύγχρονη εργασία ολοκληρώνεται σε καθορισμένο χρόνο.</p><p>Ξεκίνα με το στοιχείο που πρέπει να καθορίσει το νέο πλάνο. Το κείμενο μόνο του μπορεί να περιγράψει μια νέα σκηνή. Μια εικόνα μπορεί να καθορίσει χαρακτήρα, προϊόν ή σύνθεση· ένα βίντεο μπορεί να δώσει κίνηση ή μια υπάρχουσα ακολουθία για αναθεώρηση ή συνέχιση. Οι τεκμηριωμένοι συνδυασμοί περιεχομένου περιλαμβάνουν εικόνες με ήχο, βίντεο με ήχο και εικόνες, βίντεο και ήχο μαζί, με προαιρετικό κείμενο δίπλα στα οπτικά μέσα. Αυτοί οι συνδυασμοί δεν περιγράφουν αυτοτελές αίτημα μόνο με ήχο, οπότε συνδύασε τις ηχητικές αναφορές με την οπτική πηγή που πρέπει να καθοδηγήσουν.</p><p>Κράτησε ρητούς τους ρόλους αναφοράς στον πίνακα content και στις οδηγίες. Τα στοιχεία image_url, video_url και audio_url μπορούν να φέρουν τους ρόλους reference_image, reference_video και reference_audio. Περιέγραψε ποια εικόνα δίνει το θέμα, ποιο βίντεο δίνει την κάμερα ή τη δράση και ποιος ήχος δίνει την ηχητική επένδυση. Για ένα πλάνο προϊόντος, μια εικόνα θα μπορούσε να καθορίσει τη συσκευασία ενώ ένα βίντεο δείχνει μια κίνηση δίπλα από το αντικείμενο. Προσδιόρισε το επιθυμητό τέλος ώστε η σύντομη ακολουθία να έχει αξιοποιήσιμη τελική όψη, αντί να σταματά στη μέση μιας ενέργειας.</p><p>Για επεξεργασία, προσδιόρισε το αρχικό υλικό, την αλλαγή και τη συνέχεια που πρέπει να διατηρηθεί. Μια αλλαγή φόντου ή φωτισμού πρέπει να αφήνει σαφώς καθορισμένα το επιθυμητό θέμα και τη δράση. Για επέκταση, εξήγησε τι γίνεται μετά και πώς συνδέεται η νέα κίνηση με την υπάρχουσα σκηνή. Οι αναφορές καθοδηγούν τη δημιουργία· εξέτασε το πραγματικό σημείο σύνδεσης και όλο το απόσπασμα για την εμφάνιση, την κατεύθυνση κίνησης και τον χρονισμό, αντί να υποθέτεις ότι η συνέχεια διατηρεί κάθε λεπτομέρεια σε επίπεδο καρέ.</p><p>Το τεκμηριωμένο εύρος του 2.0 Fast είναι τέσσερα έως δεκαπέντε ακέραια δευτερόλεπτα, με διαθέσιμο το -1 για επιλογή διάρκειας από το μοντέλο μέσα σε αυτό το εύρος. Η προεπιλεγμένη διάρκεια είναι πέντε δευτερόλεπτα. Η ανάλυση εξόδου είναι 480p ή 720p, με προεπιλογή το 720p και αποκλεισμό του 1080p. Διάλεξε ανάμεσα στις σταθερές αναλογίες 16:9, 4:3, 1:1, 3:4, 9:16 και 21:9 ή σε κάδρο adaptive (προσαρμοστικό). Το κάδρο adaptive ακολουθεί τις σχετικές οδηγίες ή το πλαίσιο της αναφοράς· ένα πλάνο με πρώτο καρέ ακολουθεί την αρχική εικόνα του, ενώ το πολυτροπικό κάδρο μπορεί να δώσει προτεραιότητα στο βίντεο έναντι των εικόνων. Διάβασε τα επιστρεφόμενα πεδία της εργασίας για την πραγματική διάρκεια και αναλογία.</p><p>Χρησιμοποίησε το generate_audio για να επιλέξεις αν το παραγόμενο βίντεο περιλαμβάνει συγχρονισμένο ήχο. Η τεκμηριωμένη προεπιλογή είναι true· το false ζητά απουσία ήχου. Με ενεργοποιημένο ήχο, το προφίλ δημιουργεί φωνές, εφέ ή μουσική υπόκρουση από τις οδηγίες και το οπτικό περιεχόμενο και ο οδηγός συνιστά να περικλείεις τον διάλογο σε διπλά εισαγωγικά. Δήλωσε τον ομιλητή και την επιθυμητή σχέση ήχου και δράσης. Έλεγξε την ομιλία με κάποιον που κατέχει άπταιστα τη γλώσσα και έλεγξε τον συγχρονισμό του ήχου σε όλο το απόσπασμα, μαζί με κάθε επεξεργασμένο ή εκτεταμένο τμήμα.</p><p>Ο οδηγός του 2.0 Fast αποκλείει τους παλαιότερους ελέγχους frames και camera_fixed και δεν υποστηρίζει αναβαλλόμενη επεξεργασία flex. Περιέγραψε τη συμπεριφορά της κάμερας στη σκηνή και χρησιμοποίησε το duration για τη διάρκεια του αποσπάσματος. Οι επιλογές seed και watermark παραμένουν τεκμηριωμένες. Το ίδιο seed δεν εγγυάται πανομοιότυπη έξοδο, οπότε κράτησε το ολοκληρωμένο αρχείο όταν συγκρίνεις αναθεωρήσεις, αντί να βασίζεσαι μόνο στις ρυθμίσεις του αιτήματος.</p><p>Η χρήση token βίντεο υπολογίζεται ως (διάρκεια βίντεο εισόδου + διάρκεια βίντεο εξόδου) × πλάτος εξόδου × ύψος εξόδου × ρυθμός καρέ εξόδου / 1024. Τα αιτήματα που περιέχουν βίντεο εισόδου και όσα δεν περιέχουν έχουν διακριτές κατηγορίες χρέωσης. Το ερώτημα για την εργασία αναφέρει usage.completion_tokens και usage.total_tokens· κράτησε αυτές τις αναφερόμενες ποσότητες μαζί με το ολοκληρωμένο απόσπασμα.</p><p>Η υποβολή επιστρέφει αναγνωριστικό εργασίας πριν γίνει διαθέσιμο το ολοκληρωμένο βίντεο. Παρακολούθησε την κατάσταση επεξεργασίας, μετά ανάκτησε το content.video_url μετά την επιτυχία και κράτησε την αναφερόμενη διάρκεια, ανάλυση, αναλογία, ρυθμό καρέ και χρήση μαζί με το αποτέλεσμα. Το διάστημα λήξης μετριέται από τη δημιουργία της εργασίας, έχει προεπιλογή 172800 δευτερόλεπτα και κυμαίνεται από 3600 έως 259200 δευτερόλεπτα. Αποθήκευσε το τελικό απόσπασμα μαζί με τις αναφορές και τις οδηγίες του και μετά έλεγξε την ταυτότητα του θέματος, την επαφή αντικειμένων, τη συνέχεια στην κίνηση της κάμερας και τον χρονισμό του ήχου σε όλη την ακολουθία.</p></div></details></section><section class=\"card-section\" data-card-section=\"methods\"><h3 tabindex=\"-1\">Διαθέσιμα στο Ailoot · είσοδοι και μέθοδοι</h3><details class=\"card-method\" open><summary><b>Ailoot Ultra · Βίντεο</b> <code>POST /v1/videos</code></summary><dl class=\"method-capabilities\"><div><dt>Είσοδος</dt><dd><code>text</code>, <code>image</code>, <code>video</code>, <code>audio</code></dd></div><div><dt>Έξοδος</dt><dd><code>video</code></dd></div></dl><div class=\"tw\" data-card-parameters data-typed-parameters><table><thead><tr><th>Πεδίο</th><th>Τύπος</th><th>Απαίτηση</th><th>Τιμές και όρια</th><th>Προεπιλογή</th></tr></thead><tbody><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Πεδίο\" scope=\"row\"><span class=\"card-cell-label\">Πεδίο</span><code class=\"card-field-name\">model</code></th><td data-cell-label=\"Τύπος\" data-field-type><span class=\"card-cell-label\">Τύπος</span><code>string</code></td><td data-cell-label=\"Απαίτηση\"><span class=\"card-cell-label\">Απαίτηση</span>Υποχρεωτικό</td><td data-cell-label=\"Τιμές και όρια\"><span class=\"card-cell-label\">Τιμές και όρια</span><div>doubao-seedance-2-0-fast-260128</div></td><td data-cell-label=\"Προεπιλογή\" data-default=\"unspecified\"><span class=\"card-cell-label\">Προεπιλογή</span>—</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Πεδίο\" scope=\"row\"><span class=\"card-cell-label\">Πεδίο</span><code class=\"card-field-name\">content</code></th><td data-cell-label=\"Τύπος\" data-field-type><span class=\"card-cell-label\">Τύπος</span><code>array</code></td><td data-cell-label=\"Απαίτηση\"><span class=\"card-cell-label\">Απαίτηση</span>Υποχρεωτικό</td><td data-cell-label=\"Τιμές και όρια\"><span class=\"card-cell-label\">Τιμές και όρια</span><div>Συνθήκες: Εγγενή αντικείμενα κειμένου και πολυμέσων· ο εξωτερικός πίνακας δεν πρέπει να είναι κενός. Οι τύποι εμφωλευμένων κόμβων δεν επικυρώνονται από αυτόν τον γενικό κατασκευαστή του Ailoot.</div></td><td data-cell-label=\"Προεπιλογή\" data-default=\"unspecified\"><span class=\"card-cell-label\">Προεπιλογή</span>—</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Πεδίο\" scope=\"row\"><span class=\"card-cell-label\">Πεδίο</span><code class=\"card-field-name\">generate_audio</code></th><td data-cell-label=\"Τύπος\" data-field-type><span class=\"card-cell-label\">Τύπος</span><code>boolean</code></td><td data-cell-label=\"Απαίτηση\"><span class=\"card-cell-label\">Απαίτηση</span>Προαιρετικό</td><td data-cell-label=\"Τιμές και όρια\"><span class=\"card-cell-label\">Τιμές και όρια</span><div>Συνθήκες: Συγχρονισμένος ήχος ενσωματωμένος στο βίντεο.</div></td><td data-cell-label=\"Προεπιλογή\" data-default=\"known\"><span class=\"card-cell-label\">Προεπιλογή</span>true</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Πεδίο\" scope=\"row\"><span class=\"card-cell-label\">Πεδίο</span><code class=\"card-field-name\">duration</code></th><td data-cell-label=\"Τύπος\" data-field-type><span class=\"card-cell-label\">Τύπος</span><code>integer</code></td><td data-cell-label=\"Απαίτηση\"><span class=\"card-cell-label\">Απαίτηση</span>Προαιρετικό</td><td data-cell-label=\"Τιμές και όρια\"><span class=\"card-cell-label\">Τιμές και όρια</span><div>Συνθήκες: Ακέραιος 4–15 ή -1· επιστρέφεται η πραγματική διάρκεια εξόδου.</div></td><td data-cell-label=\"Προεπιλογή\" data-default=\"known\"><span class=\"card-cell-label\">Προεπιλογή</span>5</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Πεδίο\" scope=\"row\"><span class=\"card-cell-label\">Πεδίο</span><code class=\"card-field-name\">resolution</code></th><td data-cell-label=\"Τύπος\" data-field-type><span class=\"card-cell-label\">Τύπος</span><code>string</code></td><td data-cell-label=\"Απαίτηση\"><span class=\"card-cell-label\">Απαίτηση</span>Προαιρετικό</td><td data-cell-label=\"Τιμές και όρια\"><span class=\"card-cell-label\">Τιμές και όρια</span><div>480p, 720p</div><div>Συνθήκες: Το 1080p δηλώνεται ρητά ως μη υποστηριζόμενο για 2.0/fast.</div></td><td data-cell-label=\"Προεπιλογή\" data-default=\"known\"><span class=\"card-cell-label\">Προεπιλογή</span>720p</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Πεδίο\" scope=\"row\"><span class=\"card-cell-label\">Πεδίο</span><code class=\"card-field-name\">ratio</code></th><td data-cell-label=\"Τύπος\" data-field-type><span class=\"card-cell-label\">Τύπος</span><code>string</code></td><td data-cell-label=\"Απαίτηση\"><span class=\"card-cell-label\">Απαίτηση</span>Προαιρετικό</td><td data-cell-label=\"Τιμές και όρια\"><span class=\"card-cell-label\">Τιμές και όρια</span><div>16:9, 4:3, 1:1, 3:4, 9:16, 21:9, adaptive</div><div>Συνθήκες: Το adaptive αφορά ρητά τα 2.0/fast/1.5· το παράδειγμα για το 2.5 δείχνει μόνο 16:9.</div></td><td data-cell-label=\"Προεπιλογή\" data-default=\"known\"><span class=\"card-cell-label\">Προεπιλογή</span>adaptive</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Πεδίο\" scope=\"row\"><span class=\"card-cell-label\">Πεδίο</span><code class=\"card-field-name\">watermark</code></th><td data-cell-label=\"Τύπος\" data-field-type><span class=\"card-cell-label\">Τύπος</span><code>boolean</code></td><td data-cell-label=\"Απαίτηση\"><span class=\"card-cell-label\">Απαίτηση</span>Προαιρετικό</td><td data-cell-label=\"Τιμές και όρια\"><span class=\"card-cell-label\">Τιμές και όρια</span></td><td data-cell-label=\"Προεπιλογή\" data-default=\"known\"><span class=\"card-cell-label\">Προεπιλογή</span>false</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Πεδίο\" scope=\"row\"><span class=\"card-cell-label\">Πεδίο</span><code class=\"card-field-name\">seed</code></th><td data-cell-label=\"Τύπος\" data-field-type><span class=\"card-cell-label\">Τύπος</span><code>integer</code></td><td data-cell-label=\"Απαίτηση\"><span class=\"card-cell-label\">Απαίτηση</span>Προαιρετικό</td><td data-cell-label=\"Τιμές και όρια\"><span class=\"card-cell-label\">Τιμές και όρια</span><div>Ελάχιστο: -1</div><div>Μέγιστο: 4.294.967.295</div></td><td data-cell-label=\"Προεπιλογή\" data-default=\"known\"><span class=\"card-cell-label\">Προεπιλογή</span>-1</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Πεδίο\" scope=\"row\"><span class=\"card-cell-label\">Πεδίο</span><code class=\"card-field-name\">execution_expires_after</code></th><td data-cell-label=\"Τύπος\" data-field-type><span class=\"card-cell-label\">Τύπος</span><code>integer</code></td><td data-cell-label=\"Απαίτηση\"><span class=\"card-cell-label\">Απαίτηση</span>Προαιρετικό</td><td data-cell-label=\"Τιμές και όρια\"><span class=\"card-cell-label\">Τιμές και όρια</span><div>Ελάχιστο: 3.600</div><div>Μέγιστο: 259.200</div><div>Μονάδα: δευτερόλεπτα</div></td><td data-cell-label=\"Προεπιλογή\" data-default=\"known\"><span class=\"card-cell-label\">Προεπιλογή</span>172.800</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Πεδίο\" scope=\"row\"><span class=\"card-cell-label\">Πεδίο</span><code class=\"card-field-name\">service_tier</code></th><td data-cell-label=\"Τύπος\" data-field-type><span class=\"card-cell-label\">Τύπος</span><code>string</code></td><td data-cell-label=\"Απαίτηση\"><span class=\"card-cell-label\">Απαίτηση</span>Προαιρετικό</td><td data-cell-label=\"Τιμές και όρια\"><span class=\"card-cell-label\">Τιμές και όρια</span><div>default</div><div>Συνθήκες: Τα 2.0/fast αποκλείουν το flex εκτός σύνδεσης· το πεδίο εφαρμογής για το 2.5 δεν έχει καθοριστεί.</div></td><td data-cell-label=\"Προεπιλογή\" data-default=\"known\"><span class=\"card-cell-label\">Προεπιλογή</span>default</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Πεδίο\" scope=\"row\"><span class=\"card-cell-label\">Πεδίο</span><code class=\"card-field-name\">safety_identifier</code></th><td data-cell-label=\"Τύπος\" data-field-type><span class=\"card-cell-label\">Τύπος</span><code>string</code></td><td data-cell-label=\"Απαίτηση\"><span class=\"card-cell-label\">Απαίτηση</span>Προαιρετικό</td><td data-cell-label=\"Τιμές και όρια\"><span class=\"card-cell-label\">Τιμές και όρια</span></td><td data-cell-label=\"Προεπιλογή\" data-default=\"unspecified\"><span class=\"card-cell-label\">Προεπιλογή</span>—</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Πεδίο\" scope=\"row\"><span class=\"card-cell-label\">Πεδίο</span><code class=\"card-field-name\">tools</code></th><td data-cell-label=\"Τύπος\" data-field-type><span class=\"card-cell-label\">Τύπος</span><code>object</code></td><td data-cell-label=\"Απαίτηση\"><span class=\"card-cell-label\">Απαίτηση</span>Προαιρετικό</td><td data-cell-label=\"Τιμές και όρια\"><span class=\"card-cell-label\">Τιμές και όρια</span><div>Συνθήκες: Μόνο 2.0/fast· τεκμηριωμένο type=web_search.</div></td><td data-cell-label=\"Προεπιλογή\" data-default=\"unspecified\"><span class=\"card-cell-label\">Προεπιλογή</span>—</td></tr></tbody></table></div><details class=\"card-about\" data-material-combinations><summary>Συνδυασμοί υλικών εισόδου</summary><p class=\"note-s\"><b></b></p><p class=\"note-s\"><b></b></p><p class=\"note-s\"><b></b></p><p class=\"note-s\"><b></b></p><p class=\"note-s\"><b></b></p><p class=\"note-s\"><b></b></p><p class=\"note-s\"><b></b></p></details><details class=\"note-s\" data-method-contract><summary>Παράμετροι και κύκλος ζωής μεθόδου</summary><div class=\"tw\" data-card-table=\"contract\"><table><thead><tr><th>Παράμετρος</th><th>Σύμβαση</th></tr></thead><tbody><tr><th data-cell-label=\"Παράμετρος\" scope=\"row\"><span class=\"card-cell-label\">Παράμετρος</span><code>content_type</code></th><td data-cell-label=\"Σύμβαση\"><span class=\"card-cell-label\">Σύμβαση</span>application/json</td></tr><tr><th data-cell-label=\"Παράμετρος\" scope=\"row\"><span class=\"card-cell-label\">Παράμετρος</span><code>required</code></th><td data-cell-label=\"Σύμβαση\"><span class=\"card-cell-label\">Σύμβαση</span>content, model</td></tr><tr><th data-cell-label=\"Παράμετρος\" scope=\"row\"><span class=\"card-cell-label\">Παράμετρος</span><code>optional</code></th><td data-cell-label=\"Σύμβαση\"><span class=\"card-cell-label\">Σύμβαση</span>generate_audio, duration, resolution, ratio, watermark, seed, execution_expires_after, service_tier, safety_identifier, tools</td></tr><tr><th data-cell-label=\"Παράμετρος\" scope=\"row\"><span class=\"card-cell-label\">Παράμετρος</span><code>material_types</code></th><td data-cell-label=\"Σύμβαση\"><span class=\"card-cell-label\">Σύμβαση</span>text, image, video, audio</td></tr><tr><th data-cell-label=\"Παράμετρος\" scope=\"row\"><span class=\"card-cell-label\">Παράμετρος</span><code>additional_properties</code></th><td data-cell-label=\"Σύμβαση\"><span class=\"card-cell-label\">Σύμβαση</span>true</td></tr><tr><th data-cell-label=\"Παράμετρος\" scope=\"row\"><span class=\"card-cell-label\">Παράμετρος</span><code>validation_scope</code></th><td data-cell-label=\"Σύμβαση\"><span class=\"card-cell-label\">Σύμβαση</span>Το Ailoot ελέγχει τους τύπους των απαιτούμενων πεδίων και ότι το model και ο πίνακας content δεν είναι κενά. Τα υπόλοιπα πεδία αιτήματος διατηρούνται για το επιλεγμένο μοντέλο.</td></tr><tr><th data-cell-label=\"Παράμετρος\" scope=\"row\"><span class=\"card-cell-label\">Παράμετρος</span><code>material_combinations</code></th><td data-cell-label=\"Σύμβαση\"><span class=\"card-cell-label\">Σύμβαση</span>text, image, video, image, audio, image, video, video, audio, image, video, audio</td></tr><tr><th data-cell-label=\"Παράμετρος\" scope=\"row\"><span class=\"card-cell-label\">Παράμετρος</span><code>optional_text_with_media</code></th><td data-cell-label=\"Σύμβαση\"><span class=\"card-cell-label\">Σύμβαση</span>true</td></tr><tr><th data-cell-label=\"Παράμετρος\" scope=\"row\"><span class=\"card-cell-label\">Παράμετρος</span><code>reference_media_count_and_size_limits</code></th><td data-cell-label=\"Σύμβαση\"><span class=\"card-cell-label\">Σύμβαση</span>null</td></tr></tbody></table></div><p>Εναλλακτικά ονόματα μεθόδου: <code>/v1/videos/generations</code></p><p>Κύκλος ζωής: <code>submit_once_poll_original</code></p><p class=\"note-s\"><code>GET /v1/videos/{request_id}</code></p><p class=\"note-s\"><code>GET /v1/videos/generations/{request_id}</code></p><p class=\"note-s\"><code>GET /v1/videos/{request_id}/content</code></p><p class=\"note-s\"><code>GET /v1/videos/generations/{request_id}/content</code></p><p class=\"note-s\">Δημιουργήστε μία φορά και διατηρήστε το δημόσιο id/polling_url που επιστρέφεται.</p><p class=\"note-s\">Ελέγχετε περιοδικά την αρχική εργασία· κατεβάστε το πραγματικό content.video_url που σας ανήκει μετά το succeeded.</p></details></details></section><section class=\"card-section\" data-card-section=\"pricing\"><h3 tabindex=\"-1\">Τιμολόγηση</h3><div class=\"card-result-process\" data-billing-basis><h5>Πώς υπολογίζεται η τελική χρέωση</h5><p class=\"note-s\">Οι εμφανιζόμενες τιμές χρησιμοποιούνται για την εκτίμηση του κόστους πριν από την παραγωγή. Η τελική χρέωση υπολογίζεται από το κόστος που καταγράφηκε για την αρχική παραγωγή. Η μετρημένη διάρκεια της εξόδου και οι προβλεπόμενες ποσότητες δεν αποτελούν την τελική χρεώσιμη ποσότητα.</p></div><div data-native-semantic-method=\"v1\" data-tariff-reference-only><p class=\"note-s\" data-rate-support-note>Οι τιμολογιακές αναφορές δεν προσθέτουν επιλογές αιτήματος. Οι υποστηριζόμενες παράμετροι αναφέρονται στην επιλεγμένη μέθοδο.</p><dl data-price-conditions><dt>Γρήγορη λειτουργία</dt><dd>Δεν έχει οριστεί <span class=\"note-s\">Όταν επιλέγεται η γρήγορη λειτουργία</span></dd><dt>Λειτουργία flex</dt><dd>Δεν έχει οριστεί <span class=\"note-s\">Όταν επιλέγεται η λειτουργία flex</span></dd><dt>Μέγιστη προσπάθεια συλλογισμού</dt><dd>Δεν έχει οριστεί <span class=\"note-s\">Όταν η μέγιστη προσπάθεια συλλογισμού χρησιμοποιεί την προσαρμογή default</span></dd></dl></div><div data-declared-tariff-pricing><h4>Εκτιμώμενες χρεώσεις για σύγκριση</h4><h4>Τιμές ανά διαμόρφωση</h4><p class=\"note-s\">Αντιστοιχίστε κάθε χρέωση στις συνθήκες που εμφανίζονται. Χρησιμοποιήστε μία χρέωση ανά σύνολο εναλλακτικών διαμορφώσεων.</p><div class=\"tw\" data-pricing-profiles><table><thead><tr><th>Διαμόρφωση</th><th>Πίνακας χρεώσεων</th><th>Προβλεπόμενη ποσότητα</th><th>Μονάδα τιμολόγησης</th><th>Χρέωση</th></tr></thead><tbody><tr><th data-cell-label=\"Διαμόρφωση\" scope=\"row\"><span class=\"card-cell-label\">Διαμόρφωση</span>Βασικές χρεώσεις token</th><td data-cell-label=\"Πίνακας χρεώσεων\"><span class=\"card-cell-label\">Πίνακας χρεώσεων</span>Βασική χρέωση</td><td data-cell-label=\"Προβλεπόμενη ποσότητα\"><span class=\"card-cell-label\">Προβλεπόμενη ποσότητα</span>—</td><td data-cell-label=\"Μονάδα τιμολόγησης\"><span class=\"card-cell-label\">Μονάδα τιμολόγησης</span>—</td><td data-cell-label=\"Χρέωση\"><span class=\"card-cell-label\">Χρέωση</span><div><span>Είσοδος · Token εισόδου · Εκτίμηση μόνο για σύγκριση</span> <b>—</b> <span class=\"price-unit\">/ 1K token</span></div><div><span>Έξοδος · Token εξόδου · Εκτίμηση μόνο για σύγκριση</span> <b>—</b> <span class=\"price-unit\">/ 1K token</span></div><div><span>Είσοδος · Ανάγνωση από την κρυφή μνήμη · Εκτίμηση μόνο για σύγκριση</span> <b>—</b> <span class=\"price-unit\">/ 1K token</span></div><div><span>Είσοδος · Εγγραφή στην κρυφή μνήμη · Εκτίμηση μόνο για σύγκριση</span> <b>—</b> <span class=\"price-unit\">/ 1K token</span></div><div><span>Είσοδος · Εγγραφή στην κρυφή μνήμη, 1 ώρα · Εκτίμηση μόνο για σύγκριση</span> <b>—</b> <span class=\"price-unit\">/ 1K token</span></div></td></tr><tr><th data-cell-label=\"Διαμόρφωση\" scope=\"row\"><span class=\"card-cell-label\">Διαμόρφωση</span>Η είσοδος περιέχει βίντεο αναφοράς.</th><td data-cell-label=\"Πίνακας χρεώσεων\"><span class=\"card-cell-label\">Πίνακας χρεώσεων</span>—</td><td data-cell-label=\"Προβλεπόμενη ποσότητα\"><span class=\"card-cell-label\">Προβλεπόμενη ποσότητα</span>—</td><td data-cell-label=\"Μονάδα τιμολόγησης\"><span class=\"card-cell-label\">Μονάδα τιμολόγησης</span>ανά 1K token βίντεο</td><td data-cell-label=\"Χρέωση\"><span class=\"card-cell-label\">Χρέωση</span><div><span>Έξοδος · Εκτίμηση μόνο για σύγκριση</span> <b>$0.007536</b> <span class=\"price-unit\">ανά 1K token βίντεο</span></div></td></tr><tr><th data-cell-label=\"Διαμόρφωση\" scope=\"row\"><span class=\"card-cell-label\">Διαμόρφωση</span>Η είσοδος δεν περιέχει βίντεο αναφοράς.</th><td data-cell-label=\"Πίνακας χρεώσεων\"><span class=\"card-cell-label\">Πίνακας χρεώσεων</span>—</td><td data-cell-label=\"Προβλεπόμενη ποσότητα\"><span class=\"card-cell-label\">Προβλεπόμενη ποσότητα</span>—</td><td data-cell-label=\"Μονάδα τιμολόγησης\"><span class=\"card-cell-label\">Μονάδα τιμολόγησης</span>ανά 1K token βίντεο</td><td data-cell-label=\"Χρέωση\"><span class=\"card-cell-label\">Χρέωση</span><div><span>Έξοδος · Εκτίμηση μόνο για σύγκριση</span> <b>$0.013032</b> <span class=\"price-unit\">ανά 1K token βίντεο</span></div></td></tr><tr><th data-cell-label=\"Διαμόρφωση\" scope=\"row\"><span class=\"card-cell-label\">Διαμόρφωση</span>Εκτιμώμενο κόστος δημιουργίας</th><td data-cell-label=\"Πίνακας χρεώσεων\"><span class=\"card-cell-label\">Πίνακας χρεώσεων</span>—</td><td data-cell-label=\"Προβλεπόμενη ποσότητα\"><span class=\"card-cell-label\">Προβλεπόμενη ποσότητα</span>εκτίμηση για μία δημιουργία</td><td data-cell-label=\"Μονάδα τιμολόγησης\"><span class=\"card-cell-label\">Μονάδα τιμολόγησης</span>—</td><td data-cell-label=\"Χρέωση\"><span class=\"card-cell-label\">Χρέωση</span><div><span>Έξοδος · Εκτιμώμενο κόστος δημιουργίας · Εκτίμηση μόνο για σύγκριση</span> <b>$0.822402</b> <span class=\"price-unit\">εκτίμηση πριν από τη δημιουργία</span></div><p class=\"note-s\">Αυτή η εκτίμηση δεν αποτελεί πρόσθετη χρέωση ούτε σταθερή τιμή για την ολοκληρωμένη παραγωγή.</p></td></tr></tbody></table></div></div><p class=\"note-s\">Το Ailoot δεσμεύει ένα εκτιμώμενο ποσό πριν από το αίτημα. Μετά το αποτέλεσμα, εκκαθαρίζει την τελική χρέωση βάσει της μετρημένης χρήσης. Η εκκαθάριση ροής χρησιμοποιεί την τελική καταγραφή χρήσης. <a href=\"/docs/el/billing/reserve/\">Πώς λειτουργούν η δέσμευση και η εκκαθάριση →</a></p></section><section class=\"card-section\" data-card-section=\"examples\"><h3 tabindex=\"-1\">Παραδείγματα αιτημάτων</h3><h4>Ailoot Ultra · Βίντεο</h4><div class=\"code-group\"><div class=\"cg-bar\"><div class=\"cg-tabs\" role=\"tablist\" aria-label=\"Παραλλαγές κώδικα\"><button class=\"cg-tab\" id=\"model-code-2780-tab-0\" role=\"tab\" type=\"button\" aria-controls=\"model-code-2780-panel-0\" aria-selected=\"true\" tabindex=\"0\">curl · δημιουργήστε βίντεο</button><button class=\"cg-tab\" id=\"model-code-2780-tab-1\" role=\"tab\" type=\"button\" aria-controls=\"model-code-2780-panel-1\" aria-selected=\"false\" tabindex=\"-1\">curl · διαβάστε την αρχική εργασία</button><button class=\"cg-tab\" id=\"model-code-2780-tab-2\" role=\"tab\" type=\"button\" aria-controls=\"model-code-2780-panel-2\" aria-selected=\"false\" tabindex=\"-1\">curl · κατεβάστε το βίντεο που σας ανήκει</button></div><div class=\"cg-tools\"><button class=\"cg-btn cg-copy\" type=\"button\" aria-label=\"Αντιγραφή κώδικα\"><svg class=\"cp\" viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.4\"><rect x=\"5.25\" y=\"5.25\" width=\"8.5\" height=\"8.5\" rx=\"1.75\"/><path d=\"M10.75 5.25V3.5a1.25 1.25 0 0 0-1.25-1.25H3.5A1.25 1.25 0 0 0 2.25 3.5v6a1.25 1.25 0 0 0 1.25 1.25h1.75\"/></svg><svg class=\"ok\" viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.4\"><path d=\"m3 8.5 3.25 3.25L13 5\"/></svg></button></div></div><div class=\"cg-body\"><div class=\"cg-pane\" id=\"model-code-2780-panel-0\" role=\"tabpanel\" aria-labelledby=\"model-code-2780-tab-0\"><pre data-lang=\"bash\"><code>set -eu\n: &quot;${AILOOT_API_KEY:?Set your Ailoot API key}&quot;\ncat &gt; request.json &lt;&lt;&#39;JSON_REQUEST&#39;\n{&quot;model&quot;:&quot;doubao-seedance-2-0-fast-260128&quot;,&quot;content&quot;:[{&quot;type&quot;:&quot;text&quot;,&quot;text&quot;:&quot;女孩抱着狐狸，女孩睁开眼，温柔地看向镜头，狐狸友善地抱着，镜头缓缓拉出，女孩的头发被风吹动&quot;}]}\nJSON_REQUEST\ncurl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/videos \\\n  -H &quot;Authorization: Bearer $AILOOT_API_KEY&quot; -H &#39;Content-Type: application/json&#39; \\\n  --data-binary @request.json -D response-headers.txt -o result.json\n</code></pre></div><div class=\"cg-pane\" id=\"model-code-2780-panel-1\" role=\"tabpanel\" aria-labelledby=\"model-code-2780-tab-1\" hidden><pre data-lang=\"bash\"><code>set -eu\n: &quot;${AILOOT_API_KEY:?Set your Ailoot API key}&quot;\npython3 - &lt;&lt;&#39;PY_POLL&#39;\nimport json\nfrom pathlib import Path\nfrom urllib.parse import quote,urljoin,urlsplit\nr=json.loads(Path(&quot;result.json&quot;).read_text())\ni=r.get(&quot;id&quot;)\nif not isinstance(i,str) or not i.startswith(&quot;native302_&quot;):raise SystemExit(&quot;Keep original response/headers/id; do not resubmit creation.&quot;)\nu=urljoin(&quot;https://api.ailoot.ai&quot;,r.get(&quot;polling_url&quot;) or &quot;/v1/videos/&quot;+quote(i,safe=&quot;&quot;))\np=urlsplit(u)\nif p.scheme!=&quot;https&quot; or p.netloc!=&quot;api.ailoot.ai&quot; or not p.path.startswith(&quot;/v1/videos/&quot;):raise SystemExit(&quot;Use actual Ailoot lookup path.&quot;)\nPath(&quot;poll-url.txt&quot;).write_text(u)\nPY_POLL\ncurl --fail-with-body --silent --show-error &quot;$(cat poll-url.txt)&quot; -H &quot;Authorization: Bearer $AILOOT_API_KEY&quot; -D status-headers.txt -o status.json\n</code></pre></div><div class=\"cg-pane\" id=\"model-code-2780-panel-2\" role=\"tabpanel\" aria-labelledby=\"model-code-2780-tab-2\" hidden><pre data-lang=\"bash\"><code>set -eu\npython3 - &lt;&lt;&#39;PY_ASSETS&#39;\nimport json\nfrom pathlib import Path\nfrom urllib.parse import urlsplit\nr=json.loads(Path(&quot;status.json&quot;).read_text())\nif r.get(&quot;status&quot;)!=&quot;succeeded&quot;:raise SystemExit(&quot;Poll same original job until an owned result is returned.&quot;)\nu=r.get(&quot;content&quot;,{}).get(&quot;video_url&quot;)\nurls=[u] if isinstance(u,str) else u\nif not isinstance(urls,list) or not urls:raise SystemExit(&quot;No completed video URL.&quot;)\nfor u in urls:\n    if not isinstance(u,str):raise SystemExit(&quot;Invalid returned URL.&quot;)\n    p=urlsplit(u)\n    if p.scheme!=&quot;https&quot; or p.netloc!=&quot;api.ailoot.ai&quot; or not p.path.startswith(&quot;/v1/media/assets/&quot;) or not p.path.endswith(&quot;/content&quot;) or not p.query:raise SystemExit(&quot;Wait for actual Ailoot-owned signed result.&quot;)\nPath(&quot;asset-urls.txt&quot;).write_text(&quot;\\n&quot;.join(urls)+&quot;\\n&quot;)\nPY_ASSETS\nindex=0\nwhile IFS= read -r asset_url; do\n  curl --fail-with-body --silent --show-error &quot;$asset_url&quot; -o &quot;video-${index}.bin&quot;\n  index=$((index + 1))\ndone &lt; asset-urls.txt\n</code></pre></div></div></div></section><section class=\"card-section\" data-card-section=\"results\"><h3 tabindex=\"-1\">Λήψη και αποθήκευση αποτελεσμάτων</h3><h4>Ailoot Ultra · Βίντεο</h4><p class=\"note-s\">Εγγενές JSON με δημόσιο id/polling_url. Μετά τη δημοσίευση, το content.video_url περιέχει υπογεγραμμένα URL που ανήκουν στο Ailoot· πριν από τη δημοσίευση, τα επιλεγμένα URL εξόδου είναι κενά.</p><ul class=\"card-result-paths\"><li><code>GET /v1/videos/{request_id}</code></li><li><code>GET /v1/videos/generations/{request_id}</code></li><li><code>GET /v1/videos/{request_id}/content</code></li><li><code>GET /v1/videos/generations/{request_id}/content</code></li></ul><div class=\"card-result-process\" data-all-results><h5>Διατηρήστε όλα τα ολοκληρωμένα αποτελέσματα</h5><p class=\"note-s\">Αποθηκεύστε κάθε ολοκληρωμένο βίντεο ή αρχείο που επιστρέφεται· ανακτήστε κάθε πραγματικό URL αρχείου που επιστρέφεται.</p><p class=\"note-s\">Διατηρήστε κάθε πραγματικό URL στο content.video_url· το index πρέπει να προσδιορίζει πραγματική έξοδο που επιστράφηκε.</p></div><div class=\"card-result-process\" data-unknown-recovery><h5>Αν χρειάζεται έλεγχος της αρχικής απάντησης</h5><p class=\"note-s\">Διατηρήστε την αρχική απόκριση, τις κεφαλίδες και το id, και ελέγχετε περιοδικά αυτή τη λειτουργία· μην επανυποβάλετε ποτέ αίτημα δημιουργίας με άγνωστο αποτέλεσμα.</p></div><details class=\"card-about\" data-output-fields><summary>Πεδία απάντησης</summary><div class=\"tw\" data-card-table=\"output\"><table><thead><tr><th>Πεδίο</th><th>Τύπος</th></tr></thead><tbody><tr><th data-cell-label=\"Πεδίο\" scope=\"row\"><span class=\"card-cell-label\">Πεδίο</span><code class=\"card-field-name\">id</code></th><td data-cell-label=\"Τύπος\" data-field-type><span class=\"card-cell-label\">Τύπος</span>string</td></tr><tr><th data-cell-label=\"Πεδίο\" scope=\"row\"><span class=\"card-cell-label\">Πεδίο</span><code class=\"card-field-name\">provider_task_id</code></th><td data-cell-label=\"Τύπος\" data-field-type><span class=\"card-cell-label\">Τύπος</span>string</td></tr><tr><th data-cell-label=\"Πεδίο\" scope=\"row\"><span class=\"card-cell-label\">Πεδίο</span><code class=\"card-field-name\">polling_url</code></th><td data-cell-label=\"Τύπος\" data-field-type><span class=\"card-cell-label\">Τύπος</span>string</td></tr><tr><th data-cell-label=\"Πεδίο\" scope=\"row\"><span class=\"card-cell-label\">Πεδίο</span><code class=\"card-field-name\">status</code></th><td data-cell-label=\"Τύπος\" data-field-type><span class=\"card-cell-label\">Τύπος</span>string when supplied</td></tr><tr><th data-cell-label=\"Πεδίο\" scope=\"row\"><span class=\"card-cell-label\">Πεδίο</span><code class=\"card-field-name\">content.video_url</code></th><td data-cell-label=\"Τύπος\" data-field-type><span class=\"card-cell-label\">Τύπος</span>string|string[]</td></tr><tr><th data-cell-label=\"Πεδίο\" scope=\"row\"><span class=\"card-cell-label\">Πεδίο</span><code class=\"card-field-name\">usage</code></th><td data-cell-label=\"Τύπος\" data-field-type><span class=\"card-cell-label\">Τύπος</span>object when supplied</td></tr></tbody></table></div></details><details class=\"card-about\" data-method-errors><summary>Σφάλματα και επόμενα βήματα</summary><div class=\"tw\" data-card-table=\"errors\"><table><thead><tr><th>Απάντηση</th><th>Συνθήκη</th><th>Επόμενο βήμα</th></tr></thead><tbody><tr><th data-cell-label=\"Απάντηση\" scope=\"row\"><span class=\"card-cell-label\">Απάντηση</span>400 · <code>invalid_request_error</code></th><td data-cell-label=\"Συνθήκη\"><span class=\"card-cell-label\">Συνθήκη</span>Μη έγκυρο JSON, μοντέλο, τύποι απαιτούμενων πεδίων ή δείκτης περιεχομένου.</td><td data-cell-label=\"Επόμενο βήμα\"><span class=\"card-cell-label\">Επόμενο βήμα</span></td></tr><tr><th data-cell-label=\"Απάντηση\" scope=\"row\"><span class=\"card-cell-label\">Απάντηση</span>401 · <code>authentication_error</code></th><td data-cell-label=\"Συνθήκη\"><span class=\"card-cell-label\">Συνθήκη</span>Μη έγκυρο κλειδί API του Ailoot.</td><td data-cell-label=\"Επόμενο βήμα\"><span class=\"card-cell-label\">Επόμενο βήμα</span></td></tr><tr><th data-cell-label=\"Απάντηση\" scope=\"row\"><span class=\"card-cell-label\">Απάντηση</span>404 · <code>not_found_error</code></th><td data-cell-label=\"Συνθήκη\"><span class=\"card-cell-label\">Συνθήκη</span>Η εργασία ή έξοδος απουσιάζει ή δεν ανήκει στον ίδιο χρήστη, κλειδί API ή ομάδα.</td><td data-cell-label=\"Επόμενο βήμα\"><span class=\"card-cell-label\">Επόμενο βήμα</span></td></tr><tr><th data-cell-label=\"Απάντηση\" scope=\"row\"><span class=\"card-cell-label\">Απάντηση</span>502 · <code>result_pending_check</code></th><td data-cell-label=\"Συνθήκη\"><span class=\"card-cell-label\">Συνθήκη</span>Η αρχική υποβολή ή κατάστασή της είναι ελλιπής· διατηρήστε το αρχικό ID, χωρίς επανυποβολή.</td><td data-cell-label=\"Επόμενο βήμα\"><span class=\"card-cell-label\">Επόμενο βήμα</span></td></tr><tr><th data-cell-label=\"Απάντηση\" scope=\"row\"><span class=\"card-cell-label\">Απάντηση</span>503 · <code>result_pending_check</code></th><td data-cell-label=\"Συνθήκη\"><span class=\"card-cell-label\">Συνθήκη</span>Τα αρχικά πολυμέσα, η διαδρομή ή η εκκαθάριση ελέγχονται· συνεχίστε την αρχική λειτουργία.</td><td data-cell-label=\"Επόμενο βήμα\"><span class=\"card-cell-label\">Επόμενο βήμα</span></td></tr></tbody></table></div></details></section><section class=\"card-section\" data-card-section=\"aliases\"><h3 tabindex=\"-1\">Εναλλακτικά ονόματα</h3><h4>Εναλλακτικά ονόματα μοντέλου</h4><p class=\"note-s\"><span data-model-alias-route=\"Ultra\"><b>Ailoot Ultra</b> <a href=\"#m=doubao-seedance-2-0-fast-260128&amp;route=Ultra&amp;caller=doubao-seedance-2-0-fast-260128&amp;fmt=videos\"><code>doubao-seedance-2-0-fast-260128</code></a></span></p><h4>Εναλλακτικές διαδρομές μεθόδων</h4><p class=\"note-s\"><code>/v1/videos/generations</code></p><h4>Σχετικά ID μοντέλων</h4><p class=\"note-s\"><a href=\"#m=doubao-seedance-2-0-fast-260128&amp;route=Ultra&amp;caller=doubao-seedance-2-0-fast-260128&amp;fmt=videos\"><code>doubao-seedance-2-0-fast-260128</code></a></p></section></div>",
      "method_identity": {
        "effective_request_model_id": "doubao-seedance-2-0-fast-260128",
        "fmt": "videos",
        "http": "POST",
        "path": "/v1/videos",
        "request_model_id": "doubao-seedance-2-0-fast-260128",
        "route_label": "Ultra"
      },
      "method_key": "Ultra|videos|/v1/videos|doubao-seedance-2-0-fast-260128",
      "ordinal": 0,
      "rawMethod": {
        "available": null,
        "billing_basis": {
          "basis": "original_invoice_usd",
          "description": "Οι εμφανιζόμενες τιμές χρησιμοποιούνται για την εκτίμηση του κόστους πριν από την παραγωγή. Η τελική χρέωση υπολογίζεται από το κόστος που καταγράφηκε για την αρχική παραγωγή. Η μετρημένη διάρκεια της εξόδου και οι προβλεπόμενες ποσότητες δεν αποτελούν την τελική χρεώσιμη ποσότητα.",
          "forecast_quantity_is_estimate": true,
          "physical_output_is_billable_quantity": false,
          "version": "original_invoice_usd_v1"
        },
        "cache_read": null,
        "cache_write": null,
        "cache_write_1h": null,
        "contract": {
          "data": {
            "errors": [
              {
                "condition": "Μη έγκυρο JSON, μοντέλο, τύποι απαιτούμενων πεδίων ή δείκτης περιεχομένου.",
                "http_status": 400,
                "type": "invalid_request_error"
              },
              {
                "condition": "Μη έγκυρο κλειδί API του Ailoot.",
                "http_status": 401,
                "type": "authentication_error"
              },
              {
                "condition": "Η εργασία ή έξοδος απουσιάζει ή δεν ανήκει στον ίδιο χρήστη, κλειδί API ή ομάδα.",
                "http_status": 404,
                "type": "not_found_error"
              },
              {
                "condition": "Η αρχική υποβολή ή κατάστασή της είναι ελλιπής· διατηρήστε το αρχικό ID, χωρίς επανυποβολή.",
                "http_status": 502,
                "type": "result_pending_check"
              },
              {
                "condition": "Τα αρχικά πολυμέσα, η διαδρομή ή η εκκαθάριση ελέγχονται· συνεχίστε την αρχική λειτουργία.",
                "http_status": 503,
                "type": "result_pending_check"
              }
            ],
            "ignored_fields": [],
            "lifecycle": {
              "cancel_endpoint": null,
              "completed_states": [
                "succeeded"
              ],
              "content": [
                {
                  "http": "GET",
                  "path": "/v1/videos/{request_id}/content",
                  "query": {
                    "index": "actual output index; default 0"
                  }
                },
                {
                  "http": "GET",
                  "path": "/v1/videos/generations/{request_id}/content",
                  "query": {
                    "index": "actual output index; default 0"
                  }
                }
              ],
              "content_pending": "Original status JSON until publication.",
              "content_ready": {
                "http_status": 303,
                "location": "actual signed Ailoot-owned asset URL"
              },
              "create": {
                "http": "POST",
                "path": "/v1/videos"
              },
              "failed_states": [
                "failed",
                "expired"
              ],
              "id_source": "Actual returned id or X-Ailoot-Task-Id; provider_task_id is separate. Use returned polling_url.",
              "mode": "submit_once_poll_original",
              "owned_result": {
                "http": "GET",
                "path": "/v1/media/assets/{asset_id}"
              },
              "pending_states": [
                "queued",
                "running"
              ],
              "signed_asset_lifetime_seconds": 86400,
              "status": [
                {
                  "http": "GET",
                  "path": "/v1/videos/{request_id}"
                },
                {
                  "http": "GET",
                  "path": "/v1/videos/generations/{request_id}"
                }
              ],
              "submit_status": 200,
              "unknown": "Διατηρήστε την αρχική απόκριση, τις κεφαλίδες και το id, και ελέγχετε περιοδικά αυτή τη λειτουργία· μην επανυποβάλετε ποτέ αίτημα δημιουργίας με άγνωστο αποτέλεσμα.",
              "unknown_no_replay": true
            },
            "material_combinations": [
              [
                "text"
              ],
              [
                "image"
              ],
              [
                "video"
              ],
              [
                "image",
                "audio"
              ],
              [
                "image",
                "video"
              ],
              [
                "video",
                "audio"
              ],
              [
                "image",
                "video",
                "audio"
              ]
            ],
            "operation_modes": [
              "text_to_video",
              "image_to_video",
              "multimodal_reference",
              "video_edit_via_content",
              "video_extend_via_content"
            ],
            "outputs": {
              "additional_media_boundary": "Only content.video_url is selected for ownership. No owned last-frame/callback result flow is established.",
              "all_results": "Διατηρήστε κάθε πραγματικό URL στο content.video_url· το index πρέπει να προσδιορίζει πραγματική έξοδο που επιστράφηκε.",
              "every_actual_output": true,
              "family": "video",
              "fields": [
                {
                  "description": null,
                  "name": "id",
                  "type": "string"
                },
                {
                  "description": null,
                  "name": "provider_task_id",
                  "type": "string"
                },
                {
                  "description": null,
                  "name": "polling_url",
                  "type": "string"
                },
                {
                  "description": null,
                  "name": "status",
                  "type": "string when supplied"
                },
                {
                  "description": null,
                  "name": "content.video_url",
                  "type": "string|string[]"
                },
                {
                  "description": null,
                  "name": "usage",
                  "type": "object when supplied"
                }
              ],
              "format": null,
              "maximum_outputs": null,
              "ownership": "Configured video outputs are copied, reopened and SHA256/length/positive-duration checked before publication.",
              "result": "Εγγενές JSON με δημόσιο id/polling_url. Μετά τη δημοσίευση, το content.video_url περιέχει υπογεγραμμένα URL που ανήκουν στο Ailoot· πριν από τη δημοσίευση, τα επιλεγμένα URL εξόδου είναι κενά."
            },
            "parameters": [
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": [
                  "doubao-seedance-2-0-fast-260128"
                ],
                "enum_known": true,
                "name": "model",
                "required": true,
                "type": "string"
              },
              {
                "availability": "source_interface",
                "conditions": "Εγγενή αντικείμενα κειμένου και πολυμέσων· ο εξωτερικός πίνακας δεν πρέπει να είναι κενός. Οι τύποι εμφωλευμένων κόμβων δεν επικυρώνονται από αυτόν τον γενικό κατασκευαστή του Ailoot.",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "minItems": 1,
                "name": "content",
                "required": true,
                "type": "array"
              },
              {
                "availability": "source_interface",
                "conditions": "Συγχρονισμένος ήχος ενσωματωμένος στο βίντεο.",
                "default": true,
                "default_known": true,
                "enum": null,
                "enum_known": false,
                "name": "generate_audio",
                "required": false,
                "type": "boolean"
              },
              {
                "availability": "source_interface",
                "conditions": "Ακέραιος 4–15 ή -1· επιστρέφεται η πραγματική διάρκεια εξόδου.",
                "default": 5,
                "default_known": true,
                "documented_values": [
                  -1,
                  4,
                  5,
                  6,
                  7,
                  8,
                  9,
                  10,
                  11,
                  12,
                  13,
                  14,
                  15
                ],
                "enum": null,
                "enum_known": false,
                "name": "duration",
                "required": false,
                "type": "integer"
              },
              {
                "availability": "source_interface",
                "conditions": "Το 1080p δηλώνεται ρητά ως μη υποστηριζόμενο για 2.0/fast.",
                "default": "720p",
                "default_known": true,
                "enum": [
                  "480p",
                  "720p"
                ],
                "enum_known": true,
                "name": "resolution",
                "required": false,
                "type": "string"
              },
              {
                "availability": "source_interface",
                "conditions": "Το adaptive αφορά ρητά τα 2.0/fast/1.5· το παράδειγμα για το 2.5 δείχνει μόνο 16:9.",
                "default": "adaptive",
                "default_known": true,
                "enum": [
                  "16:9",
                  "4:3",
                  "1:1",
                  "3:4",
                  "9:16",
                  "21:9",
                  "adaptive"
                ],
                "enum_known": true,
                "name": "ratio",
                "required": false,
                "type": "string"
              },
              {
                "availability": "source_interface",
                "default": false,
                "default_known": true,
                "enum": null,
                "enum_known": false,
                "name": "watermark",
                "required": false,
                "type": "boolean"
              },
              {
                "availability": "source_interface",
                "default": -1,
                "default_known": true,
                "enum": null,
                "enum_known": false,
                "maximum": 4294967295,
                "minimum": -1,
                "name": "seed",
                "required": false,
                "type": "integer"
              },
              {
                "availability": "source_interface",
                "default": 172800,
                "default_known": true,
                "enum": null,
                "enum_known": false,
                "maximum": 259200,
                "minimum": 3600,
                "name": "execution_expires_after",
                "required": false,
                "type": "integer",
                "unit": "δευτερόλεπτα"
              },
              {
                "availability": "source_interface",
                "conditions": "Τα 2.0/fast αποκλείουν το flex εκτός σύνδεσης· το πεδίο εφαρμογής για το 2.5 δεν έχει καθοριστεί.",
                "default": "default",
                "default_known": true,
                "enum": [
                  "default"
                ],
                "enum_known": true,
                "name": "service_tier",
                "required": false,
                "type": "string"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "maxLength": 64,
                "name": "safety_identifier",
                "required": false,
                "type": "string"
              },
              {
                "availability": "source_interface",
                "conditions": "Μόνο 2.0/fast· τεκμηριωμένο type=web_search.",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "tools",
                "properties": {
                  "type": {
                    "enum": [
                      "web_search"
                    ],
                    "type": "string"
                  }
                },
                "required": false,
                "required_properties": [
                  "type"
                ],
                "type": "object"
              }
            ],
            "profile_binding": "Exact model ID and documented Ailoot video interface.",
            "request_schema": {
              "additionalProperties": true,
              "properties": {
                "content": {
                  "items": {
                    "type": "object"
                  },
                  "minItems": 1,
                  "type": "array"
                },
                "duration": {
                  "type": "integer"
                },
                "execution_expires_after": {
                  "maximum": 259200,
                  "minimum": 3600,
                  "type": "integer"
                },
                "generate_audio": {
                  "type": "boolean"
                },
                "model": {
                  "const": "doubao-seedance-2-0-fast-260128",
                  "type": "string"
                },
                "ratio": {
                  "enum": [
                    "16:9",
                    "4:3",
                    "1:1",
                    "3:4",
                    "9:16",
                    "21:9",
                    "adaptive"
                  ],
                  "type": "string"
                },
                "resolution": {
                  "enum": [
                    "480p",
                    "720p"
                  ],
                  "type": "string"
                },
                "safety_identifier": {
                  "maxLength": 64,
                  "type": "string"
                },
                "seed": {
                  "maximum": 4294967295,
                  "minimum": -1,
                  "type": "integer"
                },
                "service_tier": {
                  "enum": [
                    "default"
                  ],
                  "type": "string"
                },
                "tools": {
                  "type": "object"
                },
                "watermark": {
                  "type": "boolean"
                }
              },
              "required": [
                "content",
                "model"
              ],
              "type": "object"
            },
            "source_ambiguities": [
              "Shared content.items.required demands image_url+role even for published text nodes; intended combinations/examples and actual outer-array validation remain distinct.",
              "return_last_frame and callback_url exist upstream but current output ownership selects content.video_url only. No owned last-frame/callback contract is asserted."
            ],
            "unsupported": [
              "Separate cancel/delete for this generic method",
              "Separate edit/extension endpoint for this method"
            ]
          },
          "hints": [
            "Δημιουργήστε μία φορά και διατηρήστε το δημόσιο id/polling_url που επιστρέφεται.",
            "Ελέγχετε περιοδικά την αρχική εργασία· κατεβάστε το πραγματικό content.video_url που σας ανήκει μετά το succeeded."
          ],
          "input": {
            "additional_properties": true,
            "content_type": "application/json",
            "material_combinations": [
              [
                "text"
              ],
              [
                "image"
              ],
              [
                "video"
              ],
              [
                "image",
                "audio"
              ],
              [
                "image",
                "video"
              ],
              [
                "video",
                "audio"
              ],
              [
                "image",
                "video",
                "audio"
              ]
            ],
            "material_types": [
              "text",
              "image",
              "video",
              "audio"
            ],
            "optional": [
              "generate_audio",
              "duration",
              "resolution",
              "ratio",
              "watermark",
              "seed",
              "execution_expires_after",
              "service_tier",
              "safety_identifier",
              "tools"
            ],
            "optional_text_with_media": true,
            "reference_media_count_and_size_limits": null,
            "required": [
              "content",
              "model"
            ],
            "validation_scope": "Το Ailoot ελέγχει τους τύπους των απαιτούμενων πεδίων και ότι το model και ο πίνακας content δεν είναι κενά. Τα υπόλοιπα πεδία αιτήματος διατηρούνται για το επιλεγμένο μοντέλο."
          },
          "lifecycle": {
            "cancel_endpoint": null,
            "completed_states": [
              "succeeded"
            ],
            "content": [
              {
                "http": "GET",
                "path": "/v1/videos/{request_id}/content",
                "query": {
                  "index": "actual output index; default 0"
                }
              },
              {
                "http": "GET",
                "path": "/v1/videos/generations/{request_id}/content",
                "query": {
                  "index": "actual output index; default 0"
                }
              }
            ],
            "content_pending": "Original status JSON until publication.",
            "content_ready": {
              "http_status": 303,
              "location": "actual signed Ailoot-owned asset URL"
            },
            "create": {
              "http": "POST",
              "path": "/v1/videos"
            },
            "failed_states": [
              "failed",
              "expired"
            ],
            "id_source": "Actual returned id or X-Ailoot-Task-Id; provider_task_id is separate. Use returned polling_url.",
            "mode": "submit_once_poll_original",
            "owned_result": {
              "http": "GET",
              "path": "/v1/media/assets/{asset_id}"
            },
            "pending_states": [
              "queued",
              "running"
            ],
            "signed_asset_lifetime_seconds": 86400,
            "status": [
              {
                "http": "GET",
                "path": "/v1/videos/{request_id}"
              },
              {
                "http": "GET",
                "path": "/v1/videos/generations/{request_id}"
              }
            ],
            "submit_status": 200,
            "unknown": "Preserve original response/headers/id and poll that operation; never resubmit unknown creation.",
            "unknown_no_replay": true
          },
          "manufacturer_capability": {
            "documented_material_types": [
              "text",
              "image",
              "video",
              "audio"
            ]
          },
          "method": {
            "http": "POST",
            "path": "/v1/videos"
          },
          "method_aliases": [
            "/v1/videos/generations"
          ],
          "operation_modes": [
            "text_to_video",
            "image_to_video",
            "multimodal_reference",
            "video_edit_via_content",
            "video_extend_via_content"
          ],
          "output": {
            "additional_media_boundary": "Only content.video_url is selected for ownership. No owned last-frame/callback result flow is established.",
            "all_results": "Retain every actual URL in content.video_url; index must identify a real returned output.",
            "every_actual_output": true,
            "family": "video",
            "fields": [
              {
                "description": null,
                "name": "id",
                "type": "string"
              },
              {
                "description": null,
                "name": "provider_task_id",
                "type": "string"
              },
              {
                "description": null,
                "name": "polling_url",
                "type": "string"
              },
              {
                "description": null,
                "name": "status",
                "type": "string when supplied"
              },
              {
                "description": null,
                "name": "content.video_url",
                "type": "string|string[]"
              },
              {
                "description": null,
                "name": "usage",
                "type": "object when supplied"
              }
            ],
            "format": null,
            "maximum_outputs": null,
            "ownership": "Configured video outputs are copied, reopened and SHA256/length/positive-duration checked before publication.",
            "result": "Native JSON with public id/polling_url. After publication content.video_url contains Ailoot-owned signed URL(s); before publication selected output URLs are blanked."
          }
        },
        "ctx": null,
        "declared_pricing_profiles": [
          {
            "dimensions": {
              "regime": "base"
            },
            "label": "Base token rates",
            "units": [
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "input_price",
                "label": "Input tokens",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "output_price",
                "label": "Output tokens",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "output_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "output_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "cache_read_price",
                "label": "Cache read",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "cached_input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "cached_input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "cache_write_price",
                "label": "Cache write",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "generic_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "generic_cache_creation_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "cache_write_1h_price",
                "label": "Cache write, 1 hour",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "one_hour_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "one_hour_cache_creation_token"
              }
            ]
          },
          {
            "dimensions": {
              "quoted_unit": "per 1,000 video tokens",
              "video_input": "present"
            },
            "label": "Η είσοδος περιέχει βίντεο αναφοράς.",
            "units": [
              {
                "amount": "0.007536000",
                "amount_unit": "usd_per_exact_native_unit",
                "billing_input": false,
                "estimate_only": true,
                "key": "video_output_token_with_video_input",
                "label": "per 1,000 video tokens",
                "native_amount_usd_per_unit": "0.000007536",
                "native_quantity": 1,
                "public_unit_label": "per 1,000 video tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "video_output_token"
              }
            ]
          },
          {
            "dimensions": {
              "quoted_unit": "per 1,000 video tokens",
              "video_input": "absent"
            },
            "label": "Η είσοδος δεν περιέχει βίντεο αναφοράς.",
            "units": [
              {
                "amount": "0.013032000",
                "amount_unit": "usd_per_exact_native_unit",
                "billing_input": false,
                "estimate_only": true,
                "key": "video_output_token_without_video_input",
                "label": "per 1,000 video tokens",
                "native_amount_usd_per_unit": "0.000013032",
                "native_quantity": 1,
                "public_unit_label": "per 1,000 video tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "video_output_token"
              }
            ]
          },
          {
            "basis": "Αυτή η εκτίμηση δεν αποτελεί πρόσθετη χρέωση ούτε σταθερή τιμή για την ολοκληρωμένη παραγωγή.",
            "dimensions": {
              "forecast_quantity": "one generation estimate"
            },
            "label": "Εκτιμώμενο κόστος δημιουργίας",
            "units": [
              {
                "amount": "0.822402",
                "amount_unit": "usd_per_exact_native_unit",
                "billing_input": false,
                "estimate_only": true,
                "key": "forecast_usd",
                "label": "Estimated generation cost",
                "native_amount_usd_per_unit": "0.822402",
                "native_quantity": 1,
                "public_unit_label": "estimate before generation",
                "quantity": 1,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "request_estimate"
              }
            ]
          }
        ],
        "examples": [
          {
            "code": "set -eu\n: \"${AILOOT_API_KEY:?Set your Ailoot API key}\"\ncat > request.json <<'JSON_REQUEST'\n{\"model\":\"doubao-seedance-2-0-fast-260128\",\"content\":[{\"type\":\"text\",\"text\":\"女孩抱着狐狸，女孩睁开眼，温柔地看向镜头，狐狸友善地抱着，镜头缓缓拉出，女孩的头发被风吹动\"}]}\nJSON_REQUEST\ncurl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/videos \\\n  -H \"Authorization: Bearer $AILOOT_API_KEY\" -H 'Content-Type: application/json' \\\n  --data-binary @request.json -D response-headers.txt -o result.json\n",
            "label": "curl · create video",
            "language": "bash"
          },
          {
            "code": "set -eu\n: \"${AILOOT_API_KEY:?Set your Ailoot API key}\"\npython3 - <<'PY_POLL'\nimport json\nfrom pathlib import Path\nfrom urllib.parse import quote,urljoin,urlsplit\nr=json.loads(Path(\"result.json\").read_text())\ni=r.get(\"id\")\nif not isinstance(i,str) or not i.startswith(\"native302_\"):raise SystemExit(\"Keep original response/headers/id; do not resubmit creation.\")\nu=urljoin(\"https://api.ailoot.ai\",r.get(\"polling_url\") or \"/v1/videos/\"+quote(i,safe=\"\"))\np=urlsplit(u)\nif p.scheme!=\"https\" or p.netloc!=\"api.ailoot.ai\" or not p.path.startswith(\"/v1/videos/\"):raise SystemExit(\"Use actual Ailoot lookup path.\")\nPath(\"poll-url.txt\").write_text(u)\nPY_POLL\ncurl --fail-with-body --silent --show-error \"$(cat poll-url.txt)\" -H \"Authorization: Bearer $AILOOT_API_KEY\" -D status-headers.txt -o status.json\n",
            "label": "curl · read original task",
            "language": "bash"
          },
          {
            "code": "set -eu\npython3 - <<'PY_ASSETS'\nimport json\nfrom pathlib import Path\nfrom urllib.parse import urlsplit\nr=json.loads(Path(\"status.json\").read_text())\nif r.get(\"status\")!=\"succeeded\":raise SystemExit(\"Poll same original job until an owned result is returned.\")\nu=r.get(\"content\",{}).get(\"video_url\")\nurls=[u] if isinstance(u,str) else u\nif not isinstance(urls,list) or not urls:raise SystemExit(\"No completed video URL.\")\nfor u in urls:\n    if not isinstance(u,str):raise SystemExit(\"Invalid returned URL.\")\n    p=urlsplit(u)\n    if p.scheme!=\"https\" or p.netloc!=\"api.ailoot.ai\" or not p.path.startswith(\"/v1/media/assets/\") or not p.path.endswith(\"/content\") or not p.query:raise SystemExit(\"Wait for actual Ailoot-owned signed result.\")\nPath(\"asset-urls.txt\").write_text(\"\\n\".join(urls)+\"\\n\")\nPY_ASSETS\nindex=0\nwhile IFS= read -r asset_url; do\n  curl --fail-with-body --silent --show-error \"$asset_url\" -o \"video-${index}.bin\"\n  index=$((index + 1))\ndone < asset-urls.txt\n",
            "label": "curl · download owned video",
            "language": "bash"
          }
        ],
        "family": "openai",
        "fast_multiplier": null,
        "flex_multiplier": null,
        "fmt": "videos",
        "hints": [
          "Create once and retain returned public id/polling_url.",
          "Poll the original job; download actual owned content.video_url after succeeded."
        ],
        "http": "POST",
        "in": null,
        "input": [
          "text",
          "image",
          "video",
          "audio"
        ],
        "label": "Βίντεο",
        "max_out": null,
        "max_reasoning_effort_multiplier": null,
        "method_aliases": [
          "/v1/videos/generations"
        ],
        "out": null,
        "output": [
          "video"
        ],
        "path": "/v1/videos",
        "price_conditions": [
          {
            "label": "Fast mode",
            "value": "Not specified",
            "when": "When fast mode is selected"
          },
          {
            "label": "Flex mode",
            "value": "Not specified",
            "when": "When flex mode is selected"
          },
          {
            "label": "Maximum reasoning effort",
            "value": "Not specified",
            "when": "When maximum reasoning effort uses the default adjustment"
          }
        ],
        "pricing": {
          "billing_mode": "original_invoice_usd",
          "image_input_price": null,
          "image_output_price": null
        },
        "pricing_profiles": [
          {
            "dimensions": {
              "regime": "base"
            },
            "label": "Base token rates",
            "units": [
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "input_price",
                "label": "Input tokens",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "output_price",
                "label": "Output tokens",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "output_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "output_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "cache_read_price",
                "label": "Cache read",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "cached_input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "cached_input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "cache_write_price",
                "label": "Cache write",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "generic_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "generic_cache_creation_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "cache_write_1h_price",
                "label": "Cache write, 1 hour",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "one_hour_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "one_hour_cache_creation_token"
              }
            ]
          },
          {
            "dimensions": {
              "quoted_unit": "per 1,000 video tokens",
              "video_input": "present"
            },
            "label": "Input contains video.",
            "units": [
              {
                "amount": "0.007536000",
                "amount_unit": "usd_per_exact_native_unit",
                "billing_input": false,
                "estimate_only": true,
                "key": "video_output_token_with_video_input",
                "label": "per 1,000 video tokens",
                "native_amount_usd_per_unit": "0.000007536",
                "native_quantity": 1,
                "public_unit_label": "per 1,000 video tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "video_output_token"
              }
            ]
          },
          {
            "dimensions": {
              "quoted_unit": "per 1,000 video tokens",
              "video_input": "absent"
            },
            "label": "Input contains no video.",
            "units": [
              {
                "amount": "0.013032000",
                "amount_unit": "usd_per_exact_native_unit",
                "billing_input": false,
                "estimate_only": true,
                "key": "video_output_token_without_video_input",
                "label": "per 1,000 video tokens",
                "native_amount_usd_per_unit": "0.000013032",
                "native_quantity": 1,
                "public_unit_label": "per 1,000 video tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "video_output_token"
              }
            ]
          },
          {
            "basis": "This estimate is not an additional charge or a fixed rate for the completed generation.",
            "dimensions": {
              "forecast_quantity": "one generation estimate"
            },
            "label": "Estimated generation cost",
            "units": [
              {
                "amount": "0.822402",
                "amount_unit": "usd_per_exact_native_unit",
                "billing_input": false,
                "estimate_only": true,
                "key": "forecast_usd",
                "label": "Estimated generation cost",
                "native_amount_usd_per_unit": "0.822402",
                "native_quantity": 1,
                "public_unit_label": "estimate before generation",
                "quantity": 1,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "request_estimate"
              }
            ]
          }
        ],
        "request_model_id": "doubao-seedance-2-0-fast-260128",
        "route_label": "Ultra",
        "status_reads": [
          "GET /v1/videos/{request_id}",
          "GET /v1/videos/generations/{request_id}",
          "GET /v1/videos/{request_id}/content",
          "GET /v1/videos/generations/{request_id}/content"
        ],
        "tiers": [],
        "units": [
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": false,
            "estimate_only": true,
            "key": "input_price",
            "label": "Input tokens",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "input_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "input_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": false,
            "estimate_only": true,
            "key": "output_price",
            "label": "Output tokens",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "output_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "out",
            "unit": "output_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": false,
            "estimate_only": true,
            "key": "cache_read_price",
            "label": "Cache read",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "cached_input_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "cached_input_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": false,
            "estimate_only": true,
            "key": "cache_write_price",
            "label": "Cache write",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "generic_cache_creation_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "generic_cache_creation_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": false,
            "estimate_only": true,
            "key": "cache_write_1h_price",
            "label": "Cache write, 1 hour",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "one_hour_cache_creation_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "one_hour_cache_creation_token"
          },
          {
            "amount": "0.007536000",
            "amount_unit": "usd_per_exact_native_unit",
            "billing_input": false,
            "estimate_only": true,
            "key": "video_output_token_with_video_input",
            "label": "per 1,000 video tokens",
            "native_amount_usd_per_unit": "0.000007536",
            "native_quantity": 1,
            "public_unit_label": "per 1,000 video tokens",
            "quantity": 1000,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "out",
            "unit": "video_output_token"
          },
          {
            "amount": "0.013032000",
            "amount_unit": "usd_per_exact_native_unit",
            "billing_input": false,
            "estimate_only": true,
            "key": "video_output_token_without_video_input",
            "label": "per 1,000 video tokens",
            "native_amount_usd_per_unit": "0.000013032",
            "native_quantity": 1,
            "public_unit_label": "per 1,000 video tokens",
            "quantity": 1000,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "out",
            "unit": "video_output_token"
          },
          {
            "amount": "0.822402",
            "amount_unit": "usd_per_exact_native_unit",
            "billing_input": false,
            "estimate_only": true,
            "key": "forecast_usd",
            "label": "Estimated generation cost",
            "native_amount_usd_per_unit": "0.822402",
            "native_quantity": 1,
            "public_unit_label": "estimate before generation",
            "quantity": 1,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "out",
            "unit": "request_estimate"
          }
        ]
      }
    }
  ],
  "model_id": "doubao-seedance-2-0-fast-260128",
  "nativeProvenance": {
    "input_facts_canonical_sha256": "93fe6b5cd73e74f340f24231c44e15ef8ef3a651d63c1362ac39bc88df93b4a0",
    "input_html_sha256": "c28dd2714ef988adcabd01f76a15221fc913f906f0d04c478184955b5d4dc197",
    "private_audit_sha256": "a39e4fc235d1e80a0227e3ca9cb7ce3eb4dcfb7728147988b6e5c88597bf2f68",
    "role": "historical-normalized-input-audit-hashes",
    "schema": "ailoot-native-model-provenance-v2"
  },
  "page": {
    "canonical": "https://ailoot.ai/models/el/doubao-seedance-2-0-fast-260128/",
    "description": "Το Seedance 2.0 Fast είναι το πολυτροπικό προφίλ Fast για δημιουργία, επεξεργασία και επέκταση βίντεο. Δέχεται κείμενο και αναφορές εικόνας, βίντεο και ήχου, υποστηρίζει έξοδο με συγχρονισμένο ήχο ή χωρίς ήχο και η τεκμηρίωσή του αναφέρει αποσπάσματα 4–15 δευτερολέπτων σε 480p ή 720p.",
    "locale": "el",
    "md_url": "https://ailoot.ai/models/el/doubao-seedance-2-0-fast-260128/index.md",
    "title": "ByteDance: Seedance 2.0 Fast — Ailoot",
    "url": "https://ailoot.ai/models/el/doubao-seedance-2-0-fast-260128/"
  },
  "rawModel": {
    "about": "Το Seedance 2.0 Fast είναι το ξεχωριστά ονομαζόμενο προφίλ Fast, που επιλέγεται με το doubao-seedance-2-0-fast-260128. Υποστηρίζει δημιουργία, επεξεργασία και επέκταση βίντεο χρησιμοποιώντας κείμενο και αναφορές εικόνας, βίντεο και ήχου. Το προφίλ χρησιμεύει όταν οι οδηγίες σκηνής χρειάζονται περισσότερα από μια περιγραφή εμφάνισης: τα υπάρχοντα μέσα μπορούν επίσης να μεταδώσουν την ερμηνεία, την κινηματογραφική προσέγγιση της κάμερας και τον ήχο. Το όνομα Fast διακρίνει την ταυτότητα του αιτήματος· δεν υπόσχεται ότι μια μεμονωμένη ασύγχρονη εργασία ολοκληρώνεται σε καθορισμένο χρόνο.\n\nΞεκίνα με το στοιχείο που πρέπει να καθορίσει το νέο πλάνο. Το κείμενο μόνο του μπορεί να περιγράψει μια νέα σκηνή. Μια εικόνα μπορεί να καθορίσει χαρακτήρα, προϊόν ή σύνθεση· ένα βίντεο μπορεί να δώσει κίνηση ή μια υπάρχουσα ακολουθία για αναθεώρηση ή συνέχιση. Οι τεκμηριωμένοι συνδυασμοί περιεχομένου περιλαμβάνουν εικόνες με ήχο, βίντεο με ήχο και εικόνες, βίντεο και ήχο μαζί, με προαιρετικό κείμενο δίπλα στα οπτικά μέσα. Αυτοί οι συνδυασμοί δεν περιγράφουν αυτοτελές αίτημα μόνο με ήχο, οπότε συνδύασε τις ηχητικές αναφορές με την οπτική πηγή που πρέπει να καθοδηγήσουν.\n\nΚράτησε ρητούς τους ρόλους αναφοράς στον πίνακα content και στις οδηγίες. Τα στοιχεία image_url, video_url και audio_url μπορούν να φέρουν τους ρόλους reference_image, reference_video και reference_audio. Περιέγραψε ποια εικόνα δίνει το θέμα, ποιο βίντεο δίνει την κάμερα ή τη δράση και ποιος ήχος δίνει την ηχητική επένδυση. Για ένα πλάνο προϊόντος, μια εικόνα θα μπορούσε να καθορίσει τη συσκευασία ενώ ένα βίντεο δείχνει μια κίνηση δίπλα από το αντικείμενο. Προσδιόρισε το επιθυμητό τέλος ώστε η σύντομη ακολουθία να έχει αξιοποιήσιμη τελική όψη, αντί να σταματά στη μέση μιας ενέργειας.\n\nΓια επεξεργασία, προσδιόρισε το αρχικό υλικό, την αλλαγή και τη συνέχεια που πρέπει να διατηρηθεί. Μια αλλαγή φόντου ή φωτισμού πρέπει να αφήνει σαφώς καθορισμένα το επιθυμητό θέμα και τη δράση. Για επέκταση, εξήγησε τι γίνεται μετά και πώς συνδέεται η νέα κίνηση με την υπάρχουσα σκηνή. Οι αναφορές καθοδηγούν τη δημιουργία· εξέτασε το πραγματικό σημείο σύνδεσης και όλο το απόσπασμα για την εμφάνιση, την κατεύθυνση κίνησης και τον χρονισμό, αντί να υποθέτεις ότι η συνέχεια διατηρεί κάθε λεπτομέρεια σε επίπεδο καρέ.\n\nΤο τεκμηριωμένο εύρος του 2.0 Fast είναι τέσσερα έως δεκαπέντε ακέραια δευτερόλεπτα, με διαθέσιμο το -1 για επιλογή διάρκειας από το μοντέλο μέσα σε αυτό το εύρος. Η προεπιλεγμένη διάρκεια είναι πέντε δευτερόλεπτα. Η ανάλυση εξόδου είναι 480p ή 720p, με προεπιλογή το 720p και αποκλεισμό του 1080p. Διάλεξε ανάμεσα στις σταθερές αναλογίες 16:9, 4:3, 1:1, 3:4, 9:16 και 21:9 ή σε κάδρο adaptive (προσαρμοστικό). Το κάδρο adaptive ακολουθεί τις σχετικές οδηγίες ή το πλαίσιο της αναφοράς· ένα πλάνο με πρώτο καρέ ακολουθεί την αρχική εικόνα του, ενώ το πολυτροπικό κάδρο μπορεί να δώσει προτεραιότητα στο βίντεο έναντι των εικόνων. Διάβασε τα επιστρεφόμενα πεδία της εργασίας για την πραγματική διάρκεια και αναλογία.\n\nΧρησιμοποίησε το generate_audio για να επιλέξεις αν το παραγόμενο βίντεο περιλαμβάνει συγχρονισμένο ήχο. Η τεκμηριωμένη προεπιλογή είναι true· το false ζητά απουσία ήχου. Με ενεργοποιημένο ήχο, το προφίλ δημιουργεί φωνές, εφέ ή μουσική υπόκρουση από τις οδηγίες και το οπτικό περιεχόμενο και ο οδηγός συνιστά να περικλείεις τον διάλογο σε διπλά εισαγωγικά. Δήλωσε τον ομιλητή και την επιθυμητή σχέση ήχου και δράσης. Έλεγξε την ομιλία με κάποιον που κατέχει άπταιστα τη γλώσσα και έλεγξε τον συγχρονισμό του ήχου σε όλο το απόσπασμα, μαζί με κάθε επεξεργασμένο ή εκτεταμένο τμήμα.\n\nΟ οδηγός του 2.0 Fast αποκλείει τους παλαιότερους ελέγχους frames και camera_fixed και δεν υποστηρίζει αναβαλλόμενη επεξεργασία flex. Περιέγραψε τη συμπεριφορά της κάμερας στη σκηνή και χρησιμοποίησε το duration για τη διάρκεια του αποσπάσματος. Οι επιλογές seed και watermark παραμένουν τεκμηριωμένες. Το ίδιο seed δεν εγγυάται πανομοιότυπη έξοδο, οπότε κράτησε το ολοκληρωμένο αρχείο όταν συγκρίνεις αναθεωρήσεις, αντί να βασίζεσαι μόνο στις ρυθμίσεις του αιτήματος.\n\nΗ χρήση token βίντεο υπολογίζεται ως (διάρκεια βίντεο εισόδου + διάρκεια βίντεο εξόδου) × πλάτος εξόδου × ύψος εξόδου × ρυθμός καρέ εξόδου / 1024. Τα αιτήματα που περιέχουν βίντεο εισόδου και όσα δεν περιέχουν έχουν διακριτές κατηγορίες χρέωσης. Το ερώτημα για την εργασία αναφέρει usage.completion_tokens και usage.total_tokens· κράτησε αυτές τις αναφερόμενες ποσότητες μαζί με το ολοκληρωμένο απόσπασμα.\n\nΗ υποβολή επιστρέφει αναγνωριστικό εργασίας πριν γίνει διαθέσιμο το ολοκληρωμένο βίντεο. Παρακολούθησε την κατάσταση επεξεργασίας, μετά ανάκτησε το content.video_url μετά την επιτυχία και κράτησε την αναφερόμενη διάρκεια, ανάλυση, αναλογία, ρυθμό καρέ και χρήση μαζί με το αποτέλεσμα. Το διάστημα λήξης μετριέται από τη δημιουργία της εργασίας, έχει προεπιλογή 172800 δευτερόλεπτα και κυμαίνεται από 3600 έως 259200 δευτερόλεπτα. Αποθήκευσε το τελικό απόσπασμα μαζί με τις αναφορές και τις οδηγίες του και μετά έλεγξε την ταυτότητα του θέματος, την επαφή αντικειμένων, τη συνέχεια στην κίνηση της κάμερας και τον χρονισμό του ήχου σε όλη την ακολουθία.",
    "alias_of": null,
    "aliases": [],
    "author": "ByteDance",
    "capabilities": {
      "context_length": 0,
      "manufacturer_input": [
        "text",
        "image",
        "video",
        "audio"
      ],
      "manufacturer_output": [
        "video"
      ]
    },
    "card_routes": [
      {
        "label": "Ultra",
        "rates": [
          {
            "amount": "0.822402",
            "amount_unit": "usd_per_exact_native_unit",
            "billing_input": false,
            "estimate_only": true,
            "key": "forecast_usd",
            "label": "Estimated generation cost",
            "native_amount_usd_per_unit": "0.822402",
            "native_quantity": 1,
            "public_unit_label": "estimate before generation",
            "quantity": 1,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "out",
            "unit": "request_estimate"
          }
        ],
        "summary": "Πλήρης τιμολόγηση της διαμόρφωσης στις λεπτομέρειες."
      }
    ],
    "ctx": null,
    "display_name": "ByteDance: Seedance 2.0 Fast",
    "formats": [
      "videos"
    ],
    "id": "doubao-seedance-2-0-fast-260128",
    "input": [
      "text",
      "image",
      "video",
      "audio"
    ],
    "kind": "video",
    "locale": "en",
    "max_out": null,
    "methods": [
      {
        "available": null,
        "billing_basis": {
          "basis": "original_invoice_usd",
          "description": "Οι εμφανιζόμενες τιμές χρησιμοποιούνται για την εκτίμηση του κόστους πριν από την παραγωγή. Η τελική χρέωση υπολογίζεται από το κόστος που καταγράφηκε για την αρχική παραγωγή. Η μετρημένη διάρκεια της εξόδου και οι προβλεπόμενες ποσότητες δεν αποτελούν την τελική χρεώσιμη ποσότητα.",
          "forecast_quantity_is_estimate": true,
          "physical_output_is_billable_quantity": false,
          "version": "original_invoice_usd_v1"
        },
        "cache_read": null,
        "cache_write": null,
        "cache_write_1h": null,
        "contract": {
          "data": {
            "errors": [
              {
                "condition": "Μη έγκυρο JSON, μοντέλο, τύποι απαιτούμενων πεδίων ή δείκτης περιεχομένου.",
                "http_status": 400,
                "type": "invalid_request_error"
              },
              {
                "condition": "Μη έγκυρο κλειδί API του Ailoot.",
                "http_status": 401,
                "type": "authentication_error"
              },
              {
                "condition": "Η εργασία ή έξοδος απουσιάζει ή δεν ανήκει στον ίδιο χρήστη, κλειδί API ή ομάδα.",
                "http_status": 404,
                "type": "not_found_error"
              },
              {
                "condition": "Η αρχική υποβολή ή κατάστασή της είναι ελλιπής· διατηρήστε το αρχικό ID, χωρίς επανυποβολή.",
                "http_status": 502,
                "type": "result_pending_check"
              },
              {
                "condition": "Τα αρχικά πολυμέσα, η διαδρομή ή η εκκαθάριση ελέγχονται· συνεχίστε την αρχική λειτουργία.",
                "http_status": 503,
                "type": "result_pending_check"
              }
            ],
            "ignored_fields": [],
            "lifecycle": {
              "cancel_endpoint": null,
              "completed_states": [
                "succeeded"
              ],
              "content": [
                {
                  "http": "GET",
                  "path": "/v1/videos/{request_id}/content",
                  "query": {
                    "index": "actual output index; default 0"
                  }
                },
                {
                  "http": "GET",
                  "path": "/v1/videos/generations/{request_id}/content",
                  "query": {
                    "index": "actual output index; default 0"
                  }
                }
              ],
              "content_pending": "Original status JSON until publication.",
              "content_ready": {
                "http_status": 303,
                "location": "actual signed Ailoot-owned asset URL"
              },
              "create": {
                "http": "POST",
                "path": "/v1/videos"
              },
              "failed_states": [
                "failed",
                "expired"
              ],
              "id_source": "Actual returned id or X-Ailoot-Task-Id; provider_task_id is separate. Use returned polling_url.",
              "mode": "submit_once_poll_original",
              "owned_result": {
                "http": "GET",
                "path": "/v1/media/assets/{asset_id}"
              },
              "pending_states": [
                "queued",
                "running"
              ],
              "signed_asset_lifetime_seconds": 86400,
              "status": [
                {
                  "http": "GET",
                  "path": "/v1/videos/{request_id}"
                },
                {
                  "http": "GET",
                  "path": "/v1/videos/generations/{request_id}"
                }
              ],
              "submit_status": 200,
              "unknown": "Διατηρήστε την αρχική απόκριση, τις κεφαλίδες και το id, και ελέγχετε περιοδικά αυτή τη λειτουργία· μην επανυποβάλετε ποτέ αίτημα δημιουργίας με άγνωστο αποτέλεσμα.",
              "unknown_no_replay": true
            },
            "material_combinations": [
              [
                "text"
              ],
              [
                "image"
              ],
              [
                "video"
              ],
              [
                "image",
                "audio"
              ],
              [
                "image",
                "video"
              ],
              [
                "video",
                "audio"
              ],
              [
                "image",
                "video",
                "audio"
              ]
            ],
            "operation_modes": [
              "text_to_video",
              "image_to_video",
              "multimodal_reference",
              "video_edit_via_content",
              "video_extend_via_content"
            ],
            "outputs": {
              "additional_media_boundary": "Only content.video_url is selected for ownership. No owned last-frame/callback result flow is established.",
              "all_results": "Διατηρήστε κάθε πραγματικό URL στο content.video_url· το index πρέπει να προσδιορίζει πραγματική έξοδο που επιστράφηκε.",
              "every_actual_output": true,
              "family": "video",
              "fields": [
                {
                  "description": null,
                  "name": "id",
                  "type": "string"
                },
                {
                  "description": null,
                  "name": "provider_task_id",
                  "type": "string"
                },
                {
                  "description": null,
                  "name": "polling_url",
                  "type": "string"
                },
                {
                  "description": null,
                  "name": "status",
                  "type": "string when supplied"
                },
                {
                  "description": null,
                  "name": "content.video_url",
                  "type": "string|string[]"
                },
                {
                  "description": null,
                  "name": "usage",
                  "type": "object when supplied"
                }
              ],
              "format": null,
              "maximum_outputs": null,
              "ownership": "Configured video outputs are copied, reopened and SHA256/length/positive-duration checked before publication.",
              "result": "Εγγενές JSON με δημόσιο id/polling_url. Μετά τη δημοσίευση, το content.video_url περιέχει υπογεγραμμένα URL που ανήκουν στο Ailoot· πριν από τη δημοσίευση, τα επιλεγμένα URL εξόδου είναι κενά."
            },
            "parameters": [
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": [
                  "doubao-seedance-2-0-fast-260128"
                ],
                "enum_known": true,
                "name": "model",
                "required": true,
                "type": "string"
              },
              {
                "availability": "source_interface",
                "conditions": "Εγγενή αντικείμενα κειμένου και πολυμέσων· ο εξωτερικός πίνακας δεν πρέπει να είναι κενός. Οι τύποι εμφωλευμένων κόμβων δεν επικυρώνονται από αυτόν τον γενικό κατασκευαστή του Ailoot.",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "minItems": 1,
                "name": "content",
                "required": true,
                "type": "array"
              },
              {
                "availability": "source_interface",
                "conditions": "Συγχρονισμένος ήχος ενσωματωμένος στο βίντεο.",
                "default": true,
                "default_known": true,
                "enum": null,
                "enum_known": false,
                "name": "generate_audio",
                "required": false,
                "type": "boolean"
              },
              {
                "availability": "source_interface",
                "conditions": "Ακέραιος 4–15 ή -1· επιστρέφεται η πραγματική διάρκεια εξόδου.",
                "default": 5,
                "default_known": true,
                "documented_values": [
                  -1,
                  4,
                  5,
                  6,
                  7,
                  8,
                  9,
                  10,
                  11,
                  12,
                  13,
                  14,
                  15
                ],
                "enum": null,
                "enum_known": false,
                "name": "duration",
                "required": false,
                "type": "integer"
              },
              {
                "availability": "source_interface",
                "conditions": "Το 1080p δηλώνεται ρητά ως μη υποστηριζόμενο για 2.0/fast.",
                "default": "720p",
                "default_known": true,
                "enum": [
                  "480p",
                  "720p"
                ],
                "enum_known": true,
                "name": "resolution",
                "required": false,
                "type": "string"
              },
              {
                "availability": "source_interface",
                "conditions": "Το adaptive αφορά ρητά τα 2.0/fast/1.5· το παράδειγμα για το 2.5 δείχνει μόνο 16:9.",
                "default": "adaptive",
                "default_known": true,
                "enum": [
                  "16:9",
                  "4:3",
                  "1:1",
                  "3:4",
                  "9:16",
                  "21:9",
                  "adaptive"
                ],
                "enum_known": true,
                "name": "ratio",
                "required": false,
                "type": "string"
              },
              {
                "availability": "source_interface",
                "default": false,
                "default_known": true,
                "enum": null,
                "enum_known": false,
                "name": "watermark",
                "required": false,
                "type": "boolean"
              },
              {
                "availability": "source_interface",
                "default": -1,
                "default_known": true,
                "enum": null,
                "enum_known": false,
                "maximum": 4294967295,
                "minimum": -1,
                "name": "seed",
                "required": false,
                "type": "integer"
              },
              {
                "availability": "source_interface",
                "default": 172800,
                "default_known": true,
                "enum": null,
                "enum_known": false,
                "maximum": 259200,
                "minimum": 3600,
                "name": "execution_expires_after",
                "required": false,
                "type": "integer",
                "unit": "δευτερόλεπτα"
              },
              {
                "availability": "source_interface",
                "conditions": "Τα 2.0/fast αποκλείουν το flex εκτός σύνδεσης· το πεδίο εφαρμογής για το 2.5 δεν έχει καθοριστεί.",
                "default": "default",
                "default_known": true,
                "enum": [
                  "default"
                ],
                "enum_known": true,
                "name": "service_tier",
                "required": false,
                "type": "string"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "maxLength": 64,
                "name": "safety_identifier",
                "required": false,
                "type": "string"
              },
              {
                "availability": "source_interface",
                "conditions": "Μόνο 2.0/fast· τεκμηριωμένο type=web_search.",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "tools",
                "properties": {
                  "type": {
                    "enum": [
                      "web_search"
                    ],
                    "type": "string"
                  }
                },
                "required": false,
                "required_properties": [
                  "type"
                ],
                "type": "object"
              }
            ],
            "profile_binding": "Exact model ID and documented Ailoot video interface.",
            "request_schema": {
              "additionalProperties": true,
              "properties": {
                "content": {
                  "items": {
                    "type": "object"
                  },
                  "minItems": 1,
                  "type": "array"
                },
                "duration": {
                  "type": "integer"
                },
                "execution_expires_after": {
                  "maximum": 259200,
                  "minimum": 3600,
                  "type": "integer"
                },
                "generate_audio": {
                  "type": "boolean"
                },
                "model": {
                  "const": "doubao-seedance-2-0-fast-260128",
                  "type": "string"
                },
                "ratio": {
                  "enum": [
                    "16:9",
                    "4:3",
                    "1:1",
                    "3:4",
                    "9:16",
                    "21:9",
                    "adaptive"
                  ],
                  "type": "string"
                },
                "resolution": {
                  "enum": [
                    "480p",
                    "720p"
                  ],
                  "type": "string"
                },
                "safety_identifier": {
                  "maxLength": 64,
                  "type": "string"
                },
                "seed": {
                  "maximum": 4294967295,
                  "minimum": -1,
                  "type": "integer"
                },
                "service_tier": {
                  "enum": [
                    "default"
                  ],
                  "type": "string"
                },
                "tools": {
                  "type": "object"
                },
                "watermark": {
                  "type": "boolean"
                }
              },
              "required": [
                "content",
                "model"
              ],
              "type": "object"
            },
            "source_ambiguities": [
              "Shared content.items.required demands image_url+role even for published text nodes; intended combinations/examples and actual outer-array validation remain distinct.",
              "return_last_frame and callback_url exist upstream but current output ownership selects content.video_url only. No owned last-frame/callback contract is asserted."
            ],
            "unsupported": [
              "Separate cancel/delete for this generic method",
              "Separate edit/extension endpoint for this method"
            ]
          },
          "hints": [
            "Δημιουργήστε μία φορά και διατηρήστε το δημόσιο id/polling_url που επιστρέφεται.",
            "Ελέγχετε περιοδικά την αρχική εργασία· κατεβάστε το πραγματικό content.video_url που σας ανήκει μετά το succeeded."
          ],
          "input": {
            "additional_properties": true,
            "content_type": "application/json",
            "material_combinations": [
              [
                "text"
              ],
              [
                "image"
              ],
              [
                "video"
              ],
              [
                "image",
                "audio"
              ],
              [
                "image",
                "video"
              ],
              [
                "video",
                "audio"
              ],
              [
                "image",
                "video",
                "audio"
              ]
            ],
            "material_types": [
              "text",
              "image",
              "video",
              "audio"
            ],
            "optional": [
              "generate_audio",
              "duration",
              "resolution",
              "ratio",
              "watermark",
              "seed",
              "execution_expires_after",
              "service_tier",
              "safety_identifier",
              "tools"
            ],
            "optional_text_with_media": true,
            "reference_media_count_and_size_limits": null,
            "required": [
              "content",
              "model"
            ],
            "validation_scope": "Το Ailoot ελέγχει τους τύπους των απαιτούμενων πεδίων και ότι το model και ο πίνακας content δεν είναι κενά. Τα υπόλοιπα πεδία αιτήματος διατηρούνται για το επιλεγμένο μοντέλο."
          },
          "lifecycle": {
            "cancel_endpoint": null,
            "completed_states": [
              "succeeded"
            ],
            "content": [
              {
                "http": "GET",
                "path": "/v1/videos/{request_id}/content",
                "query": {
                  "index": "actual output index; default 0"
                }
              },
              {
                "http": "GET",
                "path": "/v1/videos/generations/{request_id}/content",
                "query": {
                  "index": "actual output index; default 0"
                }
              }
            ],
            "content_pending": "Original status JSON until publication.",
            "content_ready": {
              "http_status": 303,
              "location": "actual signed Ailoot-owned asset URL"
            },
            "create": {
              "http": "POST",
              "path": "/v1/videos"
            },
            "failed_states": [
              "failed",
              "expired"
            ],
            "id_source": "Actual returned id or X-Ailoot-Task-Id; provider_task_id is separate. Use returned polling_url.",
            "mode": "submit_once_poll_original",
            "owned_result": {
              "http": "GET",
              "path": "/v1/media/assets/{asset_id}"
            },
            "pending_states": [
              "queued",
              "running"
            ],
            "signed_asset_lifetime_seconds": 86400,
            "status": [
              {
                "http": "GET",
                "path": "/v1/videos/{request_id}"
              },
              {
                "http": "GET",
                "path": "/v1/videos/generations/{request_id}"
              }
            ],
            "submit_status": 200,
            "unknown": "Preserve original response/headers/id and poll that operation; never resubmit unknown creation.",
            "unknown_no_replay": true
          },
          "manufacturer_capability": {
            "documented_material_types": [
              "text",
              "image",
              "video",
              "audio"
            ]
          },
          "method": {
            "http": "POST",
            "path": "/v1/videos"
          },
          "method_aliases": [
            "/v1/videos/generations"
          ],
          "operation_modes": [
            "text_to_video",
            "image_to_video",
            "multimodal_reference",
            "video_edit_via_content",
            "video_extend_via_content"
          ],
          "output": {
            "additional_media_boundary": "Only content.video_url is selected for ownership. No owned last-frame/callback result flow is established.",
            "all_results": "Retain every actual URL in content.video_url; index must identify a real returned output.",
            "every_actual_output": true,
            "family": "video",
            "fields": [
              {
                "description": null,
                "name": "id",
                "type": "string"
              },
              {
                "description": null,
                "name": "provider_task_id",
                "type": "string"
              },
              {
                "description": null,
                "name": "polling_url",
                "type": "string"
              },
              {
                "description": null,
                "name": "status",
                "type": "string when supplied"
              },
              {
                "description": null,
                "name": "content.video_url",
                "type": "string|string[]"
              },
              {
                "description": null,
                "name": "usage",
                "type": "object when supplied"
              }
            ],
            "format": null,
            "maximum_outputs": null,
            "ownership": "Configured video outputs are copied, reopened and SHA256/length/positive-duration checked before publication.",
            "result": "Native JSON with public id/polling_url. After publication content.video_url contains Ailoot-owned signed URL(s); before publication selected output URLs are blanked."
          }
        },
        "ctx": null,
        "declared_pricing_profiles": [
          {
            "dimensions": {
              "regime": "base"
            },
            "label": "Base token rates",
            "units": [
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "input_price",
                "label": "Input tokens",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "output_price",
                "label": "Output tokens",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "output_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "output_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "cache_read_price",
                "label": "Cache read",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "cached_input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "cached_input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "cache_write_price",
                "label": "Cache write",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "generic_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "generic_cache_creation_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "cache_write_1h_price",
                "label": "Cache write, 1 hour",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "one_hour_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "one_hour_cache_creation_token"
              }
            ]
          },
          {
            "dimensions": {
              "quoted_unit": "per 1,000 video tokens",
              "video_input": "present"
            },
            "label": "Η είσοδος περιέχει βίντεο αναφοράς.",
            "units": [
              {
                "amount": "0.007536000",
                "amount_unit": "usd_per_exact_native_unit",
                "billing_input": false,
                "estimate_only": true,
                "key": "video_output_token_with_video_input",
                "label": "per 1,000 video tokens",
                "native_amount_usd_per_unit": "0.000007536",
                "native_quantity": 1,
                "public_unit_label": "per 1,000 video tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "video_output_token"
              }
            ]
          },
          {
            "dimensions": {
              "quoted_unit": "per 1,000 video tokens",
              "video_input": "absent"
            },
            "label": "Η είσοδος δεν περιέχει βίντεο αναφοράς.",
            "units": [
              {
                "amount": "0.013032000",
                "amount_unit": "usd_per_exact_native_unit",
                "billing_input": false,
                "estimate_only": true,
                "key": "video_output_token_without_video_input",
                "label": "per 1,000 video tokens",
                "native_amount_usd_per_unit": "0.000013032",
                "native_quantity": 1,
                "public_unit_label": "per 1,000 video tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "video_output_token"
              }
            ]
          },
          {
            "basis": "Αυτή η εκτίμηση δεν αποτελεί πρόσθετη χρέωση ούτε σταθερή τιμή για την ολοκληρωμένη παραγωγή.",
            "dimensions": {
              "forecast_quantity": "one generation estimate"
            },
            "label": "Εκτιμώμενο κόστος δημιουργίας",
            "units": [
              {
                "amount": "0.822402",
                "amount_unit": "usd_per_exact_native_unit",
                "billing_input": false,
                "estimate_only": true,
                "key": "forecast_usd",
                "label": "Estimated generation cost",
                "native_amount_usd_per_unit": "0.822402",
                "native_quantity": 1,
                "public_unit_label": "estimate before generation",
                "quantity": 1,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "request_estimate"
              }
            ]
          }
        ],
        "examples": [
          {
            "code": "set -eu\n: \"${AILOOT_API_KEY:?Set your Ailoot API key}\"\ncat > request.json <<'JSON_REQUEST'\n{\"model\":\"doubao-seedance-2-0-fast-260128\",\"content\":[{\"type\":\"text\",\"text\":\"女孩抱着狐狸，女孩睁开眼，温柔地看向镜头，狐狸友善地抱着，镜头缓缓拉出，女孩的头发被风吹动\"}]}\nJSON_REQUEST\ncurl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/videos \\\n  -H \"Authorization: Bearer $AILOOT_API_KEY\" -H 'Content-Type: application/json' \\\n  --data-binary @request.json -D response-headers.txt -o result.json\n",
            "label": "curl · create video",
            "language": "bash"
          },
          {
            "code": "set -eu\n: \"${AILOOT_API_KEY:?Set your Ailoot API key}\"\npython3 - <<'PY_POLL'\nimport json\nfrom pathlib import Path\nfrom urllib.parse import quote,urljoin,urlsplit\nr=json.loads(Path(\"result.json\").read_text())\ni=r.get(\"id\")\nif not isinstance(i,str) or not i.startswith(\"native302_\"):raise SystemExit(\"Keep original response/headers/id; do not resubmit creation.\")\nu=urljoin(\"https://api.ailoot.ai\",r.get(\"polling_url\") or \"/v1/videos/\"+quote(i,safe=\"\"))\np=urlsplit(u)\nif p.scheme!=\"https\" or p.netloc!=\"api.ailoot.ai\" or not p.path.startswith(\"/v1/videos/\"):raise SystemExit(\"Use actual Ailoot lookup path.\")\nPath(\"poll-url.txt\").write_text(u)\nPY_POLL\ncurl --fail-with-body --silent --show-error \"$(cat poll-url.txt)\" -H \"Authorization: Bearer $AILOOT_API_KEY\" -D status-headers.txt -o status.json\n",
            "label": "curl · read original task",
            "language": "bash"
          },
          {
            "code": "set -eu\npython3 - <<'PY_ASSETS'\nimport json\nfrom pathlib import Path\nfrom urllib.parse import urlsplit\nr=json.loads(Path(\"status.json\").read_text())\nif r.get(\"status\")!=\"succeeded\":raise SystemExit(\"Poll same original job until an owned result is returned.\")\nu=r.get(\"content\",{}).get(\"video_url\")\nurls=[u] if isinstance(u,str) else u\nif not isinstance(urls,list) or not urls:raise SystemExit(\"No completed video URL.\")\nfor u in urls:\n    if not isinstance(u,str):raise SystemExit(\"Invalid returned URL.\")\n    p=urlsplit(u)\n    if p.scheme!=\"https\" or p.netloc!=\"api.ailoot.ai\" or not p.path.startswith(\"/v1/media/assets/\") or not p.path.endswith(\"/content\") or not p.query:raise SystemExit(\"Wait for actual Ailoot-owned signed result.\")\nPath(\"asset-urls.txt\").write_text(\"\\n\".join(urls)+\"\\n\")\nPY_ASSETS\nindex=0\nwhile IFS= read -r asset_url; do\n  curl --fail-with-body --silent --show-error \"$asset_url\" -o \"video-${index}.bin\"\n  index=$((index + 1))\ndone < asset-urls.txt\n",
            "label": "curl · download owned video",
            "language": "bash"
          }
        ],
        "family": "openai",
        "fast_multiplier": null,
        "flex_multiplier": null,
        "fmt": "videos",
        "hints": [
          "Create once and retain returned public id/polling_url.",
          "Poll the original job; download actual owned content.video_url after succeeded."
        ],
        "http": "POST",
        "in": null,
        "input": [
          "text",
          "image",
          "video",
          "audio"
        ],
        "label": "Βίντεο",
        "max_out": null,
        "max_reasoning_effort_multiplier": null,
        "method_aliases": [
          "/v1/videos/generations"
        ],
        "out": null,
        "output": [
          "video"
        ],
        "path": "/v1/videos",
        "price_conditions": [
          {
            "label": "Fast mode",
            "value": "Not specified",
            "when": "When fast mode is selected"
          },
          {
            "label": "Flex mode",
            "value": "Not specified",
            "when": "When flex mode is selected"
          },
          {
            "label": "Maximum reasoning effort",
            "value": "Not specified",
            "when": "When maximum reasoning effort uses the default adjustment"
          }
        ],
        "pricing": {
          "billing_mode": "original_invoice_usd",
          "image_input_price": null,
          "image_output_price": null
        },
        "pricing_profiles": [
          {
            "dimensions": {
              "regime": "base"
            },
            "label": "Base token rates",
            "units": [
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "input_price",
                "label": "Input tokens",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "output_price",
                "label": "Output tokens",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "output_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "output_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "cache_read_price",
                "label": "Cache read",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "cached_input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "cached_input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "cache_write_price",
                "label": "Cache write",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "generic_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "generic_cache_creation_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "cache_write_1h_price",
                "label": "Cache write, 1 hour",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "one_hour_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "one_hour_cache_creation_token"
              }
            ]
          },
          {
            "dimensions": {
              "quoted_unit": "per 1,000 video tokens",
              "video_input": "present"
            },
            "label": "Input contains video.",
            "units": [
              {
                "amount": "0.007536000",
                "amount_unit": "usd_per_exact_native_unit",
                "billing_input": false,
                "estimate_only": true,
                "key": "video_output_token_with_video_input",
                "label": "per 1,000 video tokens",
                "native_amount_usd_per_unit": "0.000007536",
                "native_quantity": 1,
                "public_unit_label": "per 1,000 video tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "video_output_token"
              }
            ]
          },
          {
            "dimensions": {
              "quoted_unit": "per 1,000 video tokens",
              "video_input": "absent"
            },
            "label": "Input contains no video.",
            "units": [
              {
                "amount": "0.013032000",
                "amount_unit": "usd_per_exact_native_unit",
                "billing_input": false,
                "estimate_only": true,
                "key": "video_output_token_without_video_input",
                "label": "per 1,000 video tokens",
                "native_amount_usd_per_unit": "0.000013032",
                "native_quantity": 1,
                "public_unit_label": "per 1,000 video tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "video_output_token"
              }
            ]
          },
          {
            "basis": "This estimate is not an additional charge or a fixed rate for the completed generation.",
            "dimensions": {
              "forecast_quantity": "one generation estimate"
            },
            "label": "Estimated generation cost",
            "units": [
              {
                "amount": "0.822402",
                "amount_unit": "usd_per_exact_native_unit",
                "billing_input": false,
                "estimate_only": true,
                "key": "forecast_usd",
                "label": "Estimated generation cost",
                "native_amount_usd_per_unit": "0.822402",
                "native_quantity": 1,
                "public_unit_label": "estimate before generation",
                "quantity": 1,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "request_estimate"
              }
            ]
          }
        ],
        "request_model_id": "doubao-seedance-2-0-fast-260128",
        "route_label": "Ultra",
        "status_reads": [
          "GET /v1/videos/{request_id}",
          "GET /v1/videos/generations/{request_id}",
          "GET /v1/videos/{request_id}/content",
          "GET /v1/videos/generations/{request_id}/content"
        ],
        "tiers": [],
        "units": [
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": false,
            "estimate_only": true,
            "key": "input_price",
            "label": "Input tokens",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "input_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "input_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": false,
            "estimate_only": true,
            "key": "output_price",
            "label": "Output tokens",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "output_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "out",
            "unit": "output_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": false,
            "estimate_only": true,
            "key": "cache_read_price",
            "label": "Cache read",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "cached_input_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "cached_input_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": false,
            "estimate_only": true,
            "key": "cache_write_price",
            "label": "Cache write",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "generic_cache_creation_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "generic_cache_creation_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": false,
            "estimate_only": true,
            "key": "cache_write_1h_price",
            "label": "Cache write, 1 hour",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "one_hour_cache_creation_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "one_hour_cache_creation_token"
          },
          {
            "amount": "0.007536000",
            "amount_unit": "usd_per_exact_native_unit",
            "billing_input": false,
            "estimate_only": true,
            "key": "video_output_token_with_video_input",
            "label": "per 1,000 video tokens",
            "native_amount_usd_per_unit": "0.000007536",
            "native_quantity": 1,
            "public_unit_label": "per 1,000 video tokens",
            "quantity": 1000,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "out",
            "unit": "video_output_token"
          },
          {
            "amount": "0.013032000",
            "amount_unit": "usd_per_exact_native_unit",
            "billing_input": false,
            "estimate_only": true,
            "key": "video_output_token_without_video_input",
            "label": "per 1,000 video tokens",
            "native_amount_usd_per_unit": "0.000013032",
            "native_quantity": 1,
            "public_unit_label": "per 1,000 video tokens",
            "quantity": 1000,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "out",
            "unit": "video_output_token"
          },
          {
            "amount": "0.822402",
            "amount_unit": "usd_per_exact_native_unit",
            "billing_input": false,
            "estimate_only": true,
            "key": "forecast_usd",
            "label": "Estimated generation cost",
            "native_amount_usd_per_unit": "0.822402",
            "native_quantity": 1,
            "public_unit_label": "estimate before generation",
            "quantity": 1,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "out",
            "unit": "request_estimate"
          }
        ]
      }
    ],
    "model_aliases": [
      {
        "canonical_model_id": "doubao-seedance-2-0-fast-260128",
        "request_model_id": "doubao-seedance-2-0-fast-260128",
        "route_label": "Ultra"
      }
    ],
    "name": "ByteDance: Seedance 2.0 Fast",
    "price": {
      "estimate_only": true,
      "in": null,
      "in_label": null,
      "out": 0.822402,
      "out_label": "estimate before generation",
      "scope_label": "Estimated generation cost",
      "sort_in": null,
      "sort_out": 0.822402,
      "varies": false
    },
    "short": "Το Seedance 2.0 Fast είναι το πολυτροπικό προφίλ Fast για δημιουργία, επεξεργασία και επέκταση βίντεο. Δέχεται κείμενο και αναφορές εικόνας, βίντεο και ήχου, υποστηρίζει έξοδο με συγχρονισμένο ήχο ή χωρίς ήχο και η τεκμηρίωσή του αναφέρει αποσπάσματα 4–15 δευτερολέπτων σε 480p ή 720p."
  },
  "renderer_schema": {
    "method_order": "Original DTO methods order; every exact route/format/path/caller survives.",
    "prices": "Original public DTO fields and original native display HTML; no flattened or normalized offers."
  },
  "representation": "exact-public-dto-and-native-renderer-html",
  "representationNotes": {
    "current_reference": {
      "about_json_pointer": "/aboutHtml",
      "methods": [
        {
          "contract_json_pointer": "/methods/0/rawMethod/contract",
          "html_json_pointer": "/methods/0/html",
          "method_ordinal": 0
        }
      ],
      "role": "current-semantic-reference"
    },
    "raw_input": {
      "examples_role": "historical-input-not-current-ready-examples",
      "json_pointers": [
        "/rawModel",
        "/methods/0/rawMethod"
      ],
      "role": "historical-owner-input"
    },
    "schema": "ailoot-native-model-representations-v1"
  },
  "schema": "ailoot-static-model-facts-v1",
  "schema_version": 1,
  "shortText": "Το Seedance 2.0 Fast είναι το πολυτροπικό προφίλ Fast για δημιουργία, επεξεργασία και επέκταση βίντεο. Δέχεται κείμενο και αναφορές εικόνας, βίντεο και ήχου, υποστηρίζει έξοδο με συγχρονισμένο ήχο ή χωρίς ήχο και η τεκμηρίωσή του αναφέρει αποσπάσματα 4–15 δευτερολέπτων σε 480p ή 720p.",
  "source": {
    "audit_sha256": "2e00086bcbfc28e64d0cebe97aa47c17d8d5618963027f8ffb9dc6123d7d25b1",
    "bridge_map_sha256": "1125275768b9636fc8461bc7da5061239a81ddfe508e2557843ca42c58ab0036",
    "raw_model_json_sha256": "d1815d6625563fd0c9adb72eee01211226f5b9f58e0c17c81ffef9f6f8c1380e",
    "renderer_sha256": "3ed36f7af4f78822bafbd174fdcaed7b698a18a86efe254253d37f1b098a7566"
  },
  "sourceRevision": "ee238efc8f921925ba219ad12a381fb8d5d4667797359e65a9d87f4dcbf5e2f1"
}
