{
  "aboutHtml": "<p>Το Kling v2.1 είναι μοντέλο βίντεο του Kling με δυνατότητα δημιουργίας βίντεο από εικόνα στον τεκμηριωμένο κατάλογο. Ξεκινήστε από μια στατική εικόνα αναφοράς που καθορίζει τη σκηνή και κατόπιν περιγράψτε την κίνηση που τη μετατρέπει σε χρήσιμο πλάνο. Μια εικόνα προϊόντος, ένα εικονογραφημένο σκηνικό ή ένα καρέ χαρακτήρα μπορούν να δώσουν τη σύνθεση από την οποία αναπτύσσεται η σεκάνς.</p><p>Επιλέξτε μια αναφορά που καθιστά κατανοητή την επιθυμητή δράση. Ένα κύριο θέμα τοποθετημένο δίπλα σε μια πόρτα προσφέρει σαφές σημείο εκκίνησης για την είσοδο σε ένα δωμάτιο· ένα αντικείμενο πάνω σε μια επιφάνεια χωρίς οπτική ακαταστασία κάνει το περίγραμμά του ευκολότερο στον έλεγχο. Διατηρήστε την αναφορά στην αρχική της ποιότητα και κρατήστε τη συνδεδεμένη με το παραγόμενο κλιπ.</p><p>Περιγράψτε μία συνεκτική ενότητα δράσης. Προσδιορίστε το κύριο θέμα, την κατεύθυνση κίνησης και την επιθυμητή τελική κατάσταση. Για μια αλληλεπίδραση, εξηγήστε τη σχέση ανάμεσα στους συμμετέχοντες: ποιος απλώνει το χέρι, τι αγγίζει και πού ολοκληρώνεται η δράση. Χρησιμοποιήστε ορατές λεπτομέρειες που μπορούν να ελεγχθούν στην παραγόμενη σεκάνς.</p><p>Προσαρμόστε το κάδρο του πλάνου στον προορισμό του. Η τεκμηριωμένη καταχώριση δημιουργίας βίντεο από εικόνα αναφέρει οριζόντιες, κατακόρυφες και τετράγωνες αναλογίες, με επιλογές διάρκειας πέντε και δέκα δευτερολέπτων. Καθορίστε πού πρέπει να παραμένει το κύριο θέμα μέσα στο επιλεγμένο κάδρο. Μια κατακόρυφη σύνθεση και ένα ευρύ γενικό πλάνο θέτουν διαφορετικές απαιτήσεις στην ίδια κίνηση.</p><p>Τα τεκμηριωμένα χειριστήρια δημιουργίας βίντεο από εικόνα περιλαμβάνουν τις λειτουργίες παραγωγής std και pro. Κρατήστε την επιλεγμένη λειτουργία μαζί με το αποτέλεσμα όταν συγκρίνετε εκδοχές. Αξιολογήστε το αποτέλεσμα σε σχέση με την περιγραφή: τη ζητούμενη δράση, τη σύνθεση, την εμφάνιση του κύριου θέματος και τον χρονισμό. Η ονομασία μιας λειτουργίας από μόνη της δεν περιγράφει πόσο καλά ένα συγκεκριμένο πλάνο καλύπτει αυτές τις ανάγκες.</p><p>Χρησιμοποιήστε τις οδηγίες για την κάμερα ώστε να υποστηρίζουν το συμβάν. Μια σταθερή κάμερα μπορεί να δείχνει μια στάση σώματος που αλλάζει, μια πλάγια κίνηση μπορεί να αποκαλύπτει έναν χώρο και μια κίνηση προς τα εμπρός μπορεί να τονίζει μια λεπτομέρεια. Αναφέρετε την επιθυμητή σχέση ανάμεσα στο κύριο θέμα και την οπτική γωνία, ώστε η κίνηση της κάμερας να μην ανταγωνίζεται τη δράση που χρειάζεται να παρακολουθήσει ο θεατής.</p><p>Ελέγξτε τη συνέχεια σε ολόκληρο το κλιπ. Για ένα προϊόν, εξετάστε το σχήμα, τις σημάνσεις και την εμφάνιση του υλικού καθώς αλλάζει η οπτική γωνία. Για ένα άτομο, εξετάστε τα χαρακτηριστικά του προσώπου, τα χέρια, τα ρούχα και την επαφή με κοντινά αντικείμενα. Ελέγξτε την τελική σύνθεση σε σχέση με το επόμενο πλάνο ή γραφικό του μοντάζ.</p><p>Αποθηκεύστε το ολοκληρωμένο βίντεο, την αναφορά, την προτροπή και τις επιλεγμένες ρυθμίσεις ως ενιαία καταγραφή του πλάνου. Όταν το αναθεωρείτε, προσδιορίστε τη συγκεκριμένη οπτική απόκλιση και διατηρήστε τα στοιχεία που ήδη εξυπηρετούν τη σκηνή. Συγκρίνετε τις εκδοχές στο ίδιο μέγεθος και με την ίδια ταχύτητα αναπαραγωγής, ώστε η επιλογή να αντανακλά την κίνηση και τη σύνθεση που θα δει πραγματικά το κοινό.</p>",
  "aboutText": "Το Kling v2.1 είναι μοντέλο βίντεο του 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": "1c48247776a6c7b58bba10eb3e9f0cff56cf47563eac82d873ecd0263b6d6cc6",
    "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</h2><button class=\"icon-btn\" type=\"button\" data-close-sheet aria-label=\"Κλείσιμο\">×</button></div><div class=\"idline\"><span>Kling /</span><code>kling-v2-1</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\">Βίντεο</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 δημιουργεί βίντεο από μια εικόνα αναφοράς και μια γραπτή περιγραφή κίνησης. Η τεκμηριωμένη καταχώριση δημιουργίας βίντεο από εικόνα αναφέρει επιλογές διάρκειας πέντε και δέκα δευτερολέπτων, με λειτουργίες std και pro για τον σχεδιασμό της σεκάνς.</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 είναι μοντέλο βίντεο του 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>, <code>image</code></dd></div><div><dt>Έξοδος</dt><dd><code>video</code></dd></div></dl><div class=\"tw\" data-card-parameters data-typed-parameters><table><thead><tr><th>Πεδίο</th><th>Τύπος</th><th>Απαίτηση</th><th>Τιμές και όρια</th><th>Προεπιλογή</th></tr></thead><tbody><tr><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</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\">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=\"known\"><span class=\"card-cell-label\">Προεπιλογή</span>std</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>16:9, 9:16, 1: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\">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><tr><th data-cell-label=\"Πεδίο\" scope=\"row\"><span class=\"card-cell-label\">Πεδίο</span><code class=\"card-field-name\">end_image</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\">image</code></th><td data-cell-label=\"Τύπος\" data-field-type><span class=\"card-cell-label\">Τύπος</span><code>string or array&lt;string&gt;</code></td><td data-cell-label=\"Απαίτηση\"><span class=\"card-cell-label\">Απαίτηση</span>Υποχρεωτικό</td><td data-cell-label=\"Τιμές και όρια\"><span class=\"card-cell-label\">Τιμές και όρια</span><div>Συνθήκες: Δώστε το πραγματικό προσβάσιμο URL της εικόνας σας. Μια λίστα γίνεται δεκτή μόνο όταν το σχήμα της παραμέτρου ορίζει πίνακα.</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>Συνθήκες: Χρησιμοποιήστε το τεκμηριωμένο πεδίο και τις αναφερόμενες επιλογές του επιλεγμένου μοντέλου· παραλείψτε μια προαιρετική τιμή που δεν έχει καθοριστεί.</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>Συνθήκες: Χρησιμοποιήστε το τεκμηριωμένο πεδίο και τις αναφερόμενες επιλογές του επιλεγμένου μοντέλου· παραλείψτε μια προαιρετική τιμή που δεν έχει καθοριστεί.</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, image</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>mode, aspect_ratio, duration, end_image, negative_prompt</td></tr><tr><th data-cell-label=\"Παράμετρος\" scope=\"row\"><span class=\"card-cell-label\">Παράμετρος</span><code>material_types</code></th><td data-cell-label=\"Σύμβαση\"><span class=\"card-cell-label\">Σύμβαση</span>text, image</td></tr><tr><th data-cell-label=\"Παράμετρος\" scope=\"row\"><span class=\"card-cell-label\">Παράμετρος</span><code>conditions</code></th><td data-cell-label=\"Σύμβαση\"><span class=\"card-cell-label\">Σύμβαση</span>Χρησιμοποιήστε ακριβώς αυτόν τον επιλογέα δρομολόγησης του Ailoot., Χρησιμοποιήστε το τεκμηριωμένο πεδίο και τις αναφερόμενες επιλογές του επιλεγμένου μοντέλου· παραλείψτε μια προαιρετική τιμή που δεν έχει καθοριστεί., Χρησιμοποιήστε το τεκμηριωμένο πεδίο και τις αναφερόμενες επιλογές του επιλεγμένου μοντέλου· παραλείψτε μια προαιρετική τιμή που δεν έχει καθοριστεί., Χρησιμοποιήστε το τεκμηριωμένο πεδίο και τις αναφερόμενες επιλογές του επιλεγμένου μοντέλου· παραλείψτε μια προαιρετική τιμή που δεν έχει καθοριστεί., Χρησιμοποιήστε το τεκμηριωμένο πεδίο και τις αναφερόμενες επιλογές του επιλεγμένου μοντέλου· παραλείψτε μια προαιρετική τιμή που δεν έχει καθοριστεί., Δώστε το πραγματικό προσβάσιμο URL της εικόνας σας. Μια λίστα γίνεται δεκτή μόνο όταν το σχήμα της παραμέτρου ορίζει πίνακα., Χρησιμοποιήστε το τεκμηριωμένο πεδίο και τις αναφερόμενες επιλογές του επιλεγμένου μοντέλου· παραλείψτε μια προαιρετική τιμή που δεν έχει καθοριστεί., Χρησιμοποιήστε το τεκμηριωμένο πεδίο και τις αναφερόμενες επιλογές του επιλεγμένου μοντέλου· παραλείψτε μια προαιρετική τιμή που δεν έχει καθοριστεί.</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-2806-tab-0\" role=\"tab\" type=\"button\" aria-controls=\"model-code-2806-panel-0\" aria-selected=\"true\" tabindex=\"0\">curl · δημιουργήστε μία φορά και διατηρήστε το πλήρες αποτέλεσμα</button><button class=\"cg-tab\" id=\"model-code-2806-tab-1\" role=\"tab\" type=\"button\" aria-controls=\"model-code-2806-panel-1\" aria-selected=\"false\" tabindex=\"-1\">Διαβάστε την αρχική εργασία</button><button class=\"cg-tab\" id=\"model-code-2806-tab-2\" role=\"tab\" type=\"button\" aria-controls=\"model-code-2806-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-2806-panel-0\" role=\"tabpanel\" aria-labelledby=\"model-code-2806-tab-0\"><pre data-lang=\"bash\"><code>set -eu\n: &quot;${AILOOT_API_KEY:?Set your Ailoot API key}&quot;\nexport AILOOT_API_KEY\n: &quot;${AILOOT_IMAGE_URL:?Set an actual customer material or documented value}&quot;\nexport AILOOT_IMAGE_URL\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&quot;, &quot;prompt&quot;: &quot;A cat is walking on grass.&quot;, &quot;image&quot;: &quot;YOUR_ACCESSIBLE_IMAGE_URL&quot;}&#39;)\np[&#39;image&#39;]=os.environ[&#39;AILOOT_IMAGE_URL&#39;]\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-2806-panel-1\" role=\"tabpanel\" aria-labelledby=\"model-code-2806-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-2806-panel-2\" role=\"tabpanel\" aria-labelledby=\"model-code-2806-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\">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\">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\">video_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&amp;route=Ultra&amp;caller=kling-v2-1&amp;fmt=videos\"><code>kling-v2-1</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&amp;route=Ultra&amp;caller=kling-v2-1&amp;fmt=videos\"><code>kling-v2-1</code></a></p></section></div>",
      "method_identity": {
        "effective_request_model_id": "kling-v2-1",
        "fmt": "videos",
        "http": "POST",
        "path": "/v1/videos",
        "request_model_id": "kling-v2-1",
        "route_label": "Ultra"
      },
      "method_key": "Ultra|videos|/v1/videos|kling-v2-1",
      "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": [
                "completed"
              ],
              "content": [
                {
                  "http": "GET",
                  "path": "/v1/videos/{request_id}/content",
                  "query": {
                    "index": "actual output index; default 0"
                  }
                }
              ],
              "create": {
                "http": "POST",
                "path": "/v1/videos"
              },
              "failed_states": [
                "failed"
              ],
              "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": [
                "pending",
                "processing"
              ],
              "state_field": "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": "task_id",
                  "type": "string"
                },
                {
                  "name": "status",
                  "type": "string"
                },
                {
                  "name": "video_url",
                  "type": "string"
                }
              ],
              "maximum_outputs": null
            },
            "parameters": [
              {
                "conditions": "Χρησιμοποιήστε ακριβώς αυτόν τον επιλογέα δρομολόγησης του Ailoot.",
                "default_known": false,
                "enum": [
                  "kling-v2-1"
                ],
                "enum_known": true,
                "maximum_length": null,
                "name": "model",
                "required": true,
                "type": "string"
              },
              {
                "conditions": "Χρησιμοποιήστε το τεκμηριωμένο πεδίο και τις αναφερόμενες επιλογές του επιλεγμένου μοντέλου· παραλείψτε μια προαιρετική τιμή που δεν έχει καθοριστεί.",
                "default": "std",
                "default_known": true,
                "enum": [
                  "std",
                  "pro"
                ],
                "enum_known": true,
                "maximum_length": null,
                "name": "mode",
                "required": false,
                "type": "string"
              },
              {
                "conditions": "Χρησιμοποιήστε το τεκμηριωμένο πεδίο και τις αναφερόμενες επιλογές του επιλεγμένου μοντέλου· παραλείψτε μια προαιρετική τιμή που δεν έχει καθοριστεί.",
                "default_known": false,
                "enum": [
                  "16:9",
                  "9:16",
                  "1:1"
                ],
                "enum_known": true,
                "maximum_length": null,
                "name": "aspect_ratio",
                "required": false,
                "type": "string"
              },
              {
                "conditions": "Χρησιμοποιήστε το τεκμηριωμένο πεδίο και τις αναφερόμενες επιλογές του επιλεγμένου μοντέλου· παραλείψτε μια προαιρετική τιμή που δεν έχει καθοριστεί.",
                "default_known": false,
                "enum": [
                  5,
                  10
                ],
                "enum_known": true,
                "maximum_length": null,
                "name": "duration",
                "required": false,
                "type": "integer"
              },
              {
                "conditions": "Χρησιμοποιήστε το τεκμηριωμένο πεδίο και τις αναφερόμενες επιλογές του επιλεγμένου μοντέλου· παραλείψτε μια προαιρετική τιμή που δεν έχει καθοριστεί.",
                "default_known": false,
                "enum_known": false,
                "maximum_length": null,
                "name": "end_image",
                "required": false,
                "type": "string"
              },
              {
                "conditions": "Δώστε το πραγματικό προσβάσιμο URL της εικόνας σας. Μια λίστα γίνεται δεκτή μόνο όταν το σχήμα της παραμέτρου ορίζει πίνακα.",
                "default_known": false,
                "enum_known": false,
                "maximum_length": null,
                "name": "image",
                "oneOf": [
                  {
                    "type": "string"
                  },
                  {
                    "items": {
                      "type": "string"
                    },
                    "maxItems": 10,
                    "type": "array"
                  }
                ],
                "required": true,
                "type": "string or array<string>"
              },
              {
                "conditions": "Χρησιμοποιήστε το τεκμηριωμένο πεδίο και τις αναφερόμενες επιλογές του επιλεγμένου μοντέλου· παραλείψτε μια προαιρετική τιμή που δεν έχει καθοριστεί.",
                "default_known": false,
                "enum_known": false,
                "maximum_length": null,
                "name": "negative_prompt",
                "required": false,
                "type": "string"
              },
              {
                "conditions": "Χρησιμοποιήστε το τεκμηριωμένο πεδίο και τις αναφερόμενες επιλογές του επιλεγμένου μοντέλου· παραλείψτε μια προαιρετική τιμή που δεν έχει καθοριστεί.",
                "default_known": false,
                "enum_known": false,
                "maximum_length": null,
                "name": "prompt",
                "required": true,
                "type": "string"
              }
            ],
            "request_schema": {
              "additionalProperties": true,
              "properties": {
                "aspect_ratio": {
                  "enum": [
                    "16:9",
                    "9:16",
                    "1:1"
                  ],
                  "type": "string"
                },
                "duration": {
                  "enum": [
                    5,
                    10
                  ],
                  "type": "integer"
                },
                "end_image": {
                  "type": "string"
                },
                "image": {
                  "oneOf": [
                    {
                      "type": "string"
                    },
                    {
                      "items": {
                        "type": "string"
                      },
                      "maxItems": 10,
                      "type": "array"
                    }
                  ]
                },
                "mode": {
                  "default": "std",
                  "enum": [
                    "std",
                    "pro"
                  ],
                  "type": "string"
                },
                "model": {
                  "enum": [
                    "kling-v2-1"
                  ],
                  "type": "string"
                },
                "negative_prompt": {
                  "type": "string"
                },
                "prompt": {
                  "type": "string"
                }
              },
              "required": [
                "model",
                "prompt",
                "image"
              ],
              "type": "object"
            },
            "schema_template": {
              "actual_file_preparation_required": true,
              "body": {
                "image": "YOUR_ACCESSIBLE_IMAGE_URL",
                "model": "kling-v2-1",
                "prompt": "A cat is walking on grass."
              },
              "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.",
              "Χρησιμοποιήστε το τεκμηριωμένο πεδίο και τις αναφερόμενες επιλογές του επιλεγμένου μοντέλου· παραλείψτε μια προαιρετική τιμή που δεν έχει καθοριστεί.",
              "Χρησιμοποιήστε το τεκμηριωμένο πεδίο και τις αναφερόμενες επιλογές του επιλεγμένου μοντέλου· παραλείψτε μια προαιρετική τιμή που δεν έχει καθοριστεί.",
              "Χρησιμοποιήστε το τεκμηριωμένο πεδίο και τις αναφερόμενες επιλογές του επιλεγμένου μοντέλου· παραλείψτε μια προαιρετική τιμή που δεν έχει καθοριστεί.",
              "Χρησιμοποιήστε το τεκμηριωμένο πεδίο και τις αναφερόμενες επιλογές του επιλεγμένου μοντέλου· παραλείψτε μια προαιρετική τιμή που δεν έχει καθοριστεί.",
              "Δώστε το πραγματικό προσβάσιμο URL της εικόνας σας. Μια λίστα γίνεται δεκτή μόνο όταν το σχήμα της παραμέτρου ορίζει πίνακα.",
              "Χρησιμοποιήστε το τεκμηριωμένο πεδίο και τις αναφερόμενες επιλογές του επιλεγμένου μοντέλου· παραλείψτε μια προαιρετική τιμή που δεν έχει καθοριστεί.",
              "Χρησιμοποιήστε το τεκμηριωμένο πεδίο και τις αναφερόμενες επιλογές του επιλεγμένου μοντέλου· παραλείψτε μια προαιρετική τιμή που δεν έχει καθοριστεί."
            ],
            "content_type": "application/json",
            "material_types": [
              "text",
              "image"
            ],
            "optional": [
              "mode",
              "aspect_ratio",
              "duration",
              "end_image",
              "negative_prompt"
            ],
            "required": [
              "model",
              "prompt",
              "image"
            ]
          },
          "lifecycle": {
            "assets": [
              {
                "http": "GET",
                "path": "/v1/media/assets"
              },
              {
                "http": "GET",
                "path": "/v1/media/assets/{asset_id}"
              }
            ],
            "cancel_endpoint": null,
            "completed_states": [
              "completed"
            ],
            "content": [
              {
                "http": "GET",
                "path": "/v1/videos/{request_id}/content",
                "query": {
                  "index": "actual output index; default 0"
                }
              }
            ],
            "create": {
              "http": "POST",
              "path": "/v1/videos"
            },
            "failed_states": [
              "failed"
            ],
            "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": [
              "pending",
              "processing"
            ],
            "state_field": "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": "task_id",
                "type": "string"
              },
              {
                "name": "status",
                "type": "string"
              },
              {
                "name": "video_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\n: \"${AILOOT_IMAGE_URL:?Set an actual customer material or documented value}\"\nexport AILOOT_IMAGE_URL\npython3 - <<'PY_REQUEST'\nimport json,os\nfrom pathlib import Path\np=json.loads('{\"model\": \"kling-v2-1\", \"prompt\": \"A cat is walking on grass.\", \"image\": \"YOUR_ACCESSIBLE_IMAGE_URL\"}')\np['image']=os.environ['AILOOT_IMAGE_URL']\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",
          "image"
        ],
        "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",
        "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",
  "nativeProvenance": {
    "input_facts_canonical_sha256": "8c13dbc2f7f3eef2723fe09b2f555b9139769ab156c9cef5cf00dda4fa03aa0a",
    "input_html_sha256": "832a39c37b72af42fb307e156115b594c6ca0ef407f7a9ea229a64c57f527ccc",
    "private_audit_sha256": "0296821105509d780e69f5f8f70543be731f554c120cb963f74ae543beb9f015",
    "role": "historical-normalized-input-audit-hashes",
    "schema": "ailoot-native-model-provenance-v2"
  },
  "page": {
    "canonical": "https://ailoot.ai/models/el/kling-v2-1/",
    "description": "Το Kling v2.1 δημιουργεί βίντεο από μια εικόνα αναφοράς και μια γραπτή περιγραφή κίνησης. Η τεκμηριωμένη καταχώριση δημιουργίας βίντεο από εικόνα αναφέρει επιλογές διάρκειας πέντε και δέκα δευτερολέπτων, με λειτουργίες std και pro για τον σχεδιασμό της σεκάνς.",
    "locale": "el",
    "md_url": "https://ailoot.ai/models/el/kling-v2-1/index.md",
    "title": "Kling v2.1 — Ailoot",
    "url": "https://ailoot.ai/models/el/kling-v2-1/"
  },
  "rawModel": {
    "about": "Το Kling v2.1 είναι μοντέλο βίντεο του Kling με δυνατότητα δημιουργίας βίντεο από εικόνα στον τεκμηριωμένο κατάλογο. Ξεκινήστε από μια στατική εικόνα αναφοράς που καθορίζει τη σκηνή και κατόπιν περιγράψτε την κίνηση που τη μετατρέπει σε χρήσιμο πλάνο. Μια εικόνα προϊόντος, ένα εικονογραφημένο σκηνικό ή ένα καρέ χαρακτήρα μπορούν να δώσουν τη σύνθεση από την οποία αναπτύσσεται η σεκάνς.\n\nΕπιλέξτε μια αναφορά που καθιστά κατανοητή την επιθυμητή δράση. Ένα κύριο θέμα τοποθετημένο δίπλα σε μια πόρτα προσφέρει σαφές σημείο εκκίνησης για την είσοδο σε ένα δωμάτιο· ένα αντικείμενο πάνω σε μια επιφάνεια χωρίς οπτική ακαταστασία κάνει το περίγραμμά του ευκολότερο στον έλεγχο. Διατηρήστε την αναφορά στην αρχική της ποιότητα και κρατήστε τη συνδεδεμένη με το παραγόμενο κλιπ.\n\nΠεριγράψτε μία συνεκτική ενότητα δράσης. Προσδιορίστε το κύριο θέμα, την κατεύθυνση κίνησης και την επιθυμητή τελική κατάσταση. Για μια αλληλεπίδραση, εξηγήστε τη σχέση ανάμεσα στους συμμετέχοντες: ποιος απλώνει το χέρι, τι αγγίζει και πού ολοκληρώνεται η δράση. Χρησιμοποιήστε ορατές λεπτομέρειες που μπορούν να ελεγχθούν στην παραγόμενη σεκάνς.\n\nΠροσαρμόστε το κάδρο του πλάνου στον προορισμό του. Η τεκμηριωμένη καταχώριση δημιουργίας βίντεο από εικόνα αναφέρει οριζόντιες, κατακόρυφες και τετράγωνες αναλογίες, με επιλογές διάρκειας πέντε και δέκα δευτερολέπτων. Καθορίστε πού πρέπει να παραμένει το κύριο θέμα μέσα στο επιλεγμένο κάδρο. Μια κατακόρυφη σύνθεση και ένα ευρύ γενικό πλάνο θέτουν διαφορετικές απαιτήσεις στην ίδια κίνηση.\n\nΤα τεκμηριωμένα χειριστήρια δημιουργίας βίντεο από εικόνα περιλαμβάνουν τις λειτουργίες παραγωγής std και pro. Κρατήστε την επιλεγμένη λειτουργία μαζί με το αποτέλεσμα όταν συγκρίνετε εκδοχές. Αξιολογήστε το αποτέλεσμα σε σχέση με την περιγραφή: τη ζητούμενη δράση, τη σύνθεση, την εμφάνιση του κύριου θέματος και τον χρονισμό. Η ονομασία μιας λειτουργίας από μόνη της δεν περιγράφει πόσο καλά ένα συγκεκριμένο πλάνο καλύπτει αυτές τις ανάγκες.\n\nΧρησιμοποιήστε τις οδηγίες για την κάμερα ώστε να υποστηρίζουν το συμβάν. Μια σταθερή κάμερα μπορεί να δείχνει μια στάση σώματος που αλλάζει, μια πλάγια κίνηση μπορεί να αποκαλύπτει έναν χώρο και μια κίνηση προς τα εμπρός μπορεί να τονίζει μια λεπτομέρεια. Αναφέρετε την επιθυμητή σχέση ανάμεσα στο κύριο θέμα και την οπτική γωνία, ώστε η κίνηση της κάμερας να μην ανταγωνίζεται τη δράση που χρειάζεται να παρακολουθήσει ο θεατής.\n\nΕλέγξτε τη συνέχεια σε ολόκληρο το κλιπ. Για ένα προϊόν, εξετάστε το σχήμα, τις σημάνσεις και την εμφάνιση του υλικού καθώς αλλάζει η οπτική γωνία. Για ένα άτομο, εξετάστε τα χαρακτηριστικά του προσώπου, τα χέρια, τα ρούχα και την επαφή με κοντινά αντικείμενα. Ελέγξτε την τελική σύνθεση σε σχέση με το επόμενο πλάνο ή γραφικό του μοντάζ.\n\nΑποθηκεύστε το ολοκληρωμένο βίντεο, την αναφορά, την προτροπή και τις επιλεγμένες ρυθμίσεις ως ενιαία καταγραφή του πλάνου. Όταν το αναθεωρείτε, προσδιορίστε τη συγκεκριμένη οπτική απόκλιση και διατηρήστε τα στοιχεία που ήδη εξυπηρετούν τη σκηνή. Συγκρίνετε τις εκδοχές στο ίδιο μέγεθος και με την ίδια ταχύτητα αναπαραγωγής, ώστε η επιλογή να αντανακλά την κίνηση και τη σύνθεση που θα δει πραγματικά το κοινό.",
    "about_sha256": "cf442fa6d93f9a6b7882e20909987dd525dcf540b1f5576443be94051e60e68c",
    "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",
    "formats": [
      "videos"
    ],
    "id": "kling-v2-1",
    "input": [
      "text",
      "image"
    ],
    "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": [
                "completed"
              ],
              "content": [
                {
                  "http": "GET",
                  "path": "/v1/videos/{request_id}/content",
                  "query": {
                    "index": "actual output index; default 0"
                  }
                }
              ],
              "create": {
                "http": "POST",
                "path": "/v1/videos"
              },
              "failed_states": [
                "failed"
              ],
              "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": [
                "pending",
                "processing"
              ],
              "state_field": "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": "task_id",
                  "type": "string"
                },
                {
                  "name": "status",
                  "type": "string"
                },
                {
                  "name": "video_url",
                  "type": "string"
                }
              ],
              "maximum_outputs": null
            },
            "parameters": [
              {
                "conditions": "Χρησιμοποιήστε ακριβώς αυτόν τον επιλογέα δρομολόγησης του Ailoot.",
                "default_known": false,
                "enum": [
                  "kling-v2-1"
                ],
                "enum_known": true,
                "maximum_length": null,
                "name": "model",
                "required": true,
                "type": "string"
              },
              {
                "conditions": "Χρησιμοποιήστε το τεκμηριωμένο πεδίο και τις αναφερόμενες επιλογές του επιλεγμένου μοντέλου· παραλείψτε μια προαιρετική τιμή που δεν έχει καθοριστεί.",
                "default": "std",
                "default_known": true,
                "enum": [
                  "std",
                  "pro"
                ],
                "enum_known": true,
                "maximum_length": null,
                "name": "mode",
                "required": false,
                "type": "string"
              },
              {
                "conditions": "Χρησιμοποιήστε το τεκμηριωμένο πεδίο και τις αναφερόμενες επιλογές του επιλεγμένου μοντέλου· παραλείψτε μια προαιρετική τιμή που δεν έχει καθοριστεί.",
                "default_known": false,
                "enum": [
                  "16:9",
                  "9:16",
                  "1:1"
                ],
                "enum_known": true,
                "maximum_length": null,
                "name": "aspect_ratio",
                "required": false,
                "type": "string"
              },
              {
                "conditions": "Χρησιμοποιήστε το τεκμηριωμένο πεδίο και τις αναφερόμενες επιλογές του επιλεγμένου μοντέλου· παραλείψτε μια προαιρετική τιμή που δεν έχει καθοριστεί.",
                "default_known": false,
                "enum": [
                  5,
                  10
                ],
                "enum_known": true,
                "maximum_length": null,
                "name": "duration",
                "required": false,
                "type": "integer"
              },
              {
                "conditions": "Χρησιμοποιήστε το τεκμηριωμένο πεδίο και τις αναφερόμενες επιλογές του επιλεγμένου μοντέλου· παραλείψτε μια προαιρετική τιμή που δεν έχει καθοριστεί.",
                "default_known": false,
                "enum_known": false,
                "maximum_length": null,
                "name": "end_image",
                "required": false,
                "type": "string"
              },
              {
                "conditions": "Δώστε το πραγματικό προσβάσιμο URL της εικόνας σας. Μια λίστα γίνεται δεκτή μόνο όταν το σχήμα της παραμέτρου ορίζει πίνακα.",
                "default_known": false,
                "enum_known": false,
                "maximum_length": null,
                "name": "image",
                "oneOf": [
                  {
                    "type": "string"
                  },
                  {
                    "items": {
                      "type": "string"
                    },
                    "maxItems": 10,
                    "type": "array"
                  }
                ],
                "required": true,
                "type": "string or array<string>"
              },
              {
                "conditions": "Χρησιμοποιήστε το τεκμηριωμένο πεδίο και τις αναφερόμενες επιλογές του επιλεγμένου μοντέλου· παραλείψτε μια προαιρετική τιμή που δεν έχει καθοριστεί.",
                "default_known": false,
                "enum_known": false,
                "maximum_length": null,
                "name": "negative_prompt",
                "required": false,
                "type": "string"
              },
              {
                "conditions": "Χρησιμοποιήστε το τεκμηριωμένο πεδίο και τις αναφερόμενες επιλογές του επιλεγμένου μοντέλου· παραλείψτε μια προαιρετική τιμή που δεν έχει καθοριστεί.",
                "default_known": false,
                "enum_known": false,
                "maximum_length": null,
                "name": "prompt",
                "required": true,
                "type": "string"
              }
            ],
            "request_schema": {
              "additionalProperties": true,
              "properties": {
                "aspect_ratio": {
                  "enum": [
                    "16:9",
                    "9:16",
                    "1:1"
                  ],
                  "type": "string"
                },
                "duration": {
                  "enum": [
                    5,
                    10
                  ],
                  "type": "integer"
                },
                "end_image": {
                  "type": "string"
                },
                "image": {
                  "oneOf": [
                    {
                      "type": "string"
                    },
                    {
                      "items": {
                        "type": "string"
                      },
                      "maxItems": 10,
                      "type": "array"
                    }
                  ]
                },
                "mode": {
                  "default": "std",
                  "enum": [
                    "std",
                    "pro"
                  ],
                  "type": "string"
                },
                "model": {
                  "enum": [
                    "kling-v2-1"
                  ],
                  "type": "string"
                },
                "negative_prompt": {
                  "type": "string"
                },
                "prompt": {
                  "type": "string"
                }
              },
              "required": [
                "model",
                "prompt",
                "image"
              ],
              "type": "object"
            },
            "schema_template": {
              "actual_file_preparation_required": true,
              "body": {
                "image": "YOUR_ACCESSIBLE_IMAGE_URL",
                "model": "kling-v2-1",
                "prompt": "A cat is walking on grass."
              },
              "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.",
              "Χρησιμοποιήστε το τεκμηριωμένο πεδίο και τις αναφερόμενες επιλογές του επιλεγμένου μοντέλου· παραλείψτε μια προαιρετική τιμή που δεν έχει καθοριστεί.",
              "Χρησιμοποιήστε το τεκμηριωμένο πεδίο και τις αναφερόμενες επιλογές του επιλεγμένου μοντέλου· παραλείψτε μια προαιρετική τιμή που δεν έχει καθοριστεί.",
              "Χρησιμοποιήστε το τεκμηριωμένο πεδίο και τις αναφερόμενες επιλογές του επιλεγμένου μοντέλου· παραλείψτε μια προαιρετική τιμή που δεν έχει καθοριστεί.",
              "Χρησιμοποιήστε το τεκμηριωμένο πεδίο και τις αναφερόμενες επιλογές του επιλεγμένου μοντέλου· παραλείψτε μια προαιρετική τιμή που δεν έχει καθοριστεί.",
              "Δώστε το πραγματικό προσβάσιμο URL της εικόνας σας. Μια λίστα γίνεται δεκτή μόνο όταν το σχήμα της παραμέτρου ορίζει πίνακα.",
              "Χρησιμοποιήστε το τεκμηριωμένο πεδίο και τις αναφερόμενες επιλογές του επιλεγμένου μοντέλου· παραλείψτε μια προαιρετική τιμή που δεν έχει καθοριστεί.",
              "Χρησιμοποιήστε το τεκμηριωμένο πεδίο και τις αναφερόμενες επιλογές του επιλεγμένου μοντέλου· παραλείψτε μια προαιρετική τιμή που δεν έχει καθοριστεί."
            ],
            "content_type": "application/json",
            "material_types": [
              "text",
              "image"
            ],
            "optional": [
              "mode",
              "aspect_ratio",
              "duration",
              "end_image",
              "negative_prompt"
            ],
            "required": [
              "model",
              "prompt",
              "image"
            ]
          },
          "lifecycle": {
            "assets": [
              {
                "http": "GET",
                "path": "/v1/media/assets"
              },
              {
                "http": "GET",
                "path": "/v1/media/assets/{asset_id}"
              }
            ],
            "cancel_endpoint": null,
            "completed_states": [
              "completed"
            ],
            "content": [
              {
                "http": "GET",
                "path": "/v1/videos/{request_id}/content",
                "query": {
                  "index": "actual output index; default 0"
                }
              }
            ],
            "create": {
              "http": "POST",
              "path": "/v1/videos"
            },
            "failed_states": [
              "failed"
            ],
            "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": [
              "pending",
              "processing"
            ],
            "state_field": "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": "task_id",
                "type": "string"
              },
              {
                "name": "status",
                "type": "string"
              },
              {
                "name": "video_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\n: \"${AILOOT_IMAGE_URL:?Set an actual customer material or documented value}\"\nexport AILOOT_IMAGE_URL\npython3 - <<'PY_REQUEST'\nimport json,os\nfrom pathlib import Path\np=json.loads('{\"model\": \"kling-v2-1\", \"prompt\": \"A cat is walking on grass.\", \"image\": \"YOUR_ACCESSIBLE_IMAGE_URL\"}')\np['image']=os.environ['AILOOT_IMAGE_URL']\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",
          "image"
        ],
        "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",
        "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",
        "request_model_id": "kling-v2-1",
        "route_label": "Ultra"
      }
    ],
    "name": "Kling v2.1",
    "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 δημιουργεί βίντεο από μια εικόνα αναφοράς και μια γραπτή περιγραφή κίνησης. Η τεκμηριωμένη καταχώριση δημιουργίας βίντεο από εικόνα αναφέρει επιλογές διάρκειας πέντε και δέκα δευτερολέπτων, με λειτουργίες std και pro για τον σχεδιασμό της σεκάνς.",
    "short_sha256": "725affee5295a72d63650068f51d658e7f4b79647b532735c5a8efbb6e2b5499"
  },
  "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 δημιουργεί βίντεο από μια εικόνα αναφοράς και μια γραπτή περιγραφή κίνησης. Η τεκμηριωμένη καταχώριση δημιουργίας βίντεο από εικόνα αναφέρει επιλογές διάρκειας πέντε και δέκα δευτερολέπτων, με λειτουργίες std και pro για τον σχεδιασμό της σεκάνς.",
  "source": {
    "audit_sha256": "2e00086bcbfc28e64d0cebe97aa47c17d8d5618963027f8ffb9dc6123d7d25b1",
    "bridge_map_sha256": "1125275768b9636fc8461bc7da5061239a81ddfe508e2557843ca42c58ab0036",
    "raw_model_json_sha256": "fdf0961cf8c042d4ff7fd582d84c5fb1e89457aef29a2af93d0f7080021dbc95",
    "renderer_sha256": "3ed36f7af4f78822bafbd174fdcaed7b698a18a86efe254253d37f1b098a7566"
  },
  "sourceRevision": "ab4bbf336a705d06146816e31f9b2bf745d40047f7d70a71e924f42aa6a979c7"
}
