{
  "aboutHtml": "<p>Το Kling v2.1 Master είναι έκδοση βίντεο του Kling με δυνατότητα δημιουργίας βίντεο από κείμενο και από εικόνα στον τεκμηριωμένο κατάλογο μοντέλων. Επιλέξτε μια γραπτή περιγραφή σκηνής όταν αναπτύσσετε μια οπτική ιδέα από κείμενο ή μια περιγραφή που βασίζεται σε εικόνα όταν το κύριο θέμα και η σύνθεση έχουν ήδη καθοριστεί. Και στις δύο περιπτώσεις, ορίστε το συμβάν που πρέπει να δείχνει το ολοκληρωμένο πλάνο.</p><p>Για δημιουργία με βάση το κείμενο, περιγράψτε το κύριο θέμα, τον χώρο και τη δράση με σαφή σειρά. Ένας χορευτής που διασχίζει ένα στούντιο, ένα όχημα που κινείται κάτω από δέντρα ή ένα γυάλινο αντικείμενο που δέχεται μεταβαλλόμενο φως δίνουν στη σεκάνς έναν συγκεκριμένο σκοπό. Συμπεριλάβετε τις λεπτομέρειες που καθορίζουν την εμφάνιση της σκηνής και διατηρήστε τη συνέπειά τους σε όλη την περιγραφή.</p><p>Για δημιουργία με βάση εικόνα, προετοιμάστε μια αναφορά που δείχνει τα χαρακτηριστικά που χρειάζεται να διατηρήσει το πλάνο. Κρατήστε ορατά τα πρόσωπα, τις ακμές των αντικειμένων και τα ιδιαίτερα υλικά. Περιγράψτε τι αλλάζει από αυτή την αρχική όψη: η χειρονομία του κύριου θέματος, μια κίνηση του περιβάλλοντος ή η θέση της κάμερας. Έχετε διαθέσιμη την εικόνα προέλευσης όταν ελέγχετε το αποτέλεσμα.</p><p>Σχεδιάστε τη δράση με βάση το τέλος της. Ένα άτομο που αφήνει κάτω ένα αντικείμενο πρέπει να ολοκληρώνει την κίνηση με το αντικείμενο σε αναγνωρίσιμη θέση· μια αποκάλυψη πρέπει να τελειώνει με το σημαντικό χαρακτηριστικό ορατό. Έτσι είναι ευκολότερο να επιλέξετε σημείο μοντάζ και να αξιολογήσετε αν η κίνηση έχει εκπληρώσει τον σκοπό της.</p><p>Η τεκμηριωμένη καταχώριση του μοντέλου περιλαμβάνει διάρκειες πέντε και δέκα δευτερολέπτων, λειτουργίες std και pro, καθώς και οριζόντιο, κατακόρυφο και τετράγωνο σχήμα κάδρου. Επιλέξτε τις διαθέσιμες ρυθμίσεις της επιλεγμένης ροής εργασίας και διατηρήστε τις πραγματικές τιμές τους. Αξιολογήστε το παραγόμενο κλιπ σε σχέση με την επιθυμητή δράση και το καδράρισμα, αντί να βασίζεστε στην ονομασία της έκδοσης του μοντέλου.</p><p>Περιγράψτε ξεχωριστά την κίνηση του κύριου θέματος και της κάμερας. Για ένα πλάνο στο οποίο η κάμερα ακολουθεί το θέμα, αναφέρετε ποιο κύριο θέμα ακολουθεί και ποια μέρη του περιβάλλοντος πρέπει να περνούν μέσα από το κάδρο. Για ένα σταθερό πλάνο, αναφέρετε την κίνηση που εκτυλίσσεται μέσα του. Συνδέστε τις οδηγίες για την κάμερα με όσα χρειάζεται να προσέξει ο θεατής.</p><p>Ελέγξτε ολόκληρη τη σεκάνς για συνέχεια. Βεβαιωθείτε ότι το σημαντικό κύριο θέμα παραμένει αναγνωρίσιμο, ότι οι αλληλεπιδράσεις είναι χωρικά συνεκτικές και ότι ο χρονισμός αφήνει περιθώριο για την προβλεπόμενη κοπή. Παρατηρήστε τις αλλαγές στα χέρια, τα πρόσωπα, τις λεπτομέρειες των επιφανειών και τα αντικείμενα που αλληλοκαλύπτονται. Κρίνετε την κίνηση, καθώς και το πιο δυνατό μεμονωμένο καρέ.</p><p>Κρατήστε κάθε ολοκληρωμένο βίντεο μαζί με την προτροπή, την αναφορά και τις ρυθμίσεις του. Χρησιμοποιήστε την ίδια περιγραφή όταν συγκρίνετε μια σκηνή μεταξύ εκδόσεων και καταγράψτε τις πραγματικές οπτικές διαφορές. Όταν διορθώνετε μια εκδοχή, περιγράψτε το πρόβλημα που παρατηρήσατε και αναθεωρήστε τη σχετική οδηγία, διατηρώντας τα χρήσιμα στοιχεία της σκηνής.</p>",
  "aboutText": "Το Kling v2.1 Master είναι έκδοση βίντεο του Kling με δυνατότητα δημιουργίας βίντεο από κείμενο και από εικόνα στον τεκμηριωμένο κατάλογο μοντέλων. Επιλέξτε μια γραπτή περιγραφή σκηνής όταν αναπτύσσετε μια οπτική ιδέα από κείμενο ή μια περιγραφή που βασίζεται σε εικόνα όταν το κύριο θέμα και η σύνθεση έχουν ήδη καθοριστεί. Και στις δύο περιπτώσεις, ορίστε το συμβάν που πρέπει να δείχνει το ολοκληρωμένο πλάνο.\n\nΓια δημιουργία με βάση το κείμενο, περιγράψτε το κύριο θέμα, τον χώρο και τη δράση με σαφή σειρά. Ένας χορευτής που διασχίζει ένα στούντιο, ένα όχημα που κινείται κάτω από δέντρα ή ένα γυάλινο αντικείμενο που δέχεται μεταβαλλόμενο φως δίνουν στη σεκάνς έναν συγκεκριμένο σκοπό. Συμπεριλάβετε τις λεπτομέρειες που καθορίζουν την εμφάνιση της σκηνής και διατηρήστε τη συνέπειά τους σε όλη την περιγραφή.\n\nΓια δημιουργία με βάση εικόνα, προετοιμάστε μια αναφορά που δείχνει τα χαρακτηριστικά που χρειάζεται να διατηρήσει το πλάνο. Κρατήστε ορατά τα πρόσωπα, τις ακμές των αντικειμένων και τα ιδιαίτερα υλικά. Περιγράψτε τι αλλάζει από αυτή την αρχική όψη: η χειρονομία του κύριου θέματος, μια κίνηση του περιβάλλοντος ή η θέση της κάμερας. Έχετε διαθέσιμη την εικόνα προέλευσης όταν ελέγχετε το αποτέλεσμα.\n\nΣχεδιάστε τη δράση με βάση το τέλος της. Ένα άτομο που αφήνει κάτω ένα αντικείμενο πρέπει να ολοκληρώνει την κίνηση με το αντικείμενο σε αναγνωρίσιμη θέση· μια αποκάλυψη πρέπει να τελειώνει με το σημαντικό χαρακτηριστικό ορατό. Έτσι είναι ευκολότερο να επιλέξετε σημείο μοντάζ και να αξιολογήσετε αν η κίνηση έχει εκπληρώσει τον σκοπό της.\n\nΗ τεκμηριωμένη καταχώριση του μοντέλου περιλαμβάνει διάρκειες πέντε και δέκα δευτερολέπτων, λειτουργίες std και pro, καθώς και οριζόντιο, κατακόρυφο και τετράγωνο σχήμα κάδρου. Επιλέξτε τις διαθέσιμες ρυθμίσεις της επιλεγμένης ροής εργασίας και διατηρήστε τις πραγματικές τιμές τους. Αξιολογήστε το παραγόμενο κλιπ σε σχέση με την επιθυμητή δράση και το καδράρισμα, αντί να βασίζεστε στην ονομασία της έκδοσης του μοντέλου.\n\nΠεριγράψτε ξεχωριστά την κίνηση του κύριου θέματος και της κάμερας. Για ένα πλάνο στο οποίο η κάμερα ακολουθεί το θέμα, αναφέρετε ποιο κύριο θέμα ακολουθεί και ποια μέρη του περιβάλλοντος πρέπει να περνούν μέσα από το κάδρο. Για ένα σταθερό πλάνο, αναφέρετε την κίνηση που εκτυλίσσεται μέσα του. Συνδέστε τις οδηγίες για την κάμερα με όσα χρειάζεται να προσέξει ο θεατής.\n\nΕλέγξτε ολόκληρη τη σεκάνς για συνέχεια. Βεβαιωθείτε ότι το σημαντικό κύριο θέμα παραμένει αναγνωρίσιμο, ότι οι αλληλεπιδράσεις είναι χωρικά συνεκτικές και ότι ο χρονισμός αφήνει περιθώριο για την προβλεπόμενη κοπή. Παρατηρήστε τις αλλαγές στα χέρια, τα πρόσωπα, τις λεπτομέρειες των επιφανειών και τα αντικείμενα που αλληλοκαλύπτονται. Κρίνετε την κίνηση, καθώς και το πιο δυνατό μεμονωμένο καρέ.\n\nΚρατήστε κάθε ολοκληρωμένο βίντεο μαζί με την προτροπή, την αναφορά και τις ρυθμίσεις του. Χρησιμοποιήστε την ίδια περιγραφή όταν συγκρίνετε μια σκηνή μεταξύ εκδόσεων και καταγράψτε τις πραγματικές οπτικές διαφορές. Όταν διορθώνετε μια εκδοχή, περιγράψτε το πρόβλημα που παρατηρήσατε και αναθεωρήστε τη σχετική οδηγία, διατηρώντας τα χρήσιμα στοιχεία της σκηνής.",
  "editorialOverlay": {
    "copy_fields": null,
    "copy_sha256": null,
    "copy_source": null,
    "html_sha256": "6279d11bf282972835519823a16fd16d7ae493694251528dea956688f54cb1c1",
    "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\">Kling v2.1 Master</h2><button class=\"icon-btn\" type=\"button\" data-close-sheet aria-label=\"Κλείσιμο\">×</button></div><div class=\"idline\"><span>Kling /</span><code>kling-v2-1-master</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|kling-v2-1-master\">Βίντεο</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\">Το Kling v2.1 Master δημιουργεί βίντεο από κείμενο ή από περιγραφή που βασίζεται σε εικόνα. Χρησιμοποιήστε το για ένα καθορισμένο οπτικό συμβάν, σχεδιάζοντας το κύριο θέμα, τη δράση, τις οδηγίες για την κάμερα και το τέλος ως ένα συνεκτικό σύντομο πλάνο.</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>Το Kling v2.1 Master είναι έκδοση βίντεο του Kling με δυνατότητα δημιουργίας βίντεο από κείμενο και από εικόνα στον τεκμηριωμένο κατάλογο μοντέλων. Επιλέξτε μια γραπτή περιγραφή σκηνής όταν αναπτύσσετε μια οπτική ιδέα από κείμενο ή μια περιγραφή που βασίζεται σε εικόνα όταν το κύριο θέμα και η σύνθεση έχουν ήδη καθοριστεί. Και στις δύο περιπτώσεις, ορίστε το συμβάν που πρέπει να δείχνει το ολοκληρωμένο πλάνο.</p><p>Για δημιουργία με βάση το κείμενο, περιγράψτε το κύριο θέμα, τον χώρο και τη δράση με σαφή σειρά. Ένας χορευτής που διασχίζει ένα στούντιο, ένα όχημα που κινείται κάτω από δέντρα ή ένα γυάλινο αντικείμενο που δέχεται μεταβαλλόμενο φως δίνουν στη σεκάνς έναν συγκεκριμένο σκοπό. Συμπεριλάβετε τις λεπτομέρειες που καθορίζουν την εμφάνιση της σκηνής και διατηρήστε τη συνέπειά τους σε όλη την περιγραφή.</p><p>Για δημιουργία με βάση εικόνα, προετοιμάστε μια αναφορά που δείχνει τα χαρακτηριστικά που χρειάζεται να διατηρήσει το πλάνο. Κρατήστε ορατά τα πρόσωπα, τις ακμές των αντικειμένων και τα ιδιαίτερα υλικά. Περιγράψτε τι αλλάζει από αυτή την αρχική όψη: η χειρονομία του κύριου θέματος, μια κίνηση του περιβάλλοντος ή η θέση της κάμερας. Έχετε διαθέσιμη την εικόνα προέλευσης όταν ελέγχετε το αποτέλεσμα.</p><p>Σχεδιάστε τη δράση με βάση το τέλος της. Ένα άτομο που αφήνει κάτω ένα αντικείμενο πρέπει να ολοκληρώνει την κίνηση με το αντικείμενο σε αναγνωρίσιμη θέση· μια αποκάλυψη πρέπει να τελειώνει με το σημαντικό χαρακτηριστικό ορατό. Έτσι είναι ευκολότερο να επιλέξετε σημείο μοντάζ και να αξιολογήσετε αν η κίνηση έχει εκπληρώσει τον σκοπό της.</p><p>Η τεκμηριωμένη καταχώριση του μοντέλου περιλαμβάνει διάρκειες πέντε και δέκα δευτερολέπτων, λειτουργίες std και pro, καθώς και οριζόντιο, κατακόρυφο και τετράγωνο σχήμα κάδρου. Επιλέξτε τις διαθέσιμες ρυθμίσεις της επιλεγμένης ροής εργασίας και διατηρήστε τις πραγματικές τιμές τους. Αξιολογήστε το παραγόμενο κλιπ σε σχέση με την επιθυμητή δράση και το καδράρισμα, αντί να βασίζεστε στην ονομασία της έκδοσης του μοντέλου.</p><p>Περιγράψτε ξεχωριστά την κίνηση του κύριου θέματος και της κάμερας. Για ένα πλάνο στο οποίο η κάμερα ακολουθεί το θέμα, αναφέρετε ποιο κύριο θέμα ακολουθεί και ποια μέρη του περιβάλλοντος πρέπει να περνούν μέσα από το κάδρο. Για ένα σταθερό πλάνο, αναφέρετε την κίνηση που εκτυλίσσεται μέσα του. Συνδέστε τις οδηγίες για την κάμερα με όσα χρειάζεται να προσέξει ο θεατής.</p><p>Ελέγξτε ολόκληρη τη σεκάνς για συνέχεια. Βεβαιωθείτε ότι το σημαντικό κύριο θέμα παραμένει αναγνωρίσιμο, ότι οι αλληλεπιδράσεις είναι χωρικά συνεκτικές και ότι ο χρονισμός αφήνει περιθώριο για την προβλεπόμενη κοπή. Παρατηρήστε τις αλλαγές στα χέρια, τα πρόσωπα, τις λεπτομέρειες των επιφανειών και τα αντικείμενα που αλληλοκαλύπτονται. Κρίνετε την κίνηση, καθώς και το πιο δυνατό μεμονωμένο καρέ.</p><p>Κρατήστε κάθε ολοκληρωμένο βίντεο μαζί με την προτροπή, την αναφορά και τις ρυθμίσεις του. Χρησιμοποιήστε την ίδια περιγραφή όταν συγκρίνετε μια σκηνή μεταξύ εκδόσεων και καταγράψτε τις πραγματικές οπτικές διαφορές. Όταν διορθώνετε μια εκδοχή, περιγράψτε το πρόβλημα που παρατηρήσατε και αναθεωρήστε τη σχετική οδηγία, διατηρώντας τα χρήσιμα στοιχεία της σκηνής.</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 · Video</b> <code>POST /v1/videos</code></summary><dl class=\"method-capabilities\"><div><dt>Είσοδος</dt><dd><code>text</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><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>kling-v2-1-master</div><div>Συνθήκες: Χρησιμοποιήστε ακριβώς αυτόν τον επιλογέα δρομολόγησης του Ailoot.</div></td><td data-cell-label=\"Προεπιλογή\" data-default=\"unspecified\"><span class=\"card-cell-label\">Προεπιλογή</span>—</td></tr><tr><th data-cell-label=\"Πεδίο\" scope=\"row\"><span class=\"card-cell-label\">Πεδίο</span><code class=\"card-field-name\">prompt</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>Μέγιστο μήκος: 500</div><div>Συνθήκες: </div></td><td data-cell-label=\"Προεπιλογή\" data-default=\"unspecified\"><span class=\"card-cell-label\">Προεπιλογή</span>—</td></tr><tr><th data-cell-label=\"Πεδίο\" scope=\"row\"><span class=\"card-cell-label\">Πεδίο</span><code class=\"card-field-name\">mode</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>std, pro</div><div>Συνθήκες: </div></td><td data-cell-label=\"Προεπιλογή\" data-default=\"unspecified\"><span class=\"card-cell-label\">Προεπιλογή</span>—</td></tr><tr><th data-cell-label=\"Πεδίο\" scope=\"row\"><span class=\"card-cell-label\">Πεδίο</span><code class=\"card-field-name\">model_name</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>Συνθήκες: Προαιρετική εγγενής παράκαμψη. Παραλείψτε την για να χρησιμοποιηθεί αυτόματα το επιλεγμένο μοντέλο· μια ρητά καθορισμένη τιμή διατηρείται.</div></td><td data-cell-label=\"Προεπιλογή\" data-default=\"unspecified\"><span class=\"card-cell-label\">Προεπιλογή</span>—</td></tr><tr><th data-cell-label=\"Πεδίο\" scope=\"row\"><span class=\"card-cell-label\">Πεδίο</span><code class=\"card-field-name\">cfg_scale</code></th><td data-cell-label=\"Τύπος\" data-field-type><span class=\"card-cell-label\">Τύπος</span><code>number</code></td><td data-cell-label=\"Απαίτηση\"><span class=\"card-cell-label\">Απαίτηση</span>Προαιρετικό</td><td data-cell-label=\"Τιμές και όρια\"><span class=\"card-cell-label\">Τιμές και όρια</span><div>Ελάχιστο: 0</div><div>Μέγιστο: 1</div><div>Συνθήκες: </div></td><td data-cell-label=\"Προεπιλογή\" data-default=\"unspecified\"><span class=\"card-cell-label\">Προεπιλογή</span>—</td></tr><tr><th data-cell-label=\"Πεδίο\" scope=\"row\"><span class=\"card-cell-label\">Πεδίο</span><code class=\"card-field-name\">aspect_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>Συνθήκες: </div></td><td data-cell-label=\"Προεπιλογή\" data-default=\"unspecified\"><span class=\"card-cell-label\">Προεπιλογή</span>—</td></tr><tr><th data-cell-label=\"Πεδίο\" scope=\"row\"><span class=\"card-cell-label\">Πεδίο</span><code class=\"card-field-name\">negative_prompt</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>Μέγιστο μήκος: 200</div><div>Συνθήκες: </div></td><td data-cell-label=\"Προεπιλογή\" data-default=\"unspecified\"><span class=\"card-cell-label\">Προεπιλογή</span>—</td></tr><tr><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>5, 10</div><div>Συνθήκες: </div></td><td data-cell-label=\"Προεπιλογή\" data-default=\"unspecified\"><span class=\"card-cell-label\">Προεπιλογή</span>—</td></tr></tbody></table></div><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>model, prompt, mode</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>model_name, cfg_scale, aspect_ratio, negative_prompt, duration</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</td></tr><tr><th data-cell-label=\"Παράμετρος\" scope=\"row\"><span class=\"card-cell-label\">Παράμετρος</span><code>conditions</code></th><td data-cell-label=\"Σύμβαση\"><span class=\"card-cell-label\">Σύμβαση</span>Χρησιμοποιήστε ακριβώς αυτόν τον επιλογέα δρομολόγησης του Ailoot., Προαιρετική εγγενής παράκαμψη. Παραλείψτε την για να χρησιμοποιηθεί αυτόματα το επιλεγμένο μοντέλο· μια ρητά καθορισμένη τιμή διατηρείται.</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/media/assets</code></p><p class=\"note-s\"><code>GET /v1/media/assets/{asset_id}</code></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></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><div><span>Είσοδος · Token εισόδου · Εκτίμηση μόνο για σύγκριση</span> <b>—</b> <span class=\"price-unit\">/ 1K token</span></div><div><span>Έξοδος · Token εξόδου · Εκτίμηση μόνο για σύγκριση</span> <b>—</b> <span class=\"price-unit\">/ 1K token</span></div><div><span>Είσοδος · Ανάγνωση από την κρυφή μνήμη · Εκτίμηση μόνο για σύγκριση</span> <b>—</b> <span class=\"price-unit\">/ 1K token</span></div><div><span>Είσοδος · Εγγραφή στην κρυφή μνήμη · Εκτίμηση μόνο για σύγκριση</span> <b>—</b> <span class=\"price-unit\">/ 1K token</span></div><div><span>Είσοδος · Εγγραφή στην κρυφή μνήμη, 1 ώρα · Εκτίμηση μόνο για σύγκριση</span> <b>—</b> <span class=\"price-unit\">/ 1K token</span></div></td></tr><tr><th data-cell-label=\"Διαμόρφωση\" scope=\"row\"><span class=\"card-cell-label\">Διαμόρφωση</span>Εκτιμώμενο κόστος δημιουργίας</th><td data-cell-label=\"Πίνακας χρεώσεων\"><span class=\"card-cell-label\">Πίνακας χρεώσεων</span>—</td><td data-cell-label=\"Προβλεπόμενη ποσότητα\"><span class=\"card-cell-label\">Προβλεπόμενη ποσότητα</span>εκτίμηση για μία δημιουργία</td><td data-cell-label=\"Χρέωση\"><span class=\"card-cell-label\">Χρέωση</span><div><span>Έξοδος · Εκτιμώμενο κόστος δημιουργίας · Εκτίμηση μόνο για σύγκριση</span> <b>$6</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 · Video</h4><div class=\"code-group\"><div class=\"cg-bar\"><div class=\"cg-tabs\" role=\"tablist\" aria-label=\"Παραλλαγές κώδικα\"><button class=\"cg-tab\" id=\"model-code-2807-tab-0\" role=\"tab\" type=\"button\" aria-controls=\"model-code-2807-panel-0\" aria-selected=\"true\" tabindex=\"0\">curl · δημιουργήστε μία φορά και διατηρήστε το πλήρες αποτέλεσμα</button><button class=\"cg-tab\" id=\"model-code-2807-tab-1\" role=\"tab\" type=\"button\" aria-controls=\"model-code-2807-panel-1\" aria-selected=\"false\" tabindex=\"-1\">Διαβάστε την αρχική εργασία</button><button class=\"cg-tab\" id=\"model-code-2807-tab-2\" role=\"tab\" type=\"button\" aria-controls=\"model-code-2807-panel-2\" aria-selected=\"false\" tabindex=\"-1\">Αποθηκεύστε κάθε ολοκληρωμένο ψηφιακό στοιχείο που σας ανήκει</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-2807-panel-0\" role=\"tabpanel\" aria-labelledby=\"model-code-2807-tab-0\"><pre data-lang=\"bash\"><code>set -eu\n: &quot;${AILOOT_API_KEY:?Set your Ailoot API key}&quot;\nexport AILOOT_API_KEY\npython3 - &lt;&lt;&#39;PY_REQUEST&#39;\nimport json,os\nfrom pathlib import Path\np=json.loads(&#39;{&quot;model&quot;: &quot;kling-v2-1-master&quot;, &quot;prompt&quot;: &quot;A happy holiday scene at the beach.&quot;, &quot;mode&quot;: &quot;pro&quot;}&#39;)\n\nPath(&quot;request.json&quot;).write_text(json.dumps(p,ensure_ascii=False))\nPY_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# Submit once. Retain the complete result, original identifiers and every response header.\n</code></pre></div><div class=\"cg-pane\" id=\"model-code-2807-panel-1\" role=\"tabpanel\" aria-labelledby=\"model-code-2807-tab-1\" hidden><pre data-lang=\"bash\"><code>set -eu\n: &quot;${AILOOT_API_KEY:?Set your Ailoot API key}&quot;\nexport AILOOT_API_KEY\npython3 - &lt;&lt;&#39;PY_STATUS&#39;\nimport json,os,subprocess\nfrom pathlib import Path\nfrom urllib.parse import urljoin,urlsplit\nr=json.loads(Path(&quot;result.json&quot;).read_text())\nu=urljoin(&quot;https://api.ailoot.ai&quot;,r[&quot;polling_url&quot;])\np=urlsplit(u)\nif p.scheme!=&quot;https&quot; or p.netloc!=&quot;api.ailoot.ai&quot; or p.username or p.password:\n    raise SystemExit(&quot;Unexpected returned polling URL; preserve the response&quot;)\nsubprocess.run([&quot;curl&quot;,&quot;--fail-with-body&quot;,&quot;--silent&quot;,&quot;--show-error&quot;,u,&quot;-H&quot;,&quot;Authorization: Bearer &quot;+os.environ[&quot;AILOOT_API_KEY&quot;],&quot;-D&quot;,&quot;status-headers.txt&quot;,&quot;-o&quot;,&quot;status.json&quot;],check=True)\n# Read this same original polling_url again while pending.\n# Preserve unknown/result_pending_check; do not repeat creation.\nPY_STATUS\n</code></pre></div><div class=\"cg-pane\" id=\"model-code-2807-panel-2\" role=\"tabpanel\" aria-labelledby=\"model-code-2807-tab-2\" hidden><pre data-lang=\"bash\"><code>set -eu\n: &quot;${AILOOT_API_KEY:?Set your Ailoot API key}&quot;\nexport AILOOT_API_KEY\npython3 - &lt;&lt;&#39;PY_ASSETS&#39;\nimport json,os,subprocess\nfrom pathlib import Path\nfrom urllib.parse import urljoin,urlsplit\nr=json.loads(Path(&quot;status.json&quot;).read_text())\nroles={}\ndef visit(v,path=&quot;&quot;):\n    if isinstance(v,dict):\n        for k,x in v.items(): visit(x,path+&quot;/&quot;+k)\n    elif isinstance(v,list):\n        for i,x in enumerate(v): visit(x,path+&quot;/&quot;+str(i))\n    elif isinstance(v,str):\n        u=urljoin(&quot;https://api.ailoot.ai&quot;,v); p=urlsplit(u)\n        if p.scheme==&quot;https&quot; and p.netloc==&quot;api.ailoot.ai&quot; and not p.username and not p.password and p.path.startswith(&quot;/v1/media/assets/&quot;) and p.path.endswith(&quot;/content&quot;):\n            roles.setdefault(u,[]).append(path)\nvisit(r)\nif not roles: raise SystemExit(&quot;No completed owned assets; retain the original status&quot;)\nmanifest=[]\nfor i,(u,paths) in enumerate(roles.items()):\n    target=Path(f&quot;asset-{i}.bin&quot;)\n    subprocess.run([&quot;curl&quot;,&quot;--fail-with-body&quot;,&quot;--silent&quot;,&quot;--show-error&quot;,u,&quot;-H&quot;,&quot;Authorization: Bearer &quot;+os.environ[&quot;AILOOT_API_KEY&quot;],&quot;-o&quot;,str(target)],check=True)\n    raw=target.read_bytes()\n    if not raw: raise SystemExit(&quot;Empty asset; retain original status and metadata&quot;)\n    ext=&quot;glb&quot; if raw[:4]==b&quot;glTF&quot; else &quot;png&quot; if raw[:8]==b&quot;\\x89PNG\\r\\n\\x1a\\n&quot; else &quot;jpg&quot; if raw[:3]==b&quot;\\xff\\xd8\\xff&quot; else &quot;webp&quot; if raw[:4]==b&quot;RIFF&quot; and raw[8:12]==b&quot;WEBP&quot; else &quot;mp4&quot; if raw[4:8]==b&quot;ftyp&quot; else &quot;bin&quot;\n    name=f&quot;asset-{i}.{ext}&quot;\n    if target.name!=name: target.rename(name)\n    manifest.append({&quot;file&quot;:name,&quot;response_paths&quot;:paths,&quot;bytes&quot;:len(raw)})\nPath(&quot;asset-manifest.json&quot;).write_text(json.dumps(manifest,indent=2))\nprint(&quot;Saved&quot;,len(manifest),&quot;unique owned assets; every response role retained&quot;)\nPY_ASSETS\n</code></pre></div></div></div></section><section class=\"card-section\" data-card-section=\"results\"><h3 tabindex=\"-1\">Λήψη και αποθήκευση αποτελεσμάτων</h3><h4>Ailoot Ultra · Video</h4><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/media/assets</code></li><li><code>GET /v1/media/assets/{asset_id}</code></li></ul><div class=\"card-result-process\" data-all-results><h5>Διατηρήστε όλα τα ολοκληρωμένα αποτελέσματα</h5><p class=\"note-s\">Αποθηκεύστε κάθε ολοκληρωμένο βίντεο ή αρχείο που επιστρέφεται· ανακτήστε κάθε πραγματικό URL αρχείου που επιστρέφεται.</p><p class=\"note-s\">Διατηρήστε ολόκληρη την απόκριση και τις κεφαλίδες, τα αρχικά αναγνωριστικά, κάθε πραγματική έξοδο και όλα τα πεδία χρήσης και λογιστικής καταγραφής. Αποθηκεύστε κάθε μοναδικό αρχείο πολυμέσων που σας ανήκει και διατηρήστε κάθε ρόλο που παραπέμπει σε αυτό.</p></div><div class=\"card-result-process\" data-unknown-recovery><h5>Αν χρειάζεται έλεγχος της αρχικής απάντησης</h5><p class=\"note-s\">Διατηρήστε το δημόσιο id εργασίας ή λειτουργίας που επιστρέφεται και όλες τις κεφαλίδες. Διαβάστε μόνο την αρχική εργασία· τα unknown ή result_pending_check δεν επιτρέπουν άλλη δημιουργία.</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\">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\">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\">data.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\">data.task_status</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\">data.task_result.videos[].url</code></th><td data-cell-label=\"Τύπος\" data-field-type><span class=\"card-cell-label\">Τύπος</span>string</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>Ένα υποχρεωτικό πεδίο, ο επιλογέας μοντέλου, ο τύπος ή η μορφή αναπαράστασης της εισόδου δεν είναι έγκυρα.</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><code></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=kling-v2-1-master&amp;route=Ultra&amp;caller=kling-v2-1-master&amp;fmt=videos\"><code>kling-v2-1-master</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=kling-v2-1-master&amp;route=Ultra&amp;caller=kling-v2-1-master&amp;fmt=videos\"><code>kling-v2-1-master</code></a></p></section></div>",
      "method_identity": {
        "effective_request_model_id": "kling-v2-1-master",
        "fmt": "videos",
        "http": "POST",
        "path": "/v1/videos",
        "request_model_id": "kling-v2-1-master",
        "route_label": "Ultra"
      },
      "method_key": "Ultra|videos|/v1/videos|kling-v2-1-master",
      "ordinal": 0,
      "rawMethod": {
        "available": null,
        "billing_basis": {
          "basis": "original_invoice_usd",
          "description": "The displayed rates estimate the cost before generation. The final charge is calculated from the cost recorded for the original generation. Measured output duration and forecast quantities are not the final billable quantity.",
          "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": {
            "all_results": "Retain the complete response and headers, original identifiers, every actual output and all usage/accounting fields. Save each unique owned asset and retain every role pointing to it.",
            "authentication": {
              "header": "Authorization",
              "scheme": "Bearer",
              "value": "$AILOOT_API_KEY"
            },
            "errors": [
              {
                "condition": "Ένα υποχρεωτικό πεδίο, ο επιλογέας μοντέλου, ο τύπος ή η μορφή αναπαράστασης της εισόδου δεν είναι έγκυρα.",
                "http_status": 400,
                "recovery": "Εξετάστε τις λεπτομέρειες επικύρωσης που επιστράφηκαν πριν ετοιμάσετε ξεχωριστό αίτημα.",
                "type": "invalid_request_error"
              },
              {
                "condition": "Το αρχικό αίτημα ή αποτέλεσμα είναι άγνωστο ή απαιτεί έλεγχο.",
                "http_status": null,
                "recovery": "Διατηρήστε τα αρχικά αναγνωριστικά και τις κεφαλίδες· διαβάστε μόνο τις υποστηριζόμενες εγγραφές κατάστασης ή βιβλιοθήκης. Μην υποβάλετε ξανά αίτημα δημιουργίας.",
                "type": null
              }
            ],
            "lifecycle": {
              "assets": [
                {
                  "http": "GET",
                  "path": "/v1/media/assets"
                },
                {
                  "http": "GET",
                  "path": "/v1/media/assets/{asset_id}"
                }
              ],
              "cancel_endpoint": null,
              "completed_states": [
                "succeed"
              ],
              "content": [
                {
                  "http": "GET",
                  "path": "/v1/videos/{request_id}/content",
                  "query": {
                    "index": "actual output index; default 0"
                  }
                }
              ],
              "create": {
                "http": "POST",
                "path": "/v1/videos"
              },
              "failed_states": [],
              "id_source": "Use returned polling_url and id. Keep provider_task_id and X-Ailoot-Task-Id as separate original identifiers.",
              "mode": "submit_once_poll_original",
              "owned_content": {
                "http": "GET",
                "path": "/v1/media/assets/{asset_id}/content",
                "url_source": "Use the exact returned signed URL; never construct a token."
              },
              "pending_states": [
                "submitted"
              ],
              "state_field": "data.task_status",
              "status": [
                {
                  "http": "GET",
                  "path": "/v1/videos/{request_id}"
                },
                {
                  "http": "GET",
                  "path": "/v1/videos/generations/{request_id}"
                }
              ],
              "unknown": "Διατηρήστε το δημόσιο id εργασίας ή λειτουργίας που επιστρέφεται και όλες τις κεφαλίδες. Διαβάστε μόνο την αρχική εργασία· τα unknown ή result_pending_check δεν επιτρέπουν άλλη δημιουργία.",
              "unknown_no_replay": true
            },
            "outputs": {
              "all_results": "Διατηρήστε ολόκληρη την απόκριση και τις κεφαλίδες, τα αρχικά αναγνωριστικά, κάθε πραγματική έξοδο και όλα τα πεδία χρήσης και λογιστικής καταγραφής. Αποθηκεύστε κάθε μοναδικό αρχείο πολυμέσων που σας ανήκει και διατηρήστε κάθε ρόλο που παραπέμπει σε αυτό.",
              "every_actual_output": true,
              "family": "video",
              "fields": [
                {
                  "name": "id",
                  "type": "string"
                },
                {
                  "name": "polling_url",
                  "type": "string"
                },
                {
                  "name": "provider_task_id",
                  "type": "string"
                },
                {
                  "name": "data.task_id",
                  "type": "string"
                },
                {
                  "name": "data.task_status",
                  "type": "string"
                },
                {
                  "name": "data.task_result.videos[].url",
                  "type": "string"
                }
              ],
              "maximum_outputs": null
            },
            "parameters": [
              {
                "conditions": "Χρησιμοποιήστε ακριβώς αυτόν τον επιλογέα δρομολόγησης του Ailoot.",
                "default_known": false,
                "enum": [
                  "kling-v2-1-master"
                ],
                "enum_known": true,
                "maximum_length": null,
                "name": "model",
                "required": true,
                "type": "string"
              },
              {
                "conditions": "",
                "default_known": false,
                "enum_known": false,
                "maxLength": 500,
                "maximum_length": 500,
                "name": "prompt",
                "required": true,
                "type": "string"
              },
              {
                "conditions": "",
                "default_known": false,
                "enum": [
                  "std",
                  "pro"
                ],
                "enum_known": true,
                "maximum_length": null,
                "name": "mode",
                "required": true,
                "type": "string"
              },
              {
                "conditions": "Προαιρετική εγγενής παράκαμψη. Παραλείψτε την για να χρησιμοποιηθεί αυτόματα το επιλεγμένο μοντέλο· μια ρητά καθορισμένη τιμή διατηρείται.",
                "default_known": false,
                "enum_known": false,
                "maximum_length": null,
                "name": "model_name",
                "required": false,
                "type": "string"
              },
              {
                "conditions": "",
                "default_known": false,
                "enum_known": false,
                "maximum": 1,
                "maximum_length": null,
                "minimum": 0,
                "name": "cfg_scale",
                "required": false,
                "type": "number"
              },
              {
                "conditions": "",
                "default_known": false,
                "enum_known": false,
                "maximum_length": null,
                "name": "aspect_ratio",
                "required": false,
                "type": "string"
              },
              {
                "conditions": "",
                "default_known": false,
                "enum_known": false,
                "maxLength": 200,
                "maximum_length": 200,
                "name": "negative_prompt",
                "required": false,
                "type": "string"
              },
              {
                "conditions": "",
                "default_known": false,
                "enum": [
                  5,
                  10
                ],
                "enum_known": true,
                "maximum_length": null,
                "name": "duration",
                "required": false,
                "type": "integer"
              }
            ],
            "request_schema": {
              "additionalProperties": true,
              "properties": {
                "aspect_ratio": {
                  "type": "string"
                },
                "cfg_scale": {
                  "maximum": 1,
                  "minimum": 0,
                  "type": "number"
                },
                "duration": {
                  "enum": [
                    5,
                    10
                  ],
                  "type": "integer"
                },
                "mode": {
                  "enum": [
                    "std",
                    "pro"
                  ],
                  "type": "string"
                },
                "model": {
                  "enum": [
                    "kling-v2-1-master"
                  ],
                  "type": "string"
                },
                "model_name": {
                  "type": "string"
                },
                "negative_prompt": {
                  "maxLength": 200,
                  "type": "string"
                },
                "prompt": {
                  "maxLength": 500,
                  "type": "string"
                }
              },
              "required": [
                "model",
                "prompt",
                "mode"
              ],
              "type": "object"
            },
            "schema_template": {
              "actual_file_preparation_required": false,
              "body": {
                "mode": "pro",
                "model": "kling-v2-1-master",
                "prompt": "A happy holiday scene at the beach."
              },
              "content_type": "application/json",
              "example_is_offline_content": true
            },
            "usage": {
              "meter": "Use the accepted method price and actual recorded usage; the request reserve is an estimate. A billing unit does not add an input capability.",
              "preserve": "Keep all returned usage, accounting and request identifiers with every actual output.",
              "settlement": "Retain the original operation; reconcile its result and accounting once."
            }
          },
          "input": {
            "conditions": [
              "Χρησιμοποιήστε ακριβώς αυτόν τον επιλογέα δρομολόγησης του Ailoot.",
              "Προαιρετική εγγενής παράκαμψη. Παραλείψτε την για να χρησιμοποιηθεί αυτόματα το επιλεγμένο μοντέλο· μια ρητά καθορισμένη τιμή διατηρείται."
            ],
            "content_type": "application/json",
            "material_types": [
              "text"
            ],
            "optional": [
              "model_name",
              "cfg_scale",
              "aspect_ratio",
              "negative_prompt",
              "duration"
            ],
            "required": [
              "model",
              "prompt",
              "mode"
            ]
          },
          "lifecycle": {
            "assets": [
              {
                "http": "GET",
                "path": "/v1/media/assets"
              },
              {
                "http": "GET",
                "path": "/v1/media/assets/{asset_id}"
              }
            ],
            "cancel_endpoint": null,
            "completed_states": [
              "succeed"
            ],
            "content": [
              {
                "http": "GET",
                "path": "/v1/videos/{request_id}/content",
                "query": {
                  "index": "actual output index; default 0"
                }
              }
            ],
            "create": {
              "http": "POST",
              "path": "/v1/videos"
            },
            "failed_states": [],
            "id_source": "Use returned polling_url and id. Keep provider_task_id and X-Ailoot-Task-Id as separate original identifiers.",
            "mode": "submit_once_poll_original",
            "owned_content": {
              "http": "GET",
              "path": "/v1/media/assets/{asset_id}/content",
              "url_source": "Use the exact returned signed URL; never construct a token."
            },
            "pending_states": [
              "submitted"
            ],
            "state_field": "data.task_status",
            "status": [
              {
                "http": "GET",
                "path": "/v1/videos/{request_id}"
              },
              {
                "http": "GET",
                "path": "/v1/videos/generations/{request_id}"
              }
            ],
            "unknown": "Keep the returned public task or operation id and all headers. Read only the original task; unknown or result_pending_check does not authorize another creation.",
            "unknown_no_replay": true
          },
          "method": {
            "http": "POST",
            "path": "/v1/videos"
          },
          "method_aliases": [
            "/v1/videos/generations"
          ],
          "output": {
            "all_results": "Retain the complete response and headers, original identifiers, every actual output and all usage/accounting fields. Save each unique owned asset and retain every role pointing to it.",
            "every_actual_output": true,
            "family": "video",
            "fields": [
              {
                "name": "id",
                "type": "string"
              },
              {
                "name": "polling_url",
                "type": "string"
              },
              {
                "name": "provider_task_id",
                "type": "string"
              },
              {
                "name": "data.task_id",
                "type": "string"
              },
              {
                "name": "data.task_status",
                "type": "string"
              },
              {
                "name": "data.task_result.videos[].url",
                "type": "string"
              }
            ],
            "maximum_outputs": null
          }
        },
        "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"
              }
            ]
          },
          {
            "basis": "Αυτή η εκτίμηση δεν αποτελεί πρόσθετη χρέωση ούτε σταθερή τιμή για την ολοκληρωμένη παραγωγή.",
            "dimensions": {
              "forecast_quantity": "one generation estimate"
            },
            "label": "Εκτιμώμενο κόστος δημιουργίας",
            "units": [
              {
                "amount": "6",
                "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": "6",
                "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}\"\nexport AILOOT_API_KEY\npython3 - <<'PY_REQUEST'\nimport json,os\nfrom pathlib import Path\np=json.loads('{\"model\": \"kling-v2-1-master\", \"prompt\": \"A happy holiday scene at the beach.\", \"mode\": \"pro\"}')\n\nPath(\"request.json\").write_text(json.dumps(p,ensure_ascii=False))\nPY_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# Submit once. Retain the complete result, original identifiers and every response header.\n",
            "label": "curl · create once and retain the complete result",
            "language": "bash"
          },
          {
            "code": "set -eu\n: \"${AILOOT_API_KEY:?Set your Ailoot API key}\"\nexport AILOOT_API_KEY\npython3 - <<'PY_STATUS'\nimport json,os,subprocess\nfrom pathlib import Path\nfrom urllib.parse import urljoin,urlsplit\nr=json.loads(Path(\"result.json\").read_text())\nu=urljoin(\"https://api.ailoot.ai\",r[\"polling_url\"])\np=urlsplit(u)\nif p.scheme!=\"https\" or p.netloc!=\"api.ailoot.ai\" or p.username or p.password:\n    raise SystemExit(\"Unexpected returned polling URL; preserve the response\")\nsubprocess.run([\"curl\",\"--fail-with-body\",\"--silent\",\"--show-error\",u,\"-H\",\"Authorization: Bearer \"+os.environ[\"AILOOT_API_KEY\"],\"-D\",\"status-headers.txt\",\"-o\",\"status.json\"],check=True)\n# Read this same original polling_url again while pending.\n# Preserve unknown/result_pending_check; do not repeat creation.\nPY_STATUS\n",
            "label": "Read the original task",
            "language": "bash"
          },
          {
            "code": "set -eu\n: \"${AILOOT_API_KEY:?Set your Ailoot API key}\"\nexport AILOOT_API_KEY\npython3 - <<'PY_ASSETS'\nimport json,os,subprocess\nfrom pathlib import Path\nfrom urllib.parse import urljoin,urlsplit\nr=json.loads(Path(\"status.json\").read_text())\nroles={}\ndef visit(v,path=\"\"):\n    if isinstance(v,dict):\n        for k,x in v.items(): visit(x,path+\"/\"+k)\n    elif isinstance(v,list):\n        for i,x in enumerate(v): visit(x,path+\"/\"+str(i))\n    elif isinstance(v,str):\n        u=urljoin(\"https://api.ailoot.ai\",v); p=urlsplit(u)\n        if p.scheme==\"https\" and p.netloc==\"api.ailoot.ai\" and not p.username and not p.password and p.path.startswith(\"/v1/media/assets/\") and p.path.endswith(\"/content\"):\n            roles.setdefault(u,[]).append(path)\nvisit(r)\nif not roles: raise SystemExit(\"No completed owned assets; retain the original status\")\nmanifest=[]\nfor i,(u,paths) in enumerate(roles.items()):\n    target=Path(f\"asset-{i}.bin\")\n    subprocess.run([\"curl\",\"--fail-with-body\",\"--silent\",\"--show-error\",u,\"-H\",\"Authorization: Bearer \"+os.environ[\"AILOOT_API_KEY\"],\"-o\",str(target)],check=True)\n    raw=target.read_bytes()\n    if not raw: raise SystemExit(\"Empty asset; retain original status and metadata\")\n    ext=\"glb\" if raw[:4]==b\"glTF\" else \"png\" if raw[:8]==b\"\\x89PNG\\r\\n\\x1a\\n\" else \"jpg\" if raw[:3]==b\"\\xff\\xd8\\xff\" else \"webp\" if raw[:4]==b\"RIFF\" and raw[8:12]==b\"WEBP\" else \"mp4\" if raw[4:8]==b\"ftyp\" else \"bin\"\n    name=f\"asset-{i}.{ext}\"\n    if target.name!=name: target.rename(name)\n    manifest.append({\"file\":name,\"response_paths\":paths,\"bytes\":len(raw)})\nPath(\"asset-manifest.json\").write_text(json.dumps(manifest,indent=2))\nprint(\"Saved\",len(manifest),\"unique owned assets; every response role retained\")\nPY_ASSETS\n",
            "label": "Save every completed owned asset",
            "language": "bash"
          }
        ],
        "family": "openai",
        "fast_multiplier": null,
        "flex_multiplier": null,
        "fmt": "videos",
        "http": "POST",
        "in": null,
        "input": [
          "text"
        ],
        "label": "Video",
        "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"
              }
            ]
          },
          {
            "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": "6",
                "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": "6",
                "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": "kling-v2-1-master",
        "route_label": "Ultra",
        "status_reads": [
          "GET /v1/videos/{request_id}",
          "GET /v1/videos/generations/{request_id}"
        ],
        "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": "6",
            "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": "6",
            "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": "kling-v2-1-master",
  "nativeProvenance": {
    "input_facts_canonical_sha256": "507b4ea801c8c890ba288dcfb67227d2072a04de68230ac8d6b998aad8325e7a",
    "input_html_sha256": "25ce8cc8e2c3ef88f850f79527d57f6bf61b1292490bb1d5202712c40ab83e4f",
    "private_audit_sha256": "b27e83bc9aad4849e8c45041becfffc1989776f1bc348137fcdcb741e28680d3",
    "role": "historical-normalized-input-audit-hashes",
    "schema": "ailoot-native-model-provenance-v2"
  },
  "page": {
    "canonical": "https://ailoot.ai/models/el/kling-v2-1-master/",
    "description": "Το Kling v2.1 Master δημιουργεί βίντεο από κείμενο ή από περιγραφή που βασίζεται σε εικόνα. Χρησιμοποιήστε το για ένα καθορισμένο οπτικό συμβάν, σχεδιάζοντας το κύριο θέμα, τη δράση, τις οδηγίες για την κάμερα και το τέλος ως ένα συνεκτικό σύντομο πλάνο.",
    "locale": "el",
    "md_url": "https://ailoot.ai/models/el/kling-v2-1-master/index.md",
    "title": "Kling v2.1 Master — Ailoot",
    "url": "https://ailoot.ai/models/el/kling-v2-1-master/"
  },
  "rawModel": {
    "about": "Το Kling v2.1 Master είναι έκδοση βίντεο του Kling με δυνατότητα δημιουργίας βίντεο από κείμενο και από εικόνα στον τεκμηριωμένο κατάλογο μοντέλων. Επιλέξτε μια γραπτή περιγραφή σκηνής όταν αναπτύσσετε μια οπτική ιδέα από κείμενο ή μια περιγραφή που βασίζεται σε εικόνα όταν το κύριο θέμα και η σύνθεση έχουν ήδη καθοριστεί. Και στις δύο περιπτώσεις, ορίστε το συμβάν που πρέπει να δείχνει το ολοκληρωμένο πλάνο.\n\nΓια δημιουργία με βάση το κείμενο, περιγράψτε το κύριο θέμα, τον χώρο και τη δράση με σαφή σειρά. Ένας χορευτής που διασχίζει ένα στούντιο, ένα όχημα που κινείται κάτω από δέντρα ή ένα γυάλινο αντικείμενο που δέχεται μεταβαλλόμενο φως δίνουν στη σεκάνς έναν συγκεκριμένο σκοπό. Συμπεριλάβετε τις λεπτομέρειες που καθορίζουν την εμφάνιση της σκηνής και διατηρήστε τη συνέπειά τους σε όλη την περιγραφή.\n\nΓια δημιουργία με βάση εικόνα, προετοιμάστε μια αναφορά που δείχνει τα χαρακτηριστικά που χρειάζεται να διατηρήσει το πλάνο. Κρατήστε ορατά τα πρόσωπα, τις ακμές των αντικειμένων και τα ιδιαίτερα υλικά. Περιγράψτε τι αλλάζει από αυτή την αρχική όψη: η χειρονομία του κύριου θέματος, μια κίνηση του περιβάλλοντος ή η θέση της κάμερας. Έχετε διαθέσιμη την εικόνα προέλευσης όταν ελέγχετε το αποτέλεσμα.\n\nΣχεδιάστε τη δράση με βάση το τέλος της. Ένα άτομο που αφήνει κάτω ένα αντικείμενο πρέπει να ολοκληρώνει την κίνηση με το αντικείμενο σε αναγνωρίσιμη θέση· μια αποκάλυψη πρέπει να τελειώνει με το σημαντικό χαρακτηριστικό ορατό. Έτσι είναι ευκολότερο να επιλέξετε σημείο μοντάζ και να αξιολογήσετε αν η κίνηση έχει εκπληρώσει τον σκοπό της.\n\nΗ τεκμηριωμένη καταχώριση του μοντέλου περιλαμβάνει διάρκειες πέντε και δέκα δευτερολέπτων, λειτουργίες std και pro, καθώς και οριζόντιο, κατακόρυφο και τετράγωνο σχήμα κάδρου. Επιλέξτε τις διαθέσιμες ρυθμίσεις της επιλεγμένης ροής εργασίας και διατηρήστε τις πραγματικές τιμές τους. Αξιολογήστε το παραγόμενο κλιπ σε σχέση με την επιθυμητή δράση και το καδράρισμα, αντί να βασίζεστε στην ονομασία της έκδοσης του μοντέλου.\n\nΠεριγράψτε ξεχωριστά την κίνηση του κύριου θέματος και της κάμερας. Για ένα πλάνο στο οποίο η κάμερα ακολουθεί το θέμα, αναφέρετε ποιο κύριο θέμα ακολουθεί και ποια μέρη του περιβάλλοντος πρέπει να περνούν μέσα από το κάδρο. Για ένα σταθερό πλάνο, αναφέρετε την κίνηση που εκτυλίσσεται μέσα του. Συνδέστε τις οδηγίες για την κάμερα με όσα χρειάζεται να προσέξει ο θεατής.\n\nΕλέγξτε ολόκληρη τη σεκάνς για συνέχεια. Βεβαιωθείτε ότι το σημαντικό κύριο θέμα παραμένει αναγνωρίσιμο, ότι οι αλληλεπιδράσεις είναι χωρικά συνεκτικές και ότι ο χρονισμός αφήνει περιθώριο για την προβλεπόμενη κοπή. Παρατηρήστε τις αλλαγές στα χέρια, τα πρόσωπα, τις λεπτομέρειες των επιφανειών και τα αντικείμενα που αλληλοκαλύπτονται. Κρίνετε την κίνηση, καθώς και το πιο δυνατό μεμονωμένο καρέ.\n\nΚρατήστε κάθε ολοκληρωμένο βίντεο μαζί με την προτροπή, την αναφορά και τις ρυθμίσεις του. Χρησιμοποιήστε την ίδια περιγραφή όταν συγκρίνετε μια σκηνή μεταξύ εκδόσεων και καταγράψτε τις πραγματικές οπτικές διαφορές. Όταν διορθώνετε μια εκδοχή, περιγράψτε το πρόβλημα που παρατηρήσατε και αναθεωρήστε τη σχετική οδηγία, διατηρώντας τα χρήσιμα στοιχεία της σκηνής.",
    "about_sha256": "c5b60dc346e66ca26795446abacdedb68d28b27005a69b5f9c8f395c760374b5",
    "alias_of": null,
    "aliases": [],
    "author": "Kling",
    "capabilities": {
      "context_length": 0,
      "manufacturer_input": [
        "text",
        "image"
      ],
      "manufacturer_output": [
        "video"
      ]
    },
    "card_routes": [
      {
        "label": "Ultra",
        "rates": [
          {
            "amount": "6",
            "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": "6",
            "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": "Kling v2.1 Master",
    "formats": [
      "videos"
    ],
    "id": "kling-v2-1-master",
    "input": [
      "text"
    ],
    "kind": "video",
    "locale": "en",
    "max_out": null,
    "methods": [
      {
        "available": null,
        "billing_basis": {
          "basis": "original_invoice_usd",
          "description": "The displayed rates estimate the cost before generation. The final charge is calculated from the cost recorded for the original generation. Measured output duration and forecast quantities are not the final billable quantity.",
          "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": {
            "all_results": "Retain the complete response and headers, original identifiers, every actual output and all usage/accounting fields. Save each unique owned asset and retain every role pointing to it.",
            "authentication": {
              "header": "Authorization",
              "scheme": "Bearer",
              "value": "$AILOOT_API_KEY"
            },
            "errors": [
              {
                "condition": "Ένα υποχρεωτικό πεδίο, ο επιλογέας μοντέλου, ο τύπος ή η μορφή αναπαράστασης της εισόδου δεν είναι έγκυρα.",
                "http_status": 400,
                "recovery": "Εξετάστε τις λεπτομέρειες επικύρωσης που επιστράφηκαν πριν ετοιμάσετε ξεχωριστό αίτημα.",
                "type": "invalid_request_error"
              },
              {
                "condition": "Το αρχικό αίτημα ή αποτέλεσμα είναι άγνωστο ή απαιτεί έλεγχο.",
                "http_status": null,
                "recovery": "Διατηρήστε τα αρχικά αναγνωριστικά και τις κεφαλίδες· διαβάστε μόνο τις υποστηριζόμενες εγγραφές κατάστασης ή βιβλιοθήκης. Μην υποβάλετε ξανά αίτημα δημιουργίας.",
                "type": null
              }
            ],
            "lifecycle": {
              "assets": [
                {
                  "http": "GET",
                  "path": "/v1/media/assets"
                },
                {
                  "http": "GET",
                  "path": "/v1/media/assets/{asset_id}"
                }
              ],
              "cancel_endpoint": null,
              "completed_states": [
                "succeed"
              ],
              "content": [
                {
                  "http": "GET",
                  "path": "/v1/videos/{request_id}/content",
                  "query": {
                    "index": "actual output index; default 0"
                  }
                }
              ],
              "create": {
                "http": "POST",
                "path": "/v1/videos"
              },
              "failed_states": [],
              "id_source": "Use returned polling_url and id. Keep provider_task_id and X-Ailoot-Task-Id as separate original identifiers.",
              "mode": "submit_once_poll_original",
              "owned_content": {
                "http": "GET",
                "path": "/v1/media/assets/{asset_id}/content",
                "url_source": "Use the exact returned signed URL; never construct a token."
              },
              "pending_states": [
                "submitted"
              ],
              "state_field": "data.task_status",
              "status": [
                {
                  "http": "GET",
                  "path": "/v1/videos/{request_id}"
                },
                {
                  "http": "GET",
                  "path": "/v1/videos/generations/{request_id}"
                }
              ],
              "unknown": "Διατηρήστε το δημόσιο id εργασίας ή λειτουργίας που επιστρέφεται και όλες τις κεφαλίδες. Διαβάστε μόνο την αρχική εργασία· τα unknown ή result_pending_check δεν επιτρέπουν άλλη δημιουργία.",
              "unknown_no_replay": true
            },
            "outputs": {
              "all_results": "Διατηρήστε ολόκληρη την απόκριση και τις κεφαλίδες, τα αρχικά αναγνωριστικά, κάθε πραγματική έξοδο και όλα τα πεδία χρήσης και λογιστικής καταγραφής. Αποθηκεύστε κάθε μοναδικό αρχείο πολυμέσων που σας ανήκει και διατηρήστε κάθε ρόλο που παραπέμπει σε αυτό.",
              "every_actual_output": true,
              "family": "video",
              "fields": [
                {
                  "name": "id",
                  "type": "string"
                },
                {
                  "name": "polling_url",
                  "type": "string"
                },
                {
                  "name": "provider_task_id",
                  "type": "string"
                },
                {
                  "name": "data.task_id",
                  "type": "string"
                },
                {
                  "name": "data.task_status",
                  "type": "string"
                },
                {
                  "name": "data.task_result.videos[].url",
                  "type": "string"
                }
              ],
              "maximum_outputs": null
            },
            "parameters": [
              {
                "conditions": "Χρησιμοποιήστε ακριβώς αυτόν τον επιλογέα δρομολόγησης του Ailoot.",
                "default_known": false,
                "enum": [
                  "kling-v2-1-master"
                ],
                "enum_known": true,
                "maximum_length": null,
                "name": "model",
                "required": true,
                "type": "string"
              },
              {
                "conditions": "",
                "default_known": false,
                "enum_known": false,
                "maxLength": 500,
                "maximum_length": 500,
                "name": "prompt",
                "required": true,
                "type": "string"
              },
              {
                "conditions": "",
                "default_known": false,
                "enum": [
                  "std",
                  "pro"
                ],
                "enum_known": true,
                "maximum_length": null,
                "name": "mode",
                "required": true,
                "type": "string"
              },
              {
                "conditions": "Προαιρετική εγγενής παράκαμψη. Παραλείψτε την για να χρησιμοποιηθεί αυτόματα το επιλεγμένο μοντέλο· μια ρητά καθορισμένη τιμή διατηρείται.",
                "default_known": false,
                "enum_known": false,
                "maximum_length": null,
                "name": "model_name",
                "required": false,
                "type": "string"
              },
              {
                "conditions": "",
                "default_known": false,
                "enum_known": false,
                "maximum": 1,
                "maximum_length": null,
                "minimum": 0,
                "name": "cfg_scale",
                "required": false,
                "type": "number"
              },
              {
                "conditions": "",
                "default_known": false,
                "enum_known": false,
                "maximum_length": null,
                "name": "aspect_ratio",
                "required": false,
                "type": "string"
              },
              {
                "conditions": "",
                "default_known": false,
                "enum_known": false,
                "maxLength": 200,
                "maximum_length": 200,
                "name": "negative_prompt",
                "required": false,
                "type": "string"
              },
              {
                "conditions": "",
                "default_known": false,
                "enum": [
                  5,
                  10
                ],
                "enum_known": true,
                "maximum_length": null,
                "name": "duration",
                "required": false,
                "type": "integer"
              }
            ],
            "request_schema": {
              "additionalProperties": true,
              "properties": {
                "aspect_ratio": {
                  "type": "string"
                },
                "cfg_scale": {
                  "maximum": 1,
                  "minimum": 0,
                  "type": "number"
                },
                "duration": {
                  "enum": [
                    5,
                    10
                  ],
                  "type": "integer"
                },
                "mode": {
                  "enum": [
                    "std",
                    "pro"
                  ],
                  "type": "string"
                },
                "model": {
                  "enum": [
                    "kling-v2-1-master"
                  ],
                  "type": "string"
                },
                "model_name": {
                  "type": "string"
                },
                "negative_prompt": {
                  "maxLength": 200,
                  "type": "string"
                },
                "prompt": {
                  "maxLength": 500,
                  "type": "string"
                }
              },
              "required": [
                "model",
                "prompt",
                "mode"
              ],
              "type": "object"
            },
            "schema_template": {
              "actual_file_preparation_required": false,
              "body": {
                "mode": "pro",
                "model": "kling-v2-1-master",
                "prompt": "A happy holiday scene at the beach."
              },
              "content_type": "application/json",
              "example_is_offline_content": true
            },
            "usage": {
              "meter": "Use the accepted method price and actual recorded usage; the request reserve is an estimate. A billing unit does not add an input capability.",
              "preserve": "Keep all returned usage, accounting and request identifiers with every actual output.",
              "settlement": "Retain the original operation; reconcile its result and accounting once."
            }
          },
          "input": {
            "conditions": [
              "Χρησιμοποιήστε ακριβώς αυτόν τον επιλογέα δρομολόγησης του Ailoot.",
              "Προαιρετική εγγενής παράκαμψη. Παραλείψτε την για να χρησιμοποιηθεί αυτόματα το επιλεγμένο μοντέλο· μια ρητά καθορισμένη τιμή διατηρείται."
            ],
            "content_type": "application/json",
            "material_types": [
              "text"
            ],
            "optional": [
              "model_name",
              "cfg_scale",
              "aspect_ratio",
              "negative_prompt",
              "duration"
            ],
            "required": [
              "model",
              "prompt",
              "mode"
            ]
          },
          "lifecycle": {
            "assets": [
              {
                "http": "GET",
                "path": "/v1/media/assets"
              },
              {
                "http": "GET",
                "path": "/v1/media/assets/{asset_id}"
              }
            ],
            "cancel_endpoint": null,
            "completed_states": [
              "succeed"
            ],
            "content": [
              {
                "http": "GET",
                "path": "/v1/videos/{request_id}/content",
                "query": {
                  "index": "actual output index; default 0"
                }
              }
            ],
            "create": {
              "http": "POST",
              "path": "/v1/videos"
            },
            "failed_states": [],
            "id_source": "Use returned polling_url and id. Keep provider_task_id and X-Ailoot-Task-Id as separate original identifiers.",
            "mode": "submit_once_poll_original",
            "owned_content": {
              "http": "GET",
              "path": "/v1/media/assets/{asset_id}/content",
              "url_source": "Use the exact returned signed URL; never construct a token."
            },
            "pending_states": [
              "submitted"
            ],
            "state_field": "data.task_status",
            "status": [
              {
                "http": "GET",
                "path": "/v1/videos/{request_id}"
              },
              {
                "http": "GET",
                "path": "/v1/videos/generations/{request_id}"
              }
            ],
            "unknown": "Keep the returned public task or operation id and all headers. Read only the original task; unknown or result_pending_check does not authorize another creation.",
            "unknown_no_replay": true
          },
          "method": {
            "http": "POST",
            "path": "/v1/videos"
          },
          "method_aliases": [
            "/v1/videos/generations"
          ],
          "output": {
            "all_results": "Retain the complete response and headers, original identifiers, every actual output and all usage/accounting fields. Save each unique owned asset and retain every role pointing to it.",
            "every_actual_output": true,
            "family": "video",
            "fields": [
              {
                "name": "id",
                "type": "string"
              },
              {
                "name": "polling_url",
                "type": "string"
              },
              {
                "name": "provider_task_id",
                "type": "string"
              },
              {
                "name": "data.task_id",
                "type": "string"
              },
              {
                "name": "data.task_status",
                "type": "string"
              },
              {
                "name": "data.task_result.videos[].url",
                "type": "string"
              }
            ],
            "maximum_outputs": null
          }
        },
        "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"
              }
            ]
          },
          {
            "basis": "Αυτή η εκτίμηση δεν αποτελεί πρόσθετη χρέωση ούτε σταθερή τιμή για την ολοκληρωμένη παραγωγή.",
            "dimensions": {
              "forecast_quantity": "one generation estimate"
            },
            "label": "Εκτιμώμενο κόστος δημιουργίας",
            "units": [
              {
                "amount": "6",
                "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": "6",
                "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}\"\nexport AILOOT_API_KEY\npython3 - <<'PY_REQUEST'\nimport json,os\nfrom pathlib import Path\np=json.loads('{\"model\": \"kling-v2-1-master\", \"prompt\": \"A happy holiday scene at the beach.\", \"mode\": \"pro\"}')\n\nPath(\"request.json\").write_text(json.dumps(p,ensure_ascii=False))\nPY_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# Submit once. Retain the complete result, original identifiers and every response header.\n",
            "label": "curl · create once and retain the complete result",
            "language": "bash"
          },
          {
            "code": "set -eu\n: \"${AILOOT_API_KEY:?Set your Ailoot API key}\"\nexport AILOOT_API_KEY\npython3 - <<'PY_STATUS'\nimport json,os,subprocess\nfrom pathlib import Path\nfrom urllib.parse import urljoin,urlsplit\nr=json.loads(Path(\"result.json\").read_text())\nu=urljoin(\"https://api.ailoot.ai\",r[\"polling_url\"])\np=urlsplit(u)\nif p.scheme!=\"https\" or p.netloc!=\"api.ailoot.ai\" or p.username or p.password:\n    raise SystemExit(\"Unexpected returned polling URL; preserve the response\")\nsubprocess.run([\"curl\",\"--fail-with-body\",\"--silent\",\"--show-error\",u,\"-H\",\"Authorization: Bearer \"+os.environ[\"AILOOT_API_KEY\"],\"-D\",\"status-headers.txt\",\"-o\",\"status.json\"],check=True)\n# Read this same original polling_url again while pending.\n# Preserve unknown/result_pending_check; do not repeat creation.\nPY_STATUS\n",
            "label": "Read the original task",
            "language": "bash"
          },
          {
            "code": "set -eu\n: \"${AILOOT_API_KEY:?Set your Ailoot API key}\"\nexport AILOOT_API_KEY\npython3 - <<'PY_ASSETS'\nimport json,os,subprocess\nfrom pathlib import Path\nfrom urllib.parse import urljoin,urlsplit\nr=json.loads(Path(\"status.json\").read_text())\nroles={}\ndef visit(v,path=\"\"):\n    if isinstance(v,dict):\n        for k,x in v.items(): visit(x,path+\"/\"+k)\n    elif isinstance(v,list):\n        for i,x in enumerate(v): visit(x,path+\"/\"+str(i))\n    elif isinstance(v,str):\n        u=urljoin(\"https://api.ailoot.ai\",v); p=urlsplit(u)\n        if p.scheme==\"https\" and p.netloc==\"api.ailoot.ai\" and not p.username and not p.password and p.path.startswith(\"/v1/media/assets/\") and p.path.endswith(\"/content\"):\n            roles.setdefault(u,[]).append(path)\nvisit(r)\nif not roles: raise SystemExit(\"No completed owned assets; retain the original status\")\nmanifest=[]\nfor i,(u,paths) in enumerate(roles.items()):\n    target=Path(f\"asset-{i}.bin\")\n    subprocess.run([\"curl\",\"--fail-with-body\",\"--silent\",\"--show-error\",u,\"-H\",\"Authorization: Bearer \"+os.environ[\"AILOOT_API_KEY\"],\"-o\",str(target)],check=True)\n    raw=target.read_bytes()\n    if not raw: raise SystemExit(\"Empty asset; retain original status and metadata\")\n    ext=\"glb\" if raw[:4]==b\"glTF\" else \"png\" if raw[:8]==b\"\\x89PNG\\r\\n\\x1a\\n\" else \"jpg\" if raw[:3]==b\"\\xff\\xd8\\xff\" else \"webp\" if raw[:4]==b\"RIFF\" and raw[8:12]==b\"WEBP\" else \"mp4\" if raw[4:8]==b\"ftyp\" else \"bin\"\n    name=f\"asset-{i}.{ext}\"\n    if target.name!=name: target.rename(name)\n    manifest.append({\"file\":name,\"response_paths\":paths,\"bytes\":len(raw)})\nPath(\"asset-manifest.json\").write_text(json.dumps(manifest,indent=2))\nprint(\"Saved\",len(manifest),\"unique owned assets; every response role retained\")\nPY_ASSETS\n",
            "label": "Save every completed owned asset",
            "language": "bash"
          }
        ],
        "family": "openai",
        "fast_multiplier": null,
        "flex_multiplier": null,
        "fmt": "videos",
        "http": "POST",
        "in": null,
        "input": [
          "text"
        ],
        "label": "Video",
        "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"
              }
            ]
          },
          {
            "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": "6",
                "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": "6",
                "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": "kling-v2-1-master",
        "route_label": "Ultra",
        "status_reads": [
          "GET /v1/videos/{request_id}",
          "GET /v1/videos/generations/{request_id}"
        ],
        "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": "6",
            "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": "6",
            "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": "kling-v2-1-master",
        "request_model_id": "kling-v2-1-master",
        "route_label": "Ultra"
      }
    ],
    "name": "Kling v2.1 Master",
    "price": {
      "estimate_only": true,
      "in": null,
      "in_label": null,
      "out": 6,
      "out_label": "estimate before generation",
      "scope_label": "Estimated generation cost",
      "sort_in": null,
      "sort_out": 6,
      "varies": false
    },
    "short": "Το Kling v2.1 Master δημιουργεί βίντεο από κείμενο ή από περιγραφή που βασίζεται σε εικόνα. Χρησιμοποιήστε το για ένα καθορισμένο οπτικό συμβάν, σχεδιάζοντας το κύριο θέμα, τη δράση, τις οδηγίες για την κάμερα και το τέλος ως ένα συνεκτικό σύντομο πλάνο.",
    "short_sha256": "a45d457782bb2d2b9b40860c73ff5d3bdd5c195d63847120ee214d5c80164cbf"
  },
  "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": "Το Kling v2.1 Master δημιουργεί βίντεο από κείμενο ή από περιγραφή που βασίζεται σε εικόνα. Χρησιμοποιήστε το για ένα καθορισμένο οπτικό συμβάν, σχεδιάζοντας το κύριο θέμα, τη δράση, τις οδηγίες για την κάμερα και το τέλος ως ένα συνεκτικό σύντομο πλάνο.",
  "source": {
    "audit_sha256": "2e00086bcbfc28e64d0cebe97aa47c17d8d5618963027f8ffb9dc6123d7d25b1",
    "bridge_map_sha256": "1125275768b9636fc8461bc7da5061239a81ddfe508e2557843ca42c58ab0036",
    "raw_model_json_sha256": "76351d40e7e657b8452749f04da8dd9655dbfde705402af481ab83c7bfb6fc2b",
    "renderer_sha256": "3ed36f7af4f78822bafbd174fdcaed7b698a18a86efe254253d37f1b098a7566"
  },
  "sourceRevision": "7ec004ea3b742236c58b5b291193e568e19e90c767162e6be068e373ec35d597"
}
