{
  "aboutHtml": "<p>Το Seedance 1.0 Pro Fast είναι το προφίλ Fast με αναγνωριστικό doubao-seedance-1-0-pro-fast-251015. Δημιουργεί βίντεο χωρίς ήχο από γραπτή σκηνή ή από αρχική σύνθεση που καθοδηγείται από εικόνα. Το συγκεκριμένο αναγνωριστικό επιλογής διακρίνει αυτό το προφίλ από το Seedance 1.0 Pro· η λέξη Fast δεν ορίζει εγγυημένο χρόνο ολοκλήρωσης για μια μεμονωμένη εργασία. Διάλεξε τρόπο εισόδου ανάλογα με το τι πρέπει να καθορίσει τη σκηνή και, στη συνέχεια, αξιολόγησε το επιστρεφόμενο απόσπασμα σύμφωνα με αυτές τις οδηγίες.</p><p>Ένα πλάνο που καθοδηγείται από κείμενο ξεκινά με μια σύντομη ακολουθία: το θέμα και το περιβάλλον, τη δράση, τη διαδρομή της κάμερας και την τελική όψη. Για μια σταδιακή παρουσίαση προϊόντος, περιέγραψε το αντικείμενο πάνω σε μια επιφάνεια, το φως πάνω στο υλικό του και μια σύντομη κίνηση που καταλήγει στο χαρακτηριστικό που παρουσιάζεται. Για μια ιδέα τοποθεσίας, πέρασε από ένα ευρύ γενικό πλάνο σε ένα αναγνωρίσιμο σημείο ενδιαφέροντος. Απόφυγε να ζητάς από ένα σύντομο απόσπασμα να εκτελέσει πολλές άσχετες σκηνές, των οποίων τα θέματα και τα περιβάλλοντα πρέπει όλα να παρουσιαστούν από την αρχή.</p><p>Ένα πλάνο που καθοδηγείται από εικόνα ξεκινά με στοιχείο image_url στον πίνακα content και με γραπτή οδηγία κίνησης. Προετοίμασε την περικοπή, το φόντο και τη διάταξη του θέματος στην εικόνα και μετά δήλωσε ποια στοιχεία κινούνται και πώς συμπεριφέρεται η κάμερα. Έτσι μια στατική σύνθεση μπορεί να γίνει σύντομη σκηνή με κίνηση. Αυτό χρησιμεύει για ένα πορτρέτο, ένα αντικείμενο πάνω σε τραπέζι ή μια προετοιμασμένη οπτική ιδέα, ενώ το πραγματικό αποτέλεσμα εξακολουθεί να χρειάζεται έλεγχο ταυτότητας, σχήματος και κίνησης σε όλο το απόσπασμα.</p><p>Οι είσοδοι εικόνας μπορούν να χρησιμοποιούν προσβάσιμο URL ή URL δεδομένων Base64. Οι τεκμηριωμένες μορφές είναι JPEG, PNG, WEBP, BMP, TIFF και GIF· η εικόνα πρέπει να είναι μικρότερη από 30 MB, με τις δύο διαστάσεις αυστηρά μεταξύ 300 και 6000 εικονοστοιχείων και το πλάτος διαιρεμένο με το ύψος αυστηρά μεταξύ 0.4 και 2.5. Διάλεξε καθαρή αρχική εικόνα με ορατές λεπτομέρειες του θέματος. Ο οδηγός εικόνων συνιστά κάδρο adaptive (προσαρμοστικό), οπότε οι αναλογίες της προετοιμασμένης εικόνας πρέπει να ταιριάζουν με τη σύνθεση στην οποία θέλεις να δώσεις κίνηση.</p><p>Η τεκμηρίωση του προφίλ 1.0 αναφέρει διάρκεια δύο έως δώδεκα δευτερολέπτων στα 24 fps. Το Pro Fast έχει προεπιλεγμένη ανάλυση 1080p και ο διατηρημένος πίνακας εξόδου περιλαμβάνει επίπεδα 480p, 720p και 1080p. Ο οδηγός της λειτουργίας αποκλείει το 1080p στην περίπτωση εικόνας αναφοράς. Οι σταθερές αναλογίες διαστάσεων περιλαμβάνουν 16:9, 4:3, 1:1, 3:4, 9:16 και 21:9. Διάλεξε ανάλυση και αναλογία κατάλληλες για τον επιλεγμένο τρόπο εισόδου, αντί να υποθέτεις ότι κάθε συνδυασμός είναι εναλλάξιμος.</p><p>Οι επιλογές seed και watermark βοηθούν να παραμένουν ρητές οι ρυθμίσεις του αιτήματος. Το εύρος του ακέραιου seed είναι από -1 έως 2^32-1· το -1 ζητά τυχαία τιμή. Η οδηγία σταθερής κάμερας εφαρμόζεται υπό προϋποθέσεις: ο οδηγός την αποκλείει στην περίπτωση εικόνας αναφοράς και δεν εγγυάται το οπτικό αποτέλεσμα όπου υποστηρίζεται. Οι εντολές παραμέτρων που ενσωματώνονται στο κείμενο υπερισχύουν των ξεχωριστών προαιρετικών παραμέτρων. Κράτησε αυτές τις οδηγίες συνεπείς, ιδίως όταν αναθεωρείς κείμενο του οποίου μια παλιά εντολή διάρκειας ή ανάλυσης θα μπορούσε διαφορετικά να παραμείνει στην περιγραφή της σκηνής.</p><p>Η χρήση μετριέται σε token βίντεο: πλάτος εξόδου × ύψος εξόδου × ρυθμός καρέ × διάρκεια εξόδου / 1024. Η ολοκληρωμένη εργασία αναφέρει αυτή την ποσότητα ως usage.completion_tokens. Κράτησε την αναφερόμενη χρήση μαζί με το ολοκληρωμένο απόσπασμα και τις ζητούμενες ρυθμίσεις του.</p><p>Η υποβολή δημιουργεί ασύγχρονη εργασία. Αποθήκευσε το αναγνωριστικό της, παρακολούθησε την κατάστασή της και ανάκτησε το ολοκληρωμένο βίντεο από το content.video_url μετά την επιτυχία. Η τεκμηρίωση αναφέρει ότι τα παραγόμενα αρχεία διατηρούνται για επτά ημέρες, οπότε κράτησε το ολοκληρωμένο αρχείο μαζί με τις οδηγίες και οποιαδήποτε εικόνα εισόδου. Έλεγξε ολόκληρη τη δράση, την κίνηση της κάμερας και το τελικό κάδρο· αν μια λεπτομέρεια δεν ανταποκρίνεται στις οδηγίες, περιέγραψε τη συγκεκριμένη διόρθωση διατηρώντας τα μέρη που πέτυχαν.</p>",
  "aboutText": "Το Seedance 1.0 Pro Fast είναι το προφίλ Fast με αναγνωριστικό doubao-seedance-1-0-pro-fast-251015. Δημιουργεί βίντεο χωρίς ήχο από γραπτή σκηνή ή από αρχική σύνθεση που καθοδηγείται από εικόνα. Το συγκεκριμένο αναγνωριστικό επιλογής διακρίνει αυτό το προφίλ από το Seedance 1.0 Pro· η λέξη Fast δεν ορίζει εγγυημένο χρόνο ολοκλήρωσης για μια μεμονωμένη εργασία. Διάλεξε τρόπο εισόδου ανάλογα με το τι πρέπει να καθορίσει τη σκηνή και, στη συνέχεια, αξιολόγησε το επιστρεφόμενο απόσπασμα σύμφωνα με αυτές τις οδηγίες.\n\nΈνα πλάνο που καθοδηγείται από κείμενο ξεκινά με μια σύντομη ακολουθία: το θέμα και το περιβάλλον, τη δράση, τη διαδρομή της κάμερας και την τελική όψη. Για μια σταδιακή παρουσίαση προϊόντος, περιέγραψε το αντικείμενο πάνω σε μια επιφάνεια, το φως πάνω στο υλικό του και μια σύντομη κίνηση που καταλήγει στο χαρακτηριστικό που παρουσιάζεται. Για μια ιδέα τοποθεσίας, πέρασε από ένα ευρύ γενικό πλάνο σε ένα αναγνωρίσιμο σημείο ενδιαφέροντος. Απόφυγε να ζητάς από ένα σύντομο απόσπασμα να εκτελέσει πολλές άσχετες σκηνές, των οποίων τα θέματα και τα περιβάλλοντα πρέπει όλα να παρουσιαστούν από την αρχή.\n\nΈνα πλάνο που καθοδηγείται από εικόνα ξεκινά με στοιχείο image_url στον πίνακα content και με γραπτή οδηγία κίνησης. Προετοίμασε την περικοπή, το φόντο και τη διάταξη του θέματος στην εικόνα και μετά δήλωσε ποια στοιχεία κινούνται και πώς συμπεριφέρεται η κάμερα. Έτσι μια στατική σύνθεση μπορεί να γίνει σύντομη σκηνή με κίνηση. Αυτό χρησιμεύει για ένα πορτρέτο, ένα αντικείμενο πάνω σε τραπέζι ή μια προετοιμασμένη οπτική ιδέα, ενώ το πραγματικό αποτέλεσμα εξακολουθεί να χρειάζεται έλεγχο ταυτότητας, σχήματος και κίνησης σε όλο το απόσπασμα.\n\nΟι είσοδοι εικόνας μπορούν να χρησιμοποιούν προσβάσιμο URL ή URL δεδομένων Base64. Οι τεκμηριωμένες μορφές είναι JPEG, PNG, WEBP, BMP, TIFF και GIF· η εικόνα πρέπει να είναι μικρότερη από 30 MB, με τις δύο διαστάσεις αυστηρά μεταξύ 300 και 6000 εικονοστοιχείων και το πλάτος διαιρεμένο με το ύψος αυστηρά μεταξύ 0.4 και 2.5. Διάλεξε καθαρή αρχική εικόνα με ορατές λεπτομέρειες του θέματος. Ο οδηγός εικόνων συνιστά κάδρο adaptive (προσαρμοστικό), οπότε οι αναλογίες της προετοιμασμένης εικόνας πρέπει να ταιριάζουν με τη σύνθεση στην οποία θέλεις να δώσεις κίνηση.\n\nΗ τεκμηρίωση του προφίλ 1.0 αναφέρει διάρκεια δύο έως δώδεκα δευτερολέπτων στα 24 fps. Το Pro Fast έχει προεπιλεγμένη ανάλυση 1080p και ο διατηρημένος πίνακας εξόδου περιλαμβάνει επίπεδα 480p, 720p και 1080p. Ο οδηγός της λειτουργίας αποκλείει το 1080p στην περίπτωση εικόνας αναφοράς. Οι σταθερές αναλογίες διαστάσεων περιλαμβάνουν 16:9, 4:3, 1:1, 3:4, 9:16 και 21:9. Διάλεξε ανάλυση και αναλογία κατάλληλες για τον επιλεγμένο τρόπο εισόδου, αντί να υποθέτεις ότι κάθε συνδυασμός είναι εναλλάξιμος.\n\nΟι επιλογές seed και watermark βοηθούν να παραμένουν ρητές οι ρυθμίσεις του αιτήματος. Το εύρος του ακέραιου seed είναι από -1 έως 2^32-1· το -1 ζητά τυχαία τιμή. Η οδηγία σταθερής κάμερας εφαρμόζεται υπό προϋποθέσεις: ο οδηγός την αποκλείει στην περίπτωση εικόνας αναφοράς και δεν εγγυάται το οπτικό αποτέλεσμα όπου υποστηρίζεται. Οι εντολές παραμέτρων που ενσωματώνονται στο κείμενο υπερισχύουν των ξεχωριστών προαιρετικών παραμέτρων. Κράτησε αυτές τις οδηγίες συνεπείς, ιδίως όταν αναθεωρείς κείμενο του οποίου μια παλιά εντολή διάρκειας ή ανάλυσης θα μπορούσε διαφορετικά να παραμείνει στην περιγραφή της σκηνής.\n\nΗ χρήση μετριέται σε token βίντεο: πλάτος εξόδου × ύψος εξόδου × ρυθμός καρέ × διάρκεια εξόδου / 1024. Η ολοκληρωμένη εργασία αναφέρει αυτή την ποσότητα ως usage.completion_tokens. Κράτησε την αναφερόμενη χρήση μαζί με το ολοκληρωμένο απόσπασμα και τις ζητούμενες ρυθμίσεις του.\n\nΗ υποβολή δημιουργεί ασύγχρονη εργασία. Αποθήκευσε το αναγνωριστικό της, παρακολούθησε την κατάστασή της και ανάκτησε το ολοκληρωμένο βίντεο από το content.video_url μετά την επιτυχία. Η τεκμηρίωση αναφέρει ότι τα παραγόμενα αρχεία διατηρούνται για επτά ημέρες, οπότε κράτησε το ολοκληρωμένο αρχείο μαζί με τις οδηγίες και οποιαδήποτε εικόνα εισόδου. Έλεγξε ολόκληρη τη δράση, την κίνηση της κάμερας και το τελικό κάδρο· αν μια λεπτομέρεια δεν ανταποκρίνεται στις οδηγίες, περιέγραψε τη συγκεκριμένη διόρθωση διατηρώντας τα μέρη που πέτυχαν.",
  "editorialOverlay": {
    "copy_fields": null,
    "copy_sha256": null,
    "copy_source": null,
    "html_sha256": "cc5076f9ea537e5c891f458f7f6cf8b90a8518722f2faea550f29f523fe308dd",
    "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 1.0 Pro Fast</h2><button class=\"icon-btn\" type=\"button\" data-close-sheet aria-label=\"Κλείσιμο\">×</button></div><div class=\"idline\"><span>ByteDance /</span><code>doubao-seedance-1-0-pro-fast-251015</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-1-0-pro-fast-251015\">Βίντεο</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 1.0 Pro Fast είναι το ξεχωριστά ονομαζόμενο προφίλ Fast για δημιουργία βίντεο χωρίς ήχο από κείμενο και εικόνα. Δέχεται οδηγίες σκηνής ή σύνθεση που καθοδηγείται από εικόνα, με έξοδο 2–12 δευτερολέπτων, 24 fps και ρητούς ελέγχους κάδρου.</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 1.0 Pro Fast είναι το προφίλ Fast με αναγνωριστικό doubao-seedance-1-0-pro-fast-251015. Δημιουργεί βίντεο χωρίς ήχο από γραπτή σκηνή ή από αρχική σύνθεση που καθοδηγείται από εικόνα. Το συγκεκριμένο αναγνωριστικό επιλογής διακρίνει αυτό το προφίλ από το Seedance 1.0 Pro· η λέξη Fast δεν ορίζει εγγυημένο χρόνο ολοκλήρωσης για μια μεμονωμένη εργασία. Διάλεξε τρόπο εισόδου ανάλογα με το τι πρέπει να καθορίσει τη σκηνή και, στη συνέχεια, αξιολόγησε το επιστρεφόμενο απόσπασμα σύμφωνα με αυτές τις οδηγίες.</p><p>Ένα πλάνο που καθοδηγείται από κείμενο ξεκινά με μια σύντομη ακολουθία: το θέμα και το περιβάλλον, τη δράση, τη διαδρομή της κάμερας και την τελική όψη. Για μια σταδιακή παρουσίαση προϊόντος, περιέγραψε το αντικείμενο πάνω σε μια επιφάνεια, το φως πάνω στο υλικό του και μια σύντομη κίνηση που καταλήγει στο χαρακτηριστικό που παρουσιάζεται. Για μια ιδέα τοποθεσίας, πέρασε από ένα ευρύ γενικό πλάνο σε ένα αναγνωρίσιμο σημείο ενδιαφέροντος. Απόφυγε να ζητάς από ένα σύντομο απόσπασμα να εκτελέσει πολλές άσχετες σκηνές, των οποίων τα θέματα και τα περιβάλλοντα πρέπει όλα να παρουσιαστούν από την αρχή.</p><p>Ένα πλάνο που καθοδηγείται από εικόνα ξεκινά με στοιχείο image_url στον πίνακα content και με γραπτή οδηγία κίνησης. Προετοίμασε την περικοπή, το φόντο και τη διάταξη του θέματος στην εικόνα και μετά δήλωσε ποια στοιχεία κινούνται και πώς συμπεριφέρεται η κάμερα. Έτσι μια στατική σύνθεση μπορεί να γίνει σύντομη σκηνή με κίνηση. Αυτό χρησιμεύει για ένα πορτρέτο, ένα αντικείμενο πάνω σε τραπέζι ή μια προετοιμασμένη οπτική ιδέα, ενώ το πραγματικό αποτέλεσμα εξακολουθεί να χρειάζεται έλεγχο ταυτότητας, σχήματος και κίνησης σε όλο το απόσπασμα.</p><p>Οι είσοδοι εικόνας μπορούν να χρησιμοποιούν προσβάσιμο URL ή URL δεδομένων Base64. Οι τεκμηριωμένες μορφές είναι JPEG, PNG, WEBP, BMP, TIFF και GIF· η εικόνα πρέπει να είναι μικρότερη από 30 MB, με τις δύο διαστάσεις αυστηρά μεταξύ 300 και 6000 εικονοστοιχείων και το πλάτος διαιρεμένο με το ύψος αυστηρά μεταξύ 0.4 και 2.5. Διάλεξε καθαρή αρχική εικόνα με ορατές λεπτομέρειες του θέματος. Ο οδηγός εικόνων συνιστά κάδρο adaptive (προσαρμοστικό), οπότε οι αναλογίες της προετοιμασμένης εικόνας πρέπει να ταιριάζουν με τη σύνθεση στην οποία θέλεις να δώσεις κίνηση.</p><p>Η τεκμηρίωση του προφίλ 1.0 αναφέρει διάρκεια δύο έως δώδεκα δευτερολέπτων στα 24 fps. Το Pro Fast έχει προεπιλεγμένη ανάλυση 1080p και ο διατηρημένος πίνακας εξόδου περιλαμβάνει επίπεδα 480p, 720p και 1080p. Ο οδηγός της λειτουργίας αποκλείει το 1080p στην περίπτωση εικόνας αναφοράς. Οι σταθερές αναλογίες διαστάσεων περιλαμβάνουν 16:9, 4:3, 1:1, 3:4, 9:16 και 21:9. Διάλεξε ανάλυση και αναλογία κατάλληλες για τον επιλεγμένο τρόπο εισόδου, αντί να υποθέτεις ότι κάθε συνδυασμός είναι εναλλάξιμος.</p><p>Οι επιλογές seed και watermark βοηθούν να παραμένουν ρητές οι ρυθμίσεις του αιτήματος. Το εύρος του ακέραιου seed είναι από -1 έως 2^32-1· το -1 ζητά τυχαία τιμή. Η οδηγία σταθερής κάμερας εφαρμόζεται υπό προϋποθέσεις: ο οδηγός την αποκλείει στην περίπτωση εικόνας αναφοράς και δεν εγγυάται το οπτικό αποτέλεσμα όπου υποστηρίζεται. Οι εντολές παραμέτρων που ενσωματώνονται στο κείμενο υπερισχύουν των ξεχωριστών προαιρετικών παραμέτρων. Κράτησε αυτές τις οδηγίες συνεπείς, ιδίως όταν αναθεωρείς κείμενο του οποίου μια παλιά εντολή διάρκειας ή ανάλυσης θα μπορούσε διαφορετικά να παραμείνει στην περιγραφή της σκηνής.</p><p>Η χρήση μετριέται σε token βίντεο: πλάτος εξόδου × ύψος εξόδου × ρυθμός καρέ × διάρκεια εξόδου / 1024. Η ολοκληρωμένη εργασία αναφέρει αυτή την ποσότητα ως usage.completion_tokens. Κράτησε την αναφερόμενη χρήση μαζί με το ολοκληρωμένο απόσπασμα και τις ζητούμενες ρυθμίσεις του.</p><p>Η υποβολή δημιουργεί ασύγχρονη εργασία. Αποθήκευσε το αναγνωριστικό της, παρακολούθησε την κατάστασή της και ανάκτησε το ολοκληρωμένο βίντεο από το content.video_url μετά την επιτυχία. Η τεκμηρίωση αναφέρει ότι τα παραγόμενα αρχεία διατηρούνται για επτά ημέρες, οπότε κράτησε το ολοκληρωμένο αρχείο μαζί με τις οδηγίες και οποιαδήποτε εικόνα εισόδου. Έλεγξε ολόκληρη τη δράση, την κίνηση της κάμερας και το τελικό κάδρο· αν μια λεπτομέρεια δεν ανταποκρίνεται στις οδηγίες, περιέγραψε τη συγκεκριμένη διόρθωση διατηρώντας τα μέρη που πέτυχαν.</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></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-1-0-pro-fast-251015</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\">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>Ελάχιστο: 2</div><div>Μέγιστο: 12</div><div>Συνθήκες: Το αρχικό σχήμα 1.x ορίζει 2–12· μεταγενέστερη κοινή περιγραφή ορίζει την 1.5 ως 4–12 ή -1. Το παράδειγμα χρησιμοποιεί την κοινά τεκμηριωμένη τιμή 5.</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 και 1080p. Η είσοδος εικόνας αναφοράς αποκλείει το 1080p. Η κοινή απαρίθμηση τιμών 720p συγκρούεται με την περιγραφή του συγκεκριμένου μοντέλου, επομένως η υποστήριξη 720p παραμένει αδιευκρίνιστη και στις δύο λειτουργίες.</div></td><td data-cell-label=\"Προεπιλογή\" data-default=\"known\"><span class=\"card-cell-label\">Προεπιλογή</span>1080p</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.</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\">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, flex</div><div>Συνθήκες: default=online, flex=offline· επιλέξτε πριν από τη δημιουργία.</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\">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\">camerafixed</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>Συνθήκες: Απαιτείται από το Ailoot· ο έλεγχος κάμερας με εικόνα αναφοράς τεκμηριώνεται ως μη υποστηριζόμενος και η επίδρασή του δεν είναι εγγυημένη.</div></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\">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\">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></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></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>camerafixed, content, execution_expires_after, model, seed, watermark</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>duration, resolution, ratio, service_tier</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</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>image_constraints</code></th><td data-cell-label=\"Σύμβαση\"><span class=\"card-cell-label\">Σύμβαση</span>{&quot;formats&quot;:[&quot;jpeg&quot;,&quot;png&quot;,&quot;webp&quot;,&quot;bmp&quot;,&quot;tiff&quot;,&quot;gif&quot;],&quot;aspect_ratio_exclusive&quot;:[0.4,2.5],&quot;dimensions_px_exclusive&quot;:[300,6000],&quot;file_size_mb_exclusive&quot;:30,&quot;mb_bytes_definition&quot;: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>Ultra</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.0012</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.0576</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-2777-tab-0\" role=\"tab\" type=\"button\" aria-controls=\"model-code-2777-panel-0\" aria-selected=\"true\" tabindex=\"0\">curl · δημιουργήστε βίντεο</button><button class=\"cg-tab\" id=\"model-code-2777-tab-1\" role=\"tab\" type=\"button\" aria-controls=\"model-code-2777-panel-1\" aria-selected=\"false\" tabindex=\"-1\">curl · διαβάστε την αρχική εργασία</button><button class=\"cg-tab\" id=\"model-code-2777-tab-2\" role=\"tab\" type=\"button\" aria-controls=\"model-code-2777-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-2777-panel-0\" role=\"tabpanel\" aria-labelledby=\"model-code-2777-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-1-0-pro-fast-251015&quot;,&quot;content&quot;:[{&quot;type&quot;:&quot;text&quot;,&quot;text&quot;:&quot;女孩抱着狐狸，女孩睁开眼，温柔地看向镜头，狐狸友善地抱着，镜头缓缓拉出，女孩的头发被风吹动&quot;}],&quot;resolution&quot;:&quot;480p&quot;,&quot;ratio&quot;:&quot;1:1&quot;,&quot;duration&quot;:5,&quot;service_tier&quot;:&quot;default&quot;,&quot;seed&quot;:-1,&quot;camerafixed&quot;:false,&quot;watermark&quot;:false,&quot;execution_expires_after&quot;:172800}\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-2777-panel-1\" role=\"tabpanel\" aria-labelledby=\"model-code-2777-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-2777-panel-2\" role=\"tabpanel\" aria-labelledby=\"model-code-2777-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-1-0-pro-fast-251015&amp;route=Ultra&amp;caller=doubao-seedance-1-0-pro-fast-251015&amp;fmt=videos\"><code>doubao-seedance-1-0-pro-fast-251015</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-1-0-pro-fast-251015&amp;route=Ultra&amp;caller=doubao-seedance-1-0-pro-fast-251015&amp;fmt=videos\"><code>doubao-seedance-1-0-pro-fast-251015</code></a></p></section></div>",
      "method_identity": {
        "effective_request_model_id": "doubao-seedance-1-0-pro-fast-251015",
        "fmt": "videos",
        "http": "POST",
        "path": "/v1/videos",
        "request_model_id": "doubao-seedance-1-0-pro-fast-251015",
        "route_label": "Ultra"
      },
      "method_key": "Ultra|videos|/v1/videos|doubao-seedance-1-0-pro-fast-251015",
      "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"
              ],
              [
                "text",
                "image"
              ]
            ],
            "operation_modes": [
              "text_to_video",
              "image_to_video"
            ],
            "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-1-0-pro-fast-251015"
                ],
                "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": "Το αρχικό σχήμα 1.x ορίζει 2–12· μεταγενέστερη κοινή περιγραφή ορίζει την 1.5 ως 4–12 ή -1. Το παράδειγμα χρησιμοποιεί την κοινά τεκμηριωμένη τιμή 5.",
                "default": 5,
                "default_known": true,
                "enum": null,
                "enum_known": false,
                "maximum": 12,
                "minimum": 2,
                "name": "duration",
                "required": false,
                "type": "integer"
              },
              {
                "availability": "source_interface",
                "conditions": "Οι επιβεβαιωμένες τιμές για κείμενο σε βίντεο είναι 480p και 1080p. Η είσοδος εικόνας αναφοράς αποκλείει το 1080p. Η κοινή απαρίθμηση τιμών 720p συγκρούεται με την περιγραφή του συγκεκριμένου μοντέλου, επομένως η υποστήριξη 720p παραμένει αδιευκρίνιστη και στις δύο λειτουργίες.",
                "default": "1080p",
                "default_conditions": "1080p is the documented model default for text-to-video. Reference-image input excludes 1080p; its default is not established here.",
                "default_known": true,
                "enum": null,
                "enum_known": false,
                "name": "resolution",
                "required": false,
                "supported_values_by_mode": {
                  "image_to_video": {
                    "confirmed": [
                      "480p"
                    ],
                    "excluded": [
                      "1080p"
                    ],
                    "unresolved": [
                      "720p"
                    ]
                  },
                  "text_to_video": {
                    "confirmed": [
                      "480p",
                      "1080p"
                    ],
                    "unresolved": [
                      "720p"
                    ]
                  }
                },
                "type": "string"
              },
              {
                "availability": "source_interface",
                "conditions": "Προεπιλογές που εξαρτώνται από τη σκηνή και το μοντέλο· η τεκμηρίωση εισόδου εικόνας συνιστά adaptive.",
                "default": null,
                "default_known": false,
                "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",
                "conditions": "default=online, flex=offline· επιλέξτε πριν από τη δημιουργία.",
                "default": "default",
                "default_known": true,
                "enum": [
                  "default",
                  "flex"
                ],
                "enum_known": true,
                "name": "service_tier",
                "required": false,
                "type": "string"
              },
              {
                "availability": "source_interface",
                "default": -1,
                "default_known": true,
                "enum": null,
                "enum_known": false,
                "maximum": 4294967295,
                "minimum": -1,
                "name": "seed",
                "required": true,
                "type": "integer"
              },
              {
                "availability": "source_interface",
                "conditions": "Απαιτείται από το Ailoot· ο έλεγχος κάμερας με εικόνα αναφοράς τεκμηριώνεται ως μη υποστηριζόμενος και η επίδρασή του δεν είναι εγγυημένη.",
                "default": false,
                "default_known": true,
                "enum": null,
                "enum_known": false,
                "name": "camerafixed",
                "required": true,
                "type": "boolean"
              },
              {
                "availability": "source_interface",
                "default": false,
                "default_known": true,
                "enum": null,
                "enum_known": false,
                "name": "watermark",
                "required": true,
                "type": "boolean"
              },
              {
                "availability": "source_interface",
                "default": 172800,
                "default_known": true,
                "enum": null,
                "enum_known": false,
                "maximum": 259200,
                "minimum": 3600,
                "name": "execution_expires_after",
                "required": true,
                "type": "integer",
                "unit": "δευτερόλεπτα"
              }
            ],
            "profile_binding": "Exact model ID and documented Ailoot video interface.",
            "request_schema": {
              "additionalProperties": true,
              "properties": {
                "camerafixed": {
                  "type": "boolean"
                },
                "content": {
                  "items": {
                    "type": "object"
                  },
                  "minItems": 1,
                  "type": "array"
                },
                "duration": {
                  "maximum": 12,
                  "minimum": 2,
                  "type": "integer"
                },
                "execution_expires_after": {
                  "maximum": 259200,
                  "minimum": 3600,
                  "type": "integer"
                },
                "model": {
                  "const": "doubao-seedance-1-0-pro-fast-251015",
                  "type": "string"
                },
                "ratio": {
                  "enum": [
                    "16:9",
                    "4:3",
                    "1:1",
                    "3:4",
                    "9:16",
                    "21:9",
                    "adaptive"
                  ],
                  "type": "string"
                },
                "resolution": {
                  "description": "Use the explicit resolution supported_values_by_mode conditions: reference-image input excludes 1080p; 720p support is unresolved. No unconditional per-model enum is asserted.",
                  "type": "string"
                },
                "seed": {
                  "maximum": 4294967295,
                  "minimum": -1,
                  "type": "integer"
                },
                "service_tier": {
                  "enum": [
                    "default",
                    "flex"
                  ],
                  "type": "string"
                },
                "watermark": {
                  "type": "boolean"
                }
              },
              "required": [
                "camerafixed",
                "content",
                "execution_expires_after",
                "model",
                "seed",
                "watermark"
              ],
              "type": "object"
            },
            "source_ambiguities": [
              "Primary content.items.required says type+text even for its image example without text; preserve intended example branches and outer-array validation boundary.",
              "Pro/pro-fast inline-resolution and top-level enum differ; copyable example uses documented 480p."
            ],
            "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",
            "image_constraints": {
              "aspect_ratio_exclusive": [
                0.4,
                2.5
              ],
              "dimensions_px_exclusive": [
                300,
                6000
              ],
              "file_size_mb_exclusive": 30,
              "formats": [
                "jpeg",
                "png",
                "webp",
                "bmp",
                "tiff",
                "gif"
              ],
              "mb_bytes_definition": null
            },
            "material_types": [
              "text",
              "image"
            ],
            "optional": [
              "duration",
              "resolution",
              "ratio",
              "service_tier"
            ],
            "required": [
              "camerafixed",
              "content",
              "execution_expires_after",
              "model",
              "seed",
              "watermark"
            ],
            "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"
            ]
          },
          "method": {
            "http": "POST",
            "path": "/v1/videos"
          },
          "method_aliases": [
            "/v1/videos/generations"
          ],
          "operation_modes": [
            "text_to_video",
            "image_to_video"
          ],
          "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"
            },
            "label": "Ultra",
            "units": [
              {
                "amount": "0.0012000",
                "amount_unit": "usd_per_exact_native_unit",
                "billing_input": false,
                "estimate_only": true,
                "key": "video_output_token",
                "label": "per 1,000 video tokens",
                "native_amount_usd_per_unit": "0.0000012",
                "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.0576",
                "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.0576",
                "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-1-0-pro-fast-251015\",\"content\":[{\"type\":\"text\",\"text\":\"女孩抱着狐狸，女孩睁开眼，温柔地看向镜头，狐狸友善地抱着，镜头缓缓拉出，女孩的头发被风吹动\"}],\"resolution\":\"480p\",\"ratio\":\"1:1\",\"duration\":5,\"service_tier\":\"default\",\"seed\":-1,\"camerafixed\":false,\"watermark\":false,\"execution_expires_after\":172800}\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"
        ],
        "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"
            },
            "label": "Ultra",
            "units": [
              {
                "amount": "0.0012000",
                "amount_unit": "usd_per_exact_native_unit",
                "billing_input": false,
                "estimate_only": true,
                "key": "video_output_token",
                "label": "per 1,000 video tokens",
                "native_amount_usd_per_unit": "0.0000012",
                "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.0576",
                "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.0576",
                "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-1-0-pro-fast-251015",
        "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.0012000",
            "amount_unit": "usd_per_exact_native_unit",
            "billing_input": false,
            "estimate_only": true,
            "key": "video_output_token",
            "label": "per 1,000 video tokens",
            "native_amount_usd_per_unit": "0.0000012",
            "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.0576",
            "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.0576",
            "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-1-0-pro-fast-251015",
  "nativeProvenance": {
    "input_facts_canonical_sha256": "a9876b4c7feccce9062018ac29ef0f7958451bb50ebc6a88b8ccea9eb2187195",
    "input_html_sha256": "e3b5f1256632fdbd05d906c49b7f6915c4786ab0e023abc794782dc9e16e22b3",
    "private_audit_sha256": "a4189b17293bb3941308230da2513b5e87c595458ab7e426c134b8a72eae9d2d",
    "role": "historical-normalized-input-audit-hashes",
    "schema": "ailoot-native-model-provenance-v2"
  },
  "page": {
    "canonical": "https://ailoot.ai/models/el/doubao-seedance-1-0-pro-fast-251015/",
    "description": "Το Seedance 1.0 Pro Fast είναι το ξεχωριστά ονομαζόμενο προφίλ Fast για δημιουργία βίντεο χωρίς ήχο από κείμενο και εικόνα. Δέχεται οδηγίες σκηνής ή σύνθεση που καθοδηγείται από εικόνα, με έξοδο 2–12 δευτερολέπτων, 24 fps και ρητούς ελέγχους κάδρου.",
    "locale": "el",
    "md_url": "https://ailoot.ai/models/el/doubao-seedance-1-0-pro-fast-251015/index.md",
    "title": "ByteDance: Seedance 1.0 Pro Fast — Ailoot",
    "url": "https://ailoot.ai/models/el/doubao-seedance-1-0-pro-fast-251015/"
  },
  "rawModel": {
    "about": "Το Seedance 1.0 Pro Fast είναι το προφίλ Fast με αναγνωριστικό doubao-seedance-1-0-pro-fast-251015. Δημιουργεί βίντεο χωρίς ήχο από γραπτή σκηνή ή από αρχική σύνθεση που καθοδηγείται από εικόνα. Το συγκεκριμένο αναγνωριστικό επιλογής διακρίνει αυτό το προφίλ από το Seedance 1.0 Pro· η λέξη Fast δεν ορίζει εγγυημένο χρόνο ολοκλήρωσης για μια μεμονωμένη εργασία. Διάλεξε τρόπο εισόδου ανάλογα με το τι πρέπει να καθορίσει τη σκηνή και, στη συνέχεια, αξιολόγησε το επιστρεφόμενο απόσπασμα σύμφωνα με αυτές τις οδηγίες.\n\nΈνα πλάνο που καθοδηγείται από κείμενο ξεκινά με μια σύντομη ακολουθία: το θέμα και το περιβάλλον, τη δράση, τη διαδρομή της κάμερας και την τελική όψη. Για μια σταδιακή παρουσίαση προϊόντος, περιέγραψε το αντικείμενο πάνω σε μια επιφάνεια, το φως πάνω στο υλικό του και μια σύντομη κίνηση που καταλήγει στο χαρακτηριστικό που παρουσιάζεται. Για μια ιδέα τοποθεσίας, πέρασε από ένα ευρύ γενικό πλάνο σε ένα αναγνωρίσιμο σημείο ενδιαφέροντος. Απόφυγε να ζητάς από ένα σύντομο απόσπασμα να εκτελέσει πολλές άσχετες σκηνές, των οποίων τα θέματα και τα περιβάλλοντα πρέπει όλα να παρουσιαστούν από την αρχή.\n\nΈνα πλάνο που καθοδηγείται από εικόνα ξεκινά με στοιχείο image_url στον πίνακα content και με γραπτή οδηγία κίνησης. Προετοίμασε την περικοπή, το φόντο και τη διάταξη του θέματος στην εικόνα και μετά δήλωσε ποια στοιχεία κινούνται και πώς συμπεριφέρεται η κάμερα. Έτσι μια στατική σύνθεση μπορεί να γίνει σύντομη σκηνή με κίνηση. Αυτό χρησιμεύει για ένα πορτρέτο, ένα αντικείμενο πάνω σε τραπέζι ή μια προετοιμασμένη οπτική ιδέα, ενώ το πραγματικό αποτέλεσμα εξακολουθεί να χρειάζεται έλεγχο ταυτότητας, σχήματος και κίνησης σε όλο το απόσπασμα.\n\nΟι είσοδοι εικόνας μπορούν να χρησιμοποιούν προσβάσιμο URL ή URL δεδομένων Base64. Οι τεκμηριωμένες μορφές είναι JPEG, PNG, WEBP, BMP, TIFF και GIF· η εικόνα πρέπει να είναι μικρότερη από 30 MB, με τις δύο διαστάσεις αυστηρά μεταξύ 300 και 6000 εικονοστοιχείων και το πλάτος διαιρεμένο με το ύψος αυστηρά μεταξύ 0.4 και 2.5. Διάλεξε καθαρή αρχική εικόνα με ορατές λεπτομέρειες του θέματος. Ο οδηγός εικόνων συνιστά κάδρο adaptive (προσαρμοστικό), οπότε οι αναλογίες της προετοιμασμένης εικόνας πρέπει να ταιριάζουν με τη σύνθεση στην οποία θέλεις να δώσεις κίνηση.\n\nΗ τεκμηρίωση του προφίλ 1.0 αναφέρει διάρκεια δύο έως δώδεκα δευτερολέπτων στα 24 fps. Το Pro Fast έχει προεπιλεγμένη ανάλυση 1080p και ο διατηρημένος πίνακας εξόδου περιλαμβάνει επίπεδα 480p, 720p και 1080p. Ο οδηγός της λειτουργίας αποκλείει το 1080p στην περίπτωση εικόνας αναφοράς. Οι σταθερές αναλογίες διαστάσεων περιλαμβάνουν 16:9, 4:3, 1:1, 3:4, 9:16 και 21:9. Διάλεξε ανάλυση και αναλογία κατάλληλες για τον επιλεγμένο τρόπο εισόδου, αντί να υποθέτεις ότι κάθε συνδυασμός είναι εναλλάξιμος.\n\nΟι επιλογές seed και watermark βοηθούν να παραμένουν ρητές οι ρυθμίσεις του αιτήματος. Το εύρος του ακέραιου seed είναι από -1 έως 2^32-1· το -1 ζητά τυχαία τιμή. Η οδηγία σταθερής κάμερας εφαρμόζεται υπό προϋποθέσεις: ο οδηγός την αποκλείει στην περίπτωση εικόνας αναφοράς και δεν εγγυάται το οπτικό αποτέλεσμα όπου υποστηρίζεται. Οι εντολές παραμέτρων που ενσωματώνονται στο κείμενο υπερισχύουν των ξεχωριστών προαιρετικών παραμέτρων. Κράτησε αυτές τις οδηγίες συνεπείς, ιδίως όταν αναθεωρείς κείμενο του οποίου μια παλιά εντολή διάρκειας ή ανάλυσης θα μπορούσε διαφορετικά να παραμείνει στην περιγραφή της σκηνής.\n\nΗ χρήση μετριέται σε token βίντεο: πλάτος εξόδου × ύψος εξόδου × ρυθμός καρέ × διάρκεια εξόδου / 1024. Η ολοκληρωμένη εργασία αναφέρει αυτή την ποσότητα ως usage.completion_tokens. Κράτησε την αναφερόμενη χρήση μαζί με το ολοκληρωμένο απόσπασμα και τις ζητούμενες ρυθμίσεις του.\n\nΗ υποβολή δημιουργεί ασύγχρονη εργασία. Αποθήκευσε το αναγνωριστικό της, παρακολούθησε την κατάστασή της και ανάκτησε το ολοκληρωμένο βίντεο από το content.video_url μετά την επιτυχία. Η τεκμηρίωση αναφέρει ότι τα παραγόμενα αρχεία διατηρούνται για επτά ημέρες, οπότε κράτησε το ολοκληρωμένο αρχείο μαζί με τις οδηγίες και οποιαδήποτε εικόνα εισόδου. Έλεγξε ολόκληρη τη δράση, την κίνηση της κάμερας και το τελικό κάδρο· αν μια λεπτομέρεια δεν ανταποκρίνεται στις οδηγίες, περιέγραψε τη συγκεκριμένη διόρθωση διατηρώντας τα μέρη που πέτυχαν.",
    "alias_of": null,
    "aliases": [],
    "author": "ByteDance",
    "capabilities": {
      "context_length": 0,
      "manufacturer_input": [
        "text",
        "image"
      ],
      "manufacturer_output": [
        "video"
      ]
    },
    "card_routes": [
      {
        "label": "Ultra",
        "rates": [
          {
            "amount": "0.0576",
            "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.0576",
            "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 1.0 Pro Fast",
    "formats": [
      "videos"
    ],
    "id": "doubao-seedance-1-0-pro-fast-251015",
    "input": [
      "text",
      "image"
    ],
    "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"
              ],
              [
                "text",
                "image"
              ]
            ],
            "operation_modes": [
              "text_to_video",
              "image_to_video"
            ],
            "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-1-0-pro-fast-251015"
                ],
                "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": "Το αρχικό σχήμα 1.x ορίζει 2–12· μεταγενέστερη κοινή περιγραφή ορίζει την 1.5 ως 4–12 ή -1. Το παράδειγμα χρησιμοποιεί την κοινά τεκμηριωμένη τιμή 5.",
                "default": 5,
                "default_known": true,
                "enum": null,
                "enum_known": false,
                "maximum": 12,
                "minimum": 2,
                "name": "duration",
                "required": false,
                "type": "integer"
              },
              {
                "availability": "source_interface",
                "conditions": "Οι επιβεβαιωμένες τιμές για κείμενο σε βίντεο είναι 480p και 1080p. Η είσοδος εικόνας αναφοράς αποκλείει το 1080p. Η κοινή απαρίθμηση τιμών 720p συγκρούεται με την περιγραφή του συγκεκριμένου μοντέλου, επομένως η υποστήριξη 720p παραμένει αδιευκρίνιστη και στις δύο λειτουργίες.",
                "default": "1080p",
                "default_conditions": "1080p is the documented model default for text-to-video. Reference-image input excludes 1080p; its default is not established here.",
                "default_known": true,
                "enum": null,
                "enum_known": false,
                "name": "resolution",
                "required": false,
                "supported_values_by_mode": {
                  "image_to_video": {
                    "confirmed": [
                      "480p"
                    ],
                    "excluded": [
                      "1080p"
                    ],
                    "unresolved": [
                      "720p"
                    ]
                  },
                  "text_to_video": {
                    "confirmed": [
                      "480p",
                      "1080p"
                    ],
                    "unresolved": [
                      "720p"
                    ]
                  }
                },
                "type": "string"
              },
              {
                "availability": "source_interface",
                "conditions": "Προεπιλογές που εξαρτώνται από τη σκηνή και το μοντέλο· η τεκμηρίωση εισόδου εικόνας συνιστά adaptive.",
                "default": null,
                "default_known": false,
                "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",
                "conditions": "default=online, flex=offline· επιλέξτε πριν από τη δημιουργία.",
                "default": "default",
                "default_known": true,
                "enum": [
                  "default",
                  "flex"
                ],
                "enum_known": true,
                "name": "service_tier",
                "required": false,
                "type": "string"
              },
              {
                "availability": "source_interface",
                "default": -1,
                "default_known": true,
                "enum": null,
                "enum_known": false,
                "maximum": 4294967295,
                "minimum": -1,
                "name": "seed",
                "required": true,
                "type": "integer"
              },
              {
                "availability": "source_interface",
                "conditions": "Απαιτείται από το Ailoot· ο έλεγχος κάμερας με εικόνα αναφοράς τεκμηριώνεται ως μη υποστηριζόμενος και η επίδρασή του δεν είναι εγγυημένη.",
                "default": false,
                "default_known": true,
                "enum": null,
                "enum_known": false,
                "name": "camerafixed",
                "required": true,
                "type": "boolean"
              },
              {
                "availability": "source_interface",
                "default": false,
                "default_known": true,
                "enum": null,
                "enum_known": false,
                "name": "watermark",
                "required": true,
                "type": "boolean"
              },
              {
                "availability": "source_interface",
                "default": 172800,
                "default_known": true,
                "enum": null,
                "enum_known": false,
                "maximum": 259200,
                "minimum": 3600,
                "name": "execution_expires_after",
                "required": true,
                "type": "integer",
                "unit": "δευτερόλεπτα"
              }
            ],
            "profile_binding": "Exact model ID and documented Ailoot video interface.",
            "request_schema": {
              "additionalProperties": true,
              "properties": {
                "camerafixed": {
                  "type": "boolean"
                },
                "content": {
                  "items": {
                    "type": "object"
                  },
                  "minItems": 1,
                  "type": "array"
                },
                "duration": {
                  "maximum": 12,
                  "minimum": 2,
                  "type": "integer"
                },
                "execution_expires_after": {
                  "maximum": 259200,
                  "minimum": 3600,
                  "type": "integer"
                },
                "model": {
                  "const": "doubao-seedance-1-0-pro-fast-251015",
                  "type": "string"
                },
                "ratio": {
                  "enum": [
                    "16:9",
                    "4:3",
                    "1:1",
                    "3:4",
                    "9:16",
                    "21:9",
                    "adaptive"
                  ],
                  "type": "string"
                },
                "resolution": {
                  "description": "Use the explicit resolution supported_values_by_mode conditions: reference-image input excludes 1080p; 720p support is unresolved. No unconditional per-model enum is asserted.",
                  "type": "string"
                },
                "seed": {
                  "maximum": 4294967295,
                  "minimum": -1,
                  "type": "integer"
                },
                "service_tier": {
                  "enum": [
                    "default",
                    "flex"
                  ],
                  "type": "string"
                },
                "watermark": {
                  "type": "boolean"
                }
              },
              "required": [
                "camerafixed",
                "content",
                "execution_expires_after",
                "model",
                "seed",
                "watermark"
              ],
              "type": "object"
            },
            "source_ambiguities": [
              "Primary content.items.required says type+text even for its image example without text; preserve intended example branches and outer-array validation boundary.",
              "Pro/pro-fast inline-resolution and top-level enum differ; copyable example uses documented 480p."
            ],
            "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",
            "image_constraints": {
              "aspect_ratio_exclusive": [
                0.4,
                2.5
              ],
              "dimensions_px_exclusive": [
                300,
                6000
              ],
              "file_size_mb_exclusive": 30,
              "formats": [
                "jpeg",
                "png",
                "webp",
                "bmp",
                "tiff",
                "gif"
              ],
              "mb_bytes_definition": null
            },
            "material_types": [
              "text",
              "image"
            ],
            "optional": [
              "duration",
              "resolution",
              "ratio",
              "service_tier"
            ],
            "required": [
              "camerafixed",
              "content",
              "execution_expires_after",
              "model",
              "seed",
              "watermark"
            ],
            "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"
            ]
          },
          "method": {
            "http": "POST",
            "path": "/v1/videos"
          },
          "method_aliases": [
            "/v1/videos/generations"
          ],
          "operation_modes": [
            "text_to_video",
            "image_to_video"
          ],
          "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"
            },
            "label": "Ultra",
            "units": [
              {
                "amount": "0.0012000",
                "amount_unit": "usd_per_exact_native_unit",
                "billing_input": false,
                "estimate_only": true,
                "key": "video_output_token",
                "label": "per 1,000 video tokens",
                "native_amount_usd_per_unit": "0.0000012",
                "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.0576",
                "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.0576",
                "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-1-0-pro-fast-251015\",\"content\":[{\"type\":\"text\",\"text\":\"女孩抱着狐狸，女孩睁开眼，温柔地看向镜头，狐狸友善地抱着，镜头缓缓拉出，女孩的头发被风吹动\"}],\"resolution\":\"480p\",\"ratio\":\"1:1\",\"duration\":5,\"service_tier\":\"default\",\"seed\":-1,\"camerafixed\":false,\"watermark\":false,\"execution_expires_after\":172800}\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"
        ],
        "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"
            },
            "label": "Ultra",
            "units": [
              {
                "amount": "0.0012000",
                "amount_unit": "usd_per_exact_native_unit",
                "billing_input": false,
                "estimate_only": true,
                "key": "video_output_token",
                "label": "per 1,000 video tokens",
                "native_amount_usd_per_unit": "0.0000012",
                "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.0576",
                "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.0576",
                "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-1-0-pro-fast-251015",
        "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.0012000",
            "amount_unit": "usd_per_exact_native_unit",
            "billing_input": false,
            "estimate_only": true,
            "key": "video_output_token",
            "label": "per 1,000 video tokens",
            "native_amount_usd_per_unit": "0.0000012",
            "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.0576",
            "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.0576",
            "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-1-0-pro-fast-251015",
        "request_model_id": "doubao-seedance-1-0-pro-fast-251015",
        "route_label": "Ultra"
      }
    ],
    "name": "ByteDance: Seedance 1.0 Pro Fast",
    "price": {
      "estimate_only": true,
      "in": null,
      "in_label": null,
      "out": 0.0576,
      "out_label": "estimate before generation",
      "scope_label": "Estimated generation cost",
      "sort_in": null,
      "sort_out": 0.0576,
      "varies": false
    },
    "short": "Το Seedance 1.0 Pro Fast είναι το ξεχωριστά ονομαζόμενο προφίλ Fast για δημιουργία βίντεο χωρίς ήχο από κείμενο και εικόνα. Δέχεται οδηγίες σκηνής ή σύνθεση που καθοδηγείται από εικόνα, με έξοδο 2–12 δευτερολέπτων, 24 fps και ρητούς ελέγχους κάδρου."
  },
  "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 1.0 Pro Fast είναι το ξεχωριστά ονομαζόμενο προφίλ Fast για δημιουργία βίντεο χωρίς ήχο από κείμενο και εικόνα. Δέχεται οδηγίες σκηνής ή σύνθεση που καθοδηγείται από εικόνα, με έξοδο 2–12 δευτερολέπτων, 24 fps και ρητούς ελέγχους κάδρου.",
  "source": {
    "audit_sha256": "2e00086bcbfc28e64d0cebe97aa47c17d8d5618963027f8ffb9dc6123d7d25b1",
    "bridge_map_sha256": "1125275768b9636fc8461bc7da5061239a81ddfe508e2557843ca42c58ab0036",
    "raw_model_json_sha256": "499add894a2ad8d02f30e8586f3352aa5d9c412e257a068399071770bb5ea31f",
    "renderer_sha256": "3ed36f7af4f78822bafbd174fdcaed7b698a18a86efe254253d37f1b098a7566"
  },
  "sourceRevision": "b8a4271db04c4d3bb017d835628d5c5a3347658e9f9d5e12b2acd03300684703"
}
