{
  "aboutHtml": "<p>Μια ταχύτερη έκδοση δημιουργίας εικόνων</p><p>Το Seedream 5.0 Flash είναι το μοντέλο δημιουργίας και επεξεργασίας εικόνων της ByteDance Seed για ροές που δίνουν προτεραιότητα στην ταχύτητα δημιουργίας. Ο οδηγός Pro/Flash του κατασκευαστή περιγράφει τόσο δημιουργία από κείμενο όσο και από εικόνα με μία ή πολλές αναφορές. Διακρίνει την ταχύτερη δημιουργία Flash από την προτεραιότητα υψηλότερης ποιότητας εικόνας του Pro, χωρίς να καθορίζει σταθερό χρόνο απόκρισης για κάθε περιγραφή.</p><p>Οι καθοριστικές κοινές δυνατότητες είναι διαδραστική επεξεργασία, αποσύνθεση επιπέδων και εγγενής πολύγλωσση δημιουργία. Η συνήθης δημιουργία επιστρέφει μία ολοκληρωμένη εικόνα. Η ροή Flash του κατασκευαστή δεν υποστηρίζει διαδοχική δημιουργία σχετικών εικόνων, αναζήτηση ιστού ή ροή εξόδου εικόνων. Η βελτιστοποίηση προτροπής χρησιμοποιεί την τυπική λειτουργία· ο χωριστός έλεγχος γρήγορης βελτιστοποίησης ανήκει στο Pro αντί στο Flash.</p><p>Δημιουργία από περιγραφή και αναφορές</p><p>Δηλώστε την επιθυμητή εικόνα, το κύριο θέμα, τη σύνθεση και την οπτική απόδοση και προσδιορίστε έπειτα τι ελέγχει κάθε αναφορά. Για οπτικό προϊόντος, διαχωρίστε την αναφορά που καθορίζει το αντικείμενο από εκείνη που παρέχει παλέτα ή υλικό επιφάνειας. Το «Κράτησε τη σιλουέτα και την οπτική γωνία του αντικειμένου από την πρώτη εικόνα· χρησιμοποίησε τη δεύτερη μόνο για την ήπια παλέτα φόντου» δίνει στις αναφορές διακριτούς ρόλους.</p><p>Ο κατασκευαστής συνιστά σύντομες προτροπές, όχι περισσότερους από 300 κινεζικούς χαρακτήρες ή 600 αγγλικές λέξεις. Πρόκειται για οδηγία προετοιμασίας αντί για δηλωμένο αυστηρό όριο εισόδου κειμένου. Καταγράψτε πρώτα τις αποφασιστικές απαιτήσεις, μαζί με ακριβή διατύπωση που πρέπει να εμφανιστεί, επιθυμητή αναλογία και λεπτομέρειες που πρέπει να μείνουν αμετάβλητες. Εξετάστε την ολοκληρωμένη εικόνα έναντι αυτής της λίστας, αντί να βασίζεστε μόνο στη συνολική εμφάνιση.</p><p>Χωρικά καθοδηγούμενη επεξεργασία</p><p>Το Flash μπορεί να χρησιμοποιεί σημεία, πλαίσια οριοθέτησης, βέλη και ελεύθερες σημάνσεις για να προσδιορίζει πού πρέπει να γίνει επεξεργασία. Δώστε την αρχική εικόνα μαζί με θέση και αλλαγή. Για ιδέα εσωτερικού χώρου, σημειώστε την καρέκλα, ζητήστε αντικατάσταση υφάσματος και προσδιορίστε δάπεδο, τοίχο, γωνία κάμερας και κοντινά αντικείμενα που θα διατηρηθούν. Αν οι σημάνσεις είναι μόνο καθοδήγηση, ζητήστε ρητά την αφαίρεσή τους από την ολοκληρωμένη εικόνα.</p><p>Ο οδηγός επεξεργασίας συντεταγμένων του κατασκευαστή χρησιμοποιεί ετικέτες &lt;point&gt; και &lt;bbox&gt; με συντεταγμένες κανονικοποιημένες στο 0–999 ως προς τη συγκεκριμένη εικόνα εισόδου. Ένα σημείο περιέχει x και y· ένα πλαίσιο περιέχει τις συντεταγμένες επάνω αριστερά και κάτω δεξιά. Προσδιορίστε αριθμό εικόνας και αντικείμενο στόχου, ιδίως όταν ένα πλαίσιο περιλαμβάνει αρκετά θέματα. Για επεξεργασία μεταξύ εικόνων, διακρίνετε το αντικείμενο που θα ληφθεί από μία αναφορά και την περιοχή προορισμού σε άλλη.</p><p>Χρησιμοποιήστε τις ίδιες τις διαστάσεις της εμφανιζόμενης εικόνας όταν εξάγετε την αναλογική θέση· η μεγέθυνση ή μετατόπιση καμβά και οι συντεταγμένες προγράμματος περιήγησης δεν είναι οι κανονικοποιημένες συντεταγμένες εικόνας. Περιγράψτε προστατευμένες περιοχές μαζί με την επεξεργασμένη. Συγκρίνετε προοπτική, φωτισμό και γύρω λεπτομέρειες αποτελέσματος με την αρχική πηγή.</p><p>Διαχωρισμός σύνθεσης σε επεξεργάσιμα επίπεδα</p><p>Η αποσύνθεση επιπέδων είναι διακριτή λειτουργία που δέχεται ακριβώς μία εικόνα και επιστρέφει εικόνα βάσης μαζί με έως 16 ανεξάρτητα επίπεδα. Κάθε επίπεδο είναι PNG με alpha. Μια προτροπή μπορεί να ονομάζει τα στοιχεία προς διαχωρισμό, όπως τίτλο, κύριο θέμα και διακοσμητικά· χωρίς προτροπή αποσύνθεσης, το μοντέλο προσδιορίζει αυτόματα τα κύρια στοιχεία.</p><p>Τα αποτελέσματα περιλαμβάνουν ονόματα επιπέδων, περιγραφές, σειρά στοίβαξης και πλαίσια τοποθέτησης. Χρησιμοποιήστε την εικόνα βάσης με δείκτη στοίβαξης μηδέν και τοποθετήστε τα άλλα επίπεδα σε αύξουσα σειρά στοίβαξης. Τα απόλυτα πλαίσια περιγράφουν θέση στην εικόνα βάσης εξόδου· τα κανονικοποιημένα πλαίσια περιγράφουν αναλογική θέση σε διαφορετικό καμβά. Κρατήστε αυτά τα επιστρεφόμενα μεταδεδομένα τοποθέτησης με τα αρχεία εικόνας, ώστε η αρχική σύνθεση να ανακατασκευάζεται πριν αναδιαταχθεί.</p><p>Για αναθεώρηση αφίσας, διαχωρίστε το κύριο εικαστικό από τον τίτλο και τα διακοσμητικά και εξετάστε κατόπιν άκρα και κάθε αποκατεστημένη περιοχή φόντου. Ένα διαφανές επίπεδο μπορεί να υποβληθεί σε επεξεργασία ως μία είσοδος με κανάλι alpha, με έξοδο διαφανούς PNG. Η επιλογή διαφανούς φόντου αφορά αυτή τη ροή επεξεργασίας εικόνας μίας εισόδου· η συνήθης δημιουργία από κείμενο είναι χωριστή λειτουργία.</p><p>Πολύγλωσση σύνθεση</p><p>Εκτός από κινεζικά και αγγλικά, ο κατασκευαστής τεκμηριώνει εγγενή υποστήριξη προτροπών και κειμένου εικόνας για ρωσικά, αραβικά, φιλιππινέζικα, ταϊλανδικά, τουρκικά, κορεατικά, μαλαϊκά, ισπανικά, πορτογαλικά, ινδονησιακά, γαλλικά, γερμανικά, βιετναμικά και ιαπωνικά. Δώστε την ακριβή εγκεκριμένη διατύπωση και κατεύθυνση ανάγνωσης και προσδιορίστε ποια περιοχή περιέχει κάθε μπλοκ κειμένου. Ελέγξτε τόνους, ενωμένους χαρακτήρες, αλλαγές γραμμής και μικρές ετικέτες στην τελική εικόνα.</p><p>Αρχεία αναφοράς και προδιαγραφές εξόδου</p><p>Η δημιουργία εικόνας δέχεται έως 10 αναφορές σε JPEG, PNG, WebP, BMP, TIFF, GIF, HEIC ή HEIF. Καθεμία μπορεί να είναι έως 30 MB, με αμφότερες τις πλευρές πάνω από 14 pixel, 196–36,000,000 συνολικά pixel και αναλογία από 1:16 έως 16:1. Η αποσύνθεση επιπέδων απαιτεί αντίθετα ένα JPEG ή PNG 262,144–36,000,000 pixel, έως 30 MB, στο ίδιο εύρος αναλογίας.</p><p>Η δημιουργία προσφέρει βαθμίδες εξόδου 1K, 1.5K και 2K, με προεπιλογή 2K, ή ρητές διαστάσεις με 921,600–4,624,220 συνολικά pixel και αναλογίες από 1:16 έως 16:1. Και οι δύο περιορισμοί ισχύουν για προσαρμοσμένες διαστάσεις. Η έξοδος επιπέδων χρησιμοποιεί 1K, 1.5K, 2K ή auto, με προεπιλογή auto· η βάση και κάθε επίπεδο διατηρούν τις αντίστοιχες αρχικές αναλογίες τους.</p><p>Οι ολοκληρωμένες εικόνες είναι JPEG ή PNG. Η μορφή εικόνας βάσης μπορεί να επιλέγεται χωριστά, ενώ τα αποσυντεθειμένα επίπεδα παραμένουν PNG με alpha. Η παράδοση μπορεί να χρησιμοποιεί κωδικοποιημένα δεδομένα εικόνας ή συνδέσμους λήψης που διατηρούνται για 24 ώρες. Αποθηκεύστε κάθε επιστρεφόμενη εικόνα και τα μεταδεδομένα της για την επιθυμητή σχεδιαστική ροή. Εξετάστε κείμενο, επεξεργασμένες λεπτομέρειες και ευθυγράμμιση επιπέδων στο μέγεθος χρήσης του εικαστικού.</p>",
  "aboutText": "Μια ταχύτερη έκδοση δημιουργίας εικόνων\n\nΤο Seedream 5.0 Flash είναι το μοντέλο δημιουργίας και επεξεργασίας εικόνων της ByteDance Seed για ροές που δίνουν προτεραιότητα στην ταχύτητα δημιουργίας. Ο οδηγός Pro/Flash του κατασκευαστή περιγράφει τόσο δημιουργία από κείμενο όσο και από εικόνα με μία ή πολλές αναφορές. Διακρίνει την ταχύτερη δημιουργία Flash από την προτεραιότητα υψηλότερης ποιότητας εικόνας του Pro, χωρίς να καθορίζει σταθερό χρόνο απόκρισης για κάθε περιγραφή.\n\nΟι καθοριστικές κοινές δυνατότητες είναι διαδραστική επεξεργασία, αποσύνθεση επιπέδων και εγγενής πολύγλωσση δημιουργία. Η συνήθης δημιουργία επιστρέφει μία ολοκληρωμένη εικόνα. Η ροή Flash του κατασκευαστή δεν υποστηρίζει διαδοχική δημιουργία σχετικών εικόνων, αναζήτηση ιστού ή ροή εξόδου εικόνων. Η βελτιστοποίηση προτροπής χρησιμοποιεί την τυπική λειτουργία· ο χωριστός έλεγχος γρήγορης βελτιστοποίησης ανήκει στο Pro αντί στο Flash.\n\nΔημιουργία από περιγραφή και αναφορές\n\nΔηλώστε την επιθυμητή εικόνα, το κύριο θέμα, τη σύνθεση και την οπτική απόδοση και προσδιορίστε έπειτα τι ελέγχει κάθε αναφορά. Για οπτικό προϊόντος, διαχωρίστε την αναφορά που καθορίζει το αντικείμενο από εκείνη που παρέχει παλέτα ή υλικό επιφάνειας. Το «Κράτησε τη σιλουέτα και την οπτική γωνία του αντικειμένου από την πρώτη εικόνα· χρησιμοποίησε τη δεύτερη μόνο για την ήπια παλέτα φόντου» δίνει στις αναφορές διακριτούς ρόλους.\n\nΟ κατασκευαστής συνιστά σύντομες προτροπές, όχι περισσότερους από 300 κινεζικούς χαρακτήρες ή 600 αγγλικές λέξεις. Πρόκειται για οδηγία προετοιμασίας αντί για δηλωμένο αυστηρό όριο εισόδου κειμένου. Καταγράψτε πρώτα τις αποφασιστικές απαιτήσεις, μαζί με ακριβή διατύπωση που πρέπει να εμφανιστεί, επιθυμητή αναλογία και λεπτομέρειες που πρέπει να μείνουν αμετάβλητες. Εξετάστε την ολοκληρωμένη εικόνα έναντι αυτής της λίστας, αντί να βασίζεστε μόνο στη συνολική εμφάνιση.\n\nΧωρικά καθοδηγούμενη επεξεργασία\n\nΤο Flash μπορεί να χρησιμοποιεί σημεία, πλαίσια οριοθέτησης, βέλη και ελεύθερες σημάνσεις για να προσδιορίζει πού πρέπει να γίνει επεξεργασία. Δώστε την αρχική εικόνα μαζί με θέση και αλλαγή. Για ιδέα εσωτερικού χώρου, σημειώστε την καρέκλα, ζητήστε αντικατάσταση υφάσματος και προσδιορίστε δάπεδο, τοίχο, γωνία κάμερας και κοντινά αντικείμενα που θα διατηρηθούν. Αν οι σημάνσεις είναι μόνο καθοδήγηση, ζητήστε ρητά την αφαίρεσή τους από την ολοκληρωμένη εικόνα.\n\nΟ οδηγός επεξεργασίας συντεταγμένων του κατασκευαστή χρησιμοποιεί ετικέτες <point> και <bbox> με συντεταγμένες κανονικοποιημένες στο 0–999 ως προς τη συγκεκριμένη εικόνα εισόδου. Ένα σημείο περιέχει x και y· ένα πλαίσιο περιέχει τις συντεταγμένες επάνω αριστερά και κάτω δεξιά. Προσδιορίστε αριθμό εικόνας και αντικείμενο στόχου, ιδίως όταν ένα πλαίσιο περιλαμβάνει αρκετά θέματα. Για επεξεργασία μεταξύ εικόνων, διακρίνετε το αντικείμενο που θα ληφθεί από μία αναφορά και την περιοχή προορισμού σε άλλη.\n\nΧρησιμοποιήστε τις ίδιες τις διαστάσεις της εμφανιζόμενης εικόνας όταν εξάγετε την αναλογική θέση· η μεγέθυνση ή μετατόπιση καμβά και οι συντεταγμένες προγράμματος περιήγησης δεν είναι οι κανονικοποιημένες συντεταγμένες εικόνας. Περιγράψτε προστατευμένες περιοχές μαζί με την επεξεργασμένη. Συγκρίνετε προοπτική, φωτισμό και γύρω λεπτομέρειες αποτελέσματος με την αρχική πηγή.\n\nΔιαχωρισμός σύνθεσης σε επεξεργάσιμα επίπεδα\n\nΗ αποσύνθεση επιπέδων είναι διακριτή λειτουργία που δέχεται ακριβώς μία εικόνα και επιστρέφει εικόνα βάσης μαζί με έως 16 ανεξάρτητα επίπεδα. Κάθε επίπεδο είναι PNG με alpha. Μια προτροπή μπορεί να ονομάζει τα στοιχεία προς διαχωρισμό, όπως τίτλο, κύριο θέμα και διακοσμητικά· χωρίς προτροπή αποσύνθεσης, το μοντέλο προσδιορίζει αυτόματα τα κύρια στοιχεία.\n\nΤα αποτελέσματα περιλαμβάνουν ονόματα επιπέδων, περιγραφές, σειρά στοίβαξης και πλαίσια τοποθέτησης. Χρησιμοποιήστε την εικόνα βάσης με δείκτη στοίβαξης μηδέν και τοποθετήστε τα άλλα επίπεδα σε αύξουσα σειρά στοίβαξης. Τα απόλυτα πλαίσια περιγράφουν θέση στην εικόνα βάσης εξόδου· τα κανονικοποιημένα πλαίσια περιγράφουν αναλογική θέση σε διαφορετικό καμβά. Κρατήστε αυτά τα επιστρεφόμενα μεταδεδομένα τοποθέτησης με τα αρχεία εικόνας, ώστε η αρχική σύνθεση να ανακατασκευάζεται πριν αναδιαταχθεί.\n\nΓια αναθεώρηση αφίσας, διαχωρίστε το κύριο εικαστικό από τον τίτλο και τα διακοσμητικά και εξετάστε κατόπιν άκρα και κάθε αποκατεστημένη περιοχή φόντου. Ένα διαφανές επίπεδο μπορεί να υποβληθεί σε επεξεργασία ως μία είσοδος με κανάλι alpha, με έξοδο διαφανούς PNG. Η επιλογή διαφανούς φόντου αφορά αυτή τη ροή επεξεργασίας εικόνας μίας εισόδου· η συνήθης δημιουργία από κείμενο είναι χωριστή λειτουργία.\n\nΠολύγλωσση σύνθεση\n\nΕκτός από κινεζικά και αγγλικά, ο κατασκευαστής τεκμηριώνει εγγενή υποστήριξη προτροπών και κειμένου εικόνας για ρωσικά, αραβικά, φιλιππινέζικα, ταϊλανδικά, τουρκικά, κορεατικά, μαλαϊκά, ισπανικά, πορτογαλικά, ινδονησιακά, γαλλικά, γερμανικά, βιετναμικά και ιαπωνικά. Δώστε την ακριβή εγκεκριμένη διατύπωση και κατεύθυνση ανάγνωσης και προσδιορίστε ποια περιοχή περιέχει κάθε μπλοκ κειμένου. Ελέγξτε τόνους, ενωμένους χαρακτήρες, αλλαγές γραμμής και μικρές ετικέτες στην τελική εικόνα.\n\nΑρχεία αναφοράς και προδιαγραφές εξόδου\n\nΗ δημιουργία εικόνας δέχεται έως 10 αναφορές σε JPEG, PNG, WebP, BMP, TIFF, GIF, HEIC ή HEIF. Καθεμία μπορεί να είναι έως 30 MB, με αμφότερες τις πλευρές πάνω από 14 pixel, 196–36,000,000 συνολικά pixel και αναλογία από 1:16 έως 16:1. Η αποσύνθεση επιπέδων απαιτεί αντίθετα ένα JPEG ή PNG 262,144–36,000,000 pixel, έως 30 MB, στο ίδιο εύρος αναλογίας.\n\nΗ δημιουργία προσφέρει βαθμίδες εξόδου 1K, 1.5K και 2K, με προεπιλογή 2K, ή ρητές διαστάσεις με 921,600–4,624,220 συνολικά pixel και αναλογίες από 1:16 έως 16:1. Και οι δύο περιορισμοί ισχύουν για προσαρμοσμένες διαστάσεις. Η έξοδος επιπέδων χρησιμοποιεί 1K, 1.5K, 2K ή auto, με προεπιλογή auto· η βάση και κάθε επίπεδο διατηρούν τις αντίστοιχες αρχικές αναλογίες τους.\n\nΟι ολοκληρωμένες εικόνες είναι JPEG ή PNG. Η μορφή εικόνας βάσης μπορεί να επιλέγεται χωριστά, ενώ τα αποσυντεθειμένα επίπεδα παραμένουν PNG με alpha. Η παράδοση μπορεί να χρησιμοποιεί κωδικοποιημένα δεδομένα εικόνας ή συνδέσμους λήψης που διατηρούνται για 24 ώρες. Αποθηκεύστε κάθε επιστρεφόμενη εικόνα και τα μεταδεδομένα της για την επιθυμητή σχεδιαστική ροή. Εξετάστε κείμενο, επεξεργασμένες λεπτομέρειες και ευθυγράμμιση επιπέδων στο μέγεθος χρήσης του εικαστικού.",
  "editorialOverlay": {
    "copy_fields": null,
    "copy_sha256": null,
    "copy_source": null,
    "html_sha256": "e7bbe055cf2cc8ed2cebcbafd5fcb73899d00c7f3838a97a01389a8dddf36950",
    "module_sha256": "ee9dc1c50b1e6a8fb7fa062030fcb4646b9aaaeb08be513b723a5a92a7290f06",
    "raw_model_unchanged": true,
    "schema": "ailoot-native-model-editorial-v1"
  },
  "locale": "el",
  "methods": [
    {
      "html": "<div class=\"sheet-head\"><span class=\"mav\" aria-hidden=\"true\">•</span><h2 id=\"sheet-title\">ByteDance Seed: Seedream 5.0 Flash</h2><button class=\"icon-btn\" type=\"button\" data-close-sheet aria-label=\"Κλείσιμο\">×</button></div><div class=\"idline\"><span>ByteDance Seed /</span><code>bytedance-seed/seedream-5-0-flash</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|images|/v1/images/generations|bytedance-seed%2Fseedream-5-0-flash\">Εικόνες</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\">Δημιουργήστε μία ολοκληρωμένη εικόνα από μια γραπτή περιγραφή.</p><ul class=\"card-best-for\"><li>Δημιουργήστε μια στατική εικόνα προϊόντος</li><li>Εξερευνήστε μια οπτική ιδέα</li><li>Εικονογραφήστε μια σκηνή</li></ul><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>Μια ταχύτερη έκδοση δημιουργίας εικόνων</p><p>Το Seedream 5.0 Flash είναι το μοντέλο δημιουργίας και επεξεργασίας εικόνων της ByteDance Seed για ροές που δίνουν προτεραιότητα στην ταχύτητα δημιουργίας. Ο οδηγός Pro/Flash του κατασκευαστή περιγράφει τόσο δημιουργία από κείμενο όσο και από εικόνα με μία ή πολλές αναφορές. Διακρίνει την ταχύτερη δημιουργία Flash από την προτεραιότητα υψηλότερης ποιότητας εικόνας του Pro, χωρίς να καθορίζει σταθερό χρόνο απόκρισης για κάθε περιγραφή.</p><p>Οι καθοριστικές κοινές δυνατότητες είναι διαδραστική επεξεργασία, αποσύνθεση επιπέδων και εγγενής πολύγλωσση δημιουργία. Η συνήθης δημιουργία επιστρέφει μία ολοκληρωμένη εικόνα. Η ροή Flash του κατασκευαστή δεν υποστηρίζει διαδοχική δημιουργία σχετικών εικόνων, αναζήτηση ιστού ή ροή εξόδου εικόνων. Η βελτιστοποίηση προτροπής χρησιμοποιεί την τυπική λειτουργία· ο χωριστός έλεγχος γρήγορης βελτιστοποίησης ανήκει στο Pro αντί στο Flash.</p><p>Δημιουργία από περιγραφή και αναφορές</p><p>Δηλώστε την επιθυμητή εικόνα, το κύριο θέμα, τη σύνθεση και την οπτική απόδοση και προσδιορίστε έπειτα τι ελέγχει κάθε αναφορά. Για οπτικό προϊόντος, διαχωρίστε την αναφορά που καθορίζει το αντικείμενο από εκείνη που παρέχει παλέτα ή υλικό επιφάνειας. Το «Κράτησε τη σιλουέτα και την οπτική γωνία του αντικειμένου από την πρώτη εικόνα· χρησιμοποίησε τη δεύτερη μόνο για την ήπια παλέτα φόντου» δίνει στις αναφορές διακριτούς ρόλους.</p><p>Ο κατασκευαστής συνιστά σύντομες προτροπές, όχι περισσότερους από 300 κινεζικούς χαρακτήρες ή 600 αγγλικές λέξεις. Πρόκειται για οδηγία προετοιμασίας αντί για δηλωμένο αυστηρό όριο εισόδου κειμένου. Καταγράψτε πρώτα τις αποφασιστικές απαιτήσεις, μαζί με ακριβή διατύπωση που πρέπει να εμφανιστεί, επιθυμητή αναλογία και λεπτομέρειες που πρέπει να μείνουν αμετάβλητες. Εξετάστε την ολοκληρωμένη εικόνα έναντι αυτής της λίστας, αντί να βασίζεστε μόνο στη συνολική εμφάνιση.</p><p>Χωρικά καθοδηγούμενη επεξεργασία</p><p>Το Flash μπορεί να χρησιμοποιεί σημεία, πλαίσια οριοθέτησης, βέλη και ελεύθερες σημάνσεις για να προσδιορίζει πού πρέπει να γίνει επεξεργασία. Δώστε την αρχική εικόνα μαζί με θέση και αλλαγή. Για ιδέα εσωτερικού χώρου, σημειώστε την καρέκλα, ζητήστε αντικατάσταση υφάσματος και προσδιορίστε δάπεδο, τοίχο, γωνία κάμερας και κοντινά αντικείμενα που θα διατηρηθούν. Αν οι σημάνσεις είναι μόνο καθοδήγηση, ζητήστε ρητά την αφαίρεσή τους από την ολοκληρωμένη εικόνα.</p><p>Ο οδηγός επεξεργασίας συντεταγμένων του κατασκευαστή χρησιμοποιεί ετικέτες &lt;point&gt; και &lt;bbox&gt; με συντεταγμένες κανονικοποιημένες στο 0–999 ως προς τη συγκεκριμένη εικόνα εισόδου. Ένα σημείο περιέχει x και y· ένα πλαίσιο περιέχει τις συντεταγμένες επάνω αριστερά και κάτω δεξιά. Προσδιορίστε αριθμό εικόνας και αντικείμενο στόχου, ιδίως όταν ένα πλαίσιο περιλαμβάνει αρκετά θέματα. Για επεξεργασία μεταξύ εικόνων, διακρίνετε το αντικείμενο που θα ληφθεί από μία αναφορά και την περιοχή προορισμού σε άλλη.</p><p>Χρησιμοποιήστε τις ίδιες τις διαστάσεις της εμφανιζόμενης εικόνας όταν εξάγετε την αναλογική θέση· η μεγέθυνση ή μετατόπιση καμβά και οι συντεταγμένες προγράμματος περιήγησης δεν είναι οι κανονικοποιημένες συντεταγμένες εικόνας. Περιγράψτε προστατευμένες περιοχές μαζί με την επεξεργασμένη. Συγκρίνετε προοπτική, φωτισμό και γύρω λεπτομέρειες αποτελέσματος με την αρχική πηγή.</p><p>Διαχωρισμός σύνθεσης σε επεξεργάσιμα επίπεδα</p><p>Η αποσύνθεση επιπέδων είναι διακριτή λειτουργία που δέχεται ακριβώς μία εικόνα και επιστρέφει εικόνα βάσης μαζί με έως 16 ανεξάρτητα επίπεδα. Κάθε επίπεδο είναι PNG με alpha. Μια προτροπή μπορεί να ονομάζει τα στοιχεία προς διαχωρισμό, όπως τίτλο, κύριο θέμα και διακοσμητικά· χωρίς προτροπή αποσύνθεσης, το μοντέλο προσδιορίζει αυτόματα τα κύρια στοιχεία.</p><p>Τα αποτελέσματα περιλαμβάνουν ονόματα επιπέδων, περιγραφές, σειρά στοίβαξης και πλαίσια τοποθέτησης. Χρησιμοποιήστε την εικόνα βάσης με δείκτη στοίβαξης μηδέν και τοποθετήστε τα άλλα επίπεδα σε αύξουσα σειρά στοίβαξης. Τα απόλυτα πλαίσια περιγράφουν θέση στην εικόνα βάσης εξόδου· τα κανονικοποιημένα πλαίσια περιγράφουν αναλογική θέση σε διαφορετικό καμβά. Κρατήστε αυτά τα επιστρεφόμενα μεταδεδομένα τοποθέτησης με τα αρχεία εικόνας, ώστε η αρχική σύνθεση να ανακατασκευάζεται πριν αναδιαταχθεί.</p><p>Για αναθεώρηση αφίσας, διαχωρίστε το κύριο εικαστικό από τον τίτλο και τα διακοσμητικά και εξετάστε κατόπιν άκρα και κάθε αποκατεστημένη περιοχή φόντου. Ένα διαφανές επίπεδο μπορεί να υποβληθεί σε επεξεργασία ως μία είσοδος με κανάλι alpha, με έξοδο διαφανούς PNG. Η επιλογή διαφανούς φόντου αφορά αυτή τη ροή επεξεργασίας εικόνας μίας εισόδου· η συνήθης δημιουργία από κείμενο είναι χωριστή λειτουργία.</p><p>Πολύγλωσση σύνθεση</p><p>Εκτός από κινεζικά και αγγλικά, ο κατασκευαστής τεκμηριώνει εγγενή υποστήριξη προτροπών και κειμένου εικόνας για ρωσικά, αραβικά, φιλιππινέζικα, ταϊλανδικά, τουρκικά, κορεατικά, μαλαϊκά, ισπανικά, πορτογαλικά, ινδονησιακά, γαλλικά, γερμανικά, βιετναμικά και ιαπωνικά. Δώστε την ακριβή εγκεκριμένη διατύπωση και κατεύθυνση ανάγνωσης και προσδιορίστε ποια περιοχή περιέχει κάθε μπλοκ κειμένου. Ελέγξτε τόνους, ενωμένους χαρακτήρες, αλλαγές γραμμής και μικρές ετικέτες στην τελική εικόνα.</p><p>Αρχεία αναφοράς και προδιαγραφές εξόδου</p><p>Η δημιουργία εικόνας δέχεται έως 10 αναφορές σε JPEG, PNG, WebP, BMP, TIFF, GIF, HEIC ή HEIF. Καθεμία μπορεί να είναι έως 30 MB, με αμφότερες τις πλευρές πάνω από 14 pixel, 196–36,000,000 συνολικά pixel και αναλογία από 1:16 έως 16:1. Η αποσύνθεση επιπέδων απαιτεί αντίθετα ένα JPEG ή PNG 262,144–36,000,000 pixel, έως 30 MB, στο ίδιο εύρος αναλογίας.</p><p>Η δημιουργία προσφέρει βαθμίδες εξόδου 1K, 1.5K και 2K, με προεπιλογή 2K, ή ρητές διαστάσεις με 921,600–4,624,220 συνολικά pixel και αναλογίες από 1:16 έως 16:1. Και οι δύο περιορισμοί ισχύουν για προσαρμοσμένες διαστάσεις. Η έξοδος επιπέδων χρησιμοποιεί 1K, 1.5K, 2K ή auto, με προεπιλογή auto· η βάση και κάθε επίπεδο διατηρούν τις αντίστοιχες αρχικές αναλογίες τους.</p><p>Οι ολοκληρωμένες εικόνες είναι JPEG ή PNG. Η μορφή εικόνας βάσης μπορεί να επιλέγεται χωριστά, ενώ τα αποσυντεθειμένα επίπεδα παραμένουν PNG με alpha. Η παράδοση μπορεί να χρησιμοποιεί κωδικοποιημένα δεδομένα εικόνας ή συνδέσμους λήψης που διατηρούνται για 24 ώρες. Αποθηκεύστε κάθε επιστρεφόμενη εικόνα και τα μεταδεδομένα της για την επιθυμητή σχεδιαστική ροή. Εξετάστε κείμενο, επεξεργασμένες λεπτομέρειες και ευθυγράμμιση επιπέδων στο μέγεθος χρήσης του εικαστικού.</p></div></details></section><section class=\"card-section\" data-card-section=\"methods\"><h3 tabindex=\"-1\">Διαθέσιμα στο Ailoot · είσοδοι και μέθοδοι</h3><details class=\"card-method\" open><summary><b>Ailoot Ultra · Εικόνες</b> <code>POST /v1/images/generations</code></summary><dl class=\"method-capabilities\"><div><dt>Είσοδος</dt><dd><code>text</code></dd></div><div><dt>Έξοδος</dt><dd><code>image</code></dd></div><div><dt>Μορφή εξόδου</dt><dd>Αρχείο εικόνας</dd></div><div><dt>Πλήθος εξόδων</dt><dd>1 έξοδος</dd></div></dl><div class=\"tw\" data-card-parameters data-typed-parameters><table><thead><tr><th>Πεδίο</th><th>Τύπος</th><th>Απαίτηση</th><th>Τιμές και όρια</th><th>Προεπιλογή</th></tr></thead><tbody><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Πεδίο\" scope=\"row\"><span class=\"card-cell-label\">Πεδίο</span><code class=\"card-field-name\">model</code></th><td data-cell-label=\"Τύπος\" data-field-type><span class=\"card-cell-label\">Τύπος</span><code>string</code></td><td data-cell-label=\"Απαίτηση\"><span class=\"card-cell-label\">Απαίτηση</span>Υποχρεωτικό</td><td data-cell-label=\"Τιμές και όρια\"><span class=\"card-cell-label\">Τιμές και όρια</span><div>bytedance-seed/seedream-5-0-flash</div></td><td data-cell-label=\"Προεπιλογή\" data-default=\"unspecified\"><span class=\"card-cell-label\">Προεπιλογή</span>—</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Πεδίο\" scope=\"row\"><span class=\"card-cell-label\">Πεδίο</span><code class=\"card-field-name\">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>Ελάχιστο μήκος: 1</div><div>Συνθήκες: Μη κενή προτροπή UTF8. Δεν επινοείται καθολικό όριο χαρακτήρων του κατασκευαστή.</div></td><td data-cell-label=\"Προεπιλογή\" data-default=\"unspecified\"><span class=\"card-cell-label\">Προεπιλογή</span>—</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Πεδίο\" scope=\"row\"><span class=\"card-cell-label\">Πεδίο</span><code class=\"card-field-name\">n</code></th><td data-cell-label=\"Τύπος\" data-field-type><span class=\"card-cell-label\">Τύπος</span><code>integer</code></td><td data-cell-label=\"Απαίτηση\"><span class=\"card-cell-label\">Απαίτηση</span>Προαιρετικό</td><td data-cell-label=\"Τιμές και όρια\"><span class=\"card-cell-label\">Τιμές και όρια</span><div>1</div></td><td data-cell-label=\"Προεπιλογή\" data-default=\"known\"><span class=\"card-cell-label\">Προεπιλογή</span>1</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Πεδίο\" scope=\"row\"><span class=\"card-cell-label\">Πεδίο</span><code class=\"card-field-name\">response_format</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>url, b64_json</div></td><td data-cell-label=\"Προεπιλογή\" data-default=\"unspecified\"><span class=\"card-cell-label\">Προεπιλογή</span>—</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Πεδίο\" scope=\"row\"><span class=\"card-cell-label\">Πεδίο</span><code class=\"card-field-name\">stream</code></th><td data-cell-label=\"Τύπος\" data-field-type><span class=\"card-cell-label\">Τύπος</span><code>boolean</code></td><td data-cell-label=\"Απαίτηση\"><span class=\"card-cell-label\">Απαίτηση</span>Προαιρετικό</td><td data-cell-label=\"Τιμές και όρια\"><span class=\"card-cell-label\">Τιμές και όρια</span><div>false</div></td><td data-cell-label=\"Προεπιλογή\" data-default=\"known\"><span class=\"card-cell-label\">Προεπιλογή</span>false</td></tr></tbody></table></div><details class=\"card-about\" data-material-combinations><summary>Συνδυασμοί υλικών εισόδου</summary><p class=\"note-s\"><b>Κείμενο σε εικόνα</b> · Υποχρεωτικό: prompt</p></details><details class=\"note-s\" data-method-contract><summary>Παράμετροι και κύκλος ζωής μεθόδου</summary><div class=\"tw\" data-card-table=\"contract\"><table><thead><tr><th>Παράμετρος</th><th>Σύμβαση</th></tr></thead><tbody><tr><th data-cell-label=\"Παράμετρος\" scope=\"row\"><span class=\"card-cell-label\">Παράμετρος</span><code>content_type</code></th><td data-cell-label=\"Σύμβαση\"><span class=\"card-cell-label\">Σύμβαση</span>application/json</td></tr><tr><th data-cell-label=\"Παράμετρος\" scope=\"row\"><span class=\"card-cell-label\">Παράμετρος</span><code>required</code></th><td data-cell-label=\"Σύμβαση\"><span class=\"card-cell-label\">Σύμβαση</span>model, 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</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>n, response_format, stream</td></tr><tr><th data-cell-label=\"Παράμετρος\" scope=\"row\"><span class=\"card-cell-label\">Παράμετρος</span><code>n</code></th><td data-cell-label=\"Σύμβαση\"><span class=\"card-cell-label\">Σύμβαση</span>1</td></tr><tr><th data-cell-label=\"Παράμετρος\" scope=\"row\"><span class=\"card-cell-label\">Παράμετρος</span><code>stream</code></th><td data-cell-label=\"Σύμβαση\"><span class=\"card-cell-label\">Σύμβαση</span>false</td></tr><tr><th data-cell-label=\"Παράμετρος\" scope=\"row\"><span class=\"card-cell-label\">Παράμετρος</span><code>response_format</code></th><td data-cell-label=\"Σύμβαση\"><span class=\"card-cell-label\">Σύμβαση</span>url, b64_json</td></tr><tr><th data-cell-label=\"Παράμετρος\" scope=\"row\"><span class=\"card-cell-label\">Παράμετρος</span><code>reference_images</code></th><td data-cell-label=\"Σύμβαση\"><span class=\"card-cell-label\">Σύμβαση</span>false</td></tr><tr><th data-cell-label=\"Παράμετρος\" scope=\"row\"><span class=\"card-cell-label\">Παράμετρος</span><code>edit</code></th><td data-cell-label=\"Σύμβαση\"><span class=\"card-cell-label\">Σύμβαση</span>false</td></tr><tr><th data-cell-label=\"Παράμετρος\" scope=\"row\"><span class=\"card-cell-label\">Παράμετρος</span><code>output_format_optional</code></th><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>resolution_control</code></th><td data-cell-label=\"Σύμβαση\"><span class=\"card-cell-label\">Σύμβαση</span>null</td></tr><tr><th data-cell-label=\"Παράμετρος\" scope=\"row\"><span class=\"card-cell-label\">Παράμετρος</span><code>aspect_ratio_control</code></th><td data-cell-label=\"Σύμβαση\"><span class=\"card-cell-label\">Σύμβαση</span>null</td></tr><tr><th data-cell-label=\"Παράμετρος\" scope=\"row\"><span class=\"card-cell-label\">Παράμετρος</span><code>other_fields</code></th><td data-cell-label=\"Σύμβαση\"><span class=\"card-cell-label\">Σύμβαση</span>απορρίπτονται, εκτός από την ακριβή ορισμένη εσωτερική δρομολόγηση παρόχου</td></tr></tbody></table></div><p>Κύκλος ζωής: <code>synchronous_result_then_owned_library</code></p><p class=\"note-s\"><code>GET /v1/media/tasks/{task_id}</code> · Το πραγματικό task_id που επιστράφηκε ή μια εγγραφή στη βιβλιοθήκη πολυμέσων</p><p class=\"note-s\"><code>GET /v1/media/assets/{asset_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><p class=\"note-s\">Δημιουργήστε μία εικόνα από προτροπή.</p><p class=\"note-s\">Αποθηκεύστε κάθε στοιχείο δεδομένων· τα url/b64_json είναι κωδικοποιήσεις αποτελεσμάτων.</p></details></details></section><section class=\"card-section\" data-card-section=\"pricing\"><h3 tabindex=\"-1\">Τιμολόγηση</h3><div class=\"card-result-process\" data-billing-basis><h5>Πώς υπολογίζεται η τελική χρέωση</h5><p class=\"note-s\">Οι εμφανιζόμενες τιμές χρησιμοποιούνται για την εκτίμηση του κόστους πριν από την παραγωγή. Η τελική χρέωση υπολογίζεται από το κόστος που καταγράφηκε για την αρχική παραγωγή. Η μετρημένη διάρκεια της εξόδου και οι προβλεπόμενες ποσότητες δεν αποτελούν την τελική χρεώσιμη ποσότητα.</p></div><div data-native-semantic-method=\"v1\" data-tariff-reference-only><p class=\"note-s\" data-rate-support-note>Οι τιμολογιακές αναφορές δεν προσθέτουν επιλογές αιτήματος. Οι υποστηριζόμενες παράμετροι αναφέρονται στην επιλεγμένη μέθοδο.</p><dl data-price-conditions><dt>Γρήγορη λειτουργία</dt><dd>Δεν έχει οριστεί <span class=\"note-s\">Όταν επιλέγεται η γρήγορη λειτουργία</span></dd><dt>Λειτουργία flex</dt><dd>Δεν έχει οριστεί <span class=\"note-s\">Όταν επιλέγεται η λειτουργία flex</span></dd><dt>Μέγιστη προσπάθεια συλλογισμού</dt><dd>Δεν έχει οριστεί <span class=\"note-s\">Όταν η μέγιστη προσπάθεια συλλογισμού χρησιμοποιεί την προσαρμογή default</span></dd></dl></div><div data-declared-tariff-pricing><h4>Εκτιμώμενες χρεώσεις για σύγκριση</h4><h4>Τιμές ανά διαμόρφωση</h4><p class=\"note-s\">Αντιστοιχίστε κάθε χρέωση στις συνθήκες που εμφανίζονται. Χρησιμοποιήστε μία χρέωση ανά σύνολο εναλλακτικών διαμορφώσεων.</p><div class=\"tw\" data-pricing-profiles><table><thead><tr><th>Διαμόρφωση</th><th>Πίνακας χρεώσεων</th><th>Προβλεπόμενη ποσότητα</th><th>Μονάδα τιμολόγησης</th><th>Χρέωση</th></tr></thead><tbody><tr><th data-cell-label=\"Διαμόρφωση\" scope=\"row\"><span class=\"card-cell-label\">Διαμόρφωση</span>Βασικές χρεώσεις token</th><td data-cell-label=\"Πίνακας χρεώσεων\"><span class=\"card-cell-label\">Πίνακας χρεώσεων</span>Βασική χρέωση</td><td data-cell-label=\"Προβλεπόμενη ποσότητα\"><span class=\"card-cell-label\">Προβλεπόμενη ποσότητα</span>—</td><td data-cell-label=\"Μονάδα τιμολόγησης\"><span class=\"card-cell-label\">Μονάδα τιμολόγησης</span>—</td><td data-cell-label=\"Χρέωση\"><span class=\"card-cell-label\">Χρέωση</span><div><span>Είσοδος · Token εισόδου · Εκτίμηση μόνο για σύγκριση</span> <b>—</b> <span class=\"price-unit\">/ 1K token</span></div><div><span>Έξοδος · Token εξόδου · Εκτίμηση μόνο για σύγκριση</span> <b>—</b> <span class=\"price-unit\">/ 1K token</span></div><div><span>Είσοδος · Ανάγνωση από την κρυφή μνήμη · Εκτίμηση μόνο για σύγκριση</span> <b>—</b> <span class=\"price-unit\">/ 1K token</span></div><div><span>Είσοδος · Εγγραφή στην κρυφή μνήμη · Εκτίμηση μόνο για σύγκριση</span> <b>—</b> <span class=\"price-unit\">/ 1K token</span></div><div><span>Είσοδος · Εγγραφή στην κρυφή μνήμη, 1 ώρα · Εκτίμηση μόνο για σύγκριση</span> <b>—</b> <span class=\"price-unit\">/ 1K token</span></div></td></tr><tr><th data-cell-label=\"Διαμόρφωση\" scope=\"row\"><span class=\"card-cell-label\">Διαμόρφωση</span>εικόνα εισόδου</th><td data-cell-label=\"Πίνακας χρεώσεων\"><span class=\"card-cell-label\">Πίνακας χρεώσεων</span>—</td><td data-cell-label=\"Προβλεπόμενη ποσότητα\"><span class=\"card-cell-label\">Προβλεπόμενη ποσότητα</span>—</td><td data-cell-label=\"Μονάδα τιμολόγησης\"><span class=\"card-cell-label\">Μονάδα τιμολόγησης</span>ανά εικόνα εισόδου</td><td data-cell-label=\"Χρέωση\"><span class=\"card-cell-label\">Χρέωση</span><div><span>Είσοδος · εικόνα εισόδου · Εκτίμηση μόνο για σύγκριση</span> <b>$0</b> <span class=\"price-unit\">ανά εικόνα εισόδου</span></div></td></tr><tr><th data-cell-label=\"Διαμόρφωση\" scope=\"row\"><span class=\"card-cell-label\">Διαμόρφωση</span>Ultra</th><td data-cell-label=\"Πίνακας χρεώσεων\"><span class=\"card-cell-label\">Πίνακας χρεώσεων</span>—</td><td data-cell-label=\"Προβλεπόμενη ποσότητα\"><span class=\"card-cell-label\">Προβλεπόμενη ποσότητα</span>—</td><td data-cell-label=\"Μονάδα τιμολόγησης\"><span class=\"card-cell-label\">Μονάδα τιμολόγησης</span>ανά εικόνα εξόδου</td><td data-cell-label=\"Χρέωση\"><span class=\"card-cell-label\">Χρέωση</span><div><span>Έξοδος · έξοδος εικόνας · Εκτίμηση μόνο για σύγκριση</span> <b>$0.036</b> <span class=\"price-unit\">ανά εικόνα εξόδου</span></div></td></tr><tr><th data-cell-label=\"Διαμόρφωση\" scope=\"row\"><span class=\"card-cell-label\">Διαμόρφωση</span>Εκτιμώμενο κόστος δημιουργίας</th><td data-cell-label=\"Πίνακας χρεώσεων\"><span class=\"card-cell-label\">Πίνακας χρεώσεων</span>—</td><td data-cell-label=\"Προβλεπόμενη ποσότητα\"><span class=\"card-cell-label\">Προβλεπόμενη ποσότητα</span>εκτίμηση για μία δημιουργία</td><td data-cell-label=\"Μονάδα τιμολόγησης\"><span class=\"card-cell-label\">Μονάδα τιμολόγησης</span>—</td><td data-cell-label=\"Χρέωση\"><span class=\"card-cell-label\">Χρέωση</span><div><span>Έξοδος · Εκτιμώμενο κόστος δημιουργίας · Εκτίμηση μόνο για σύγκριση</span> <b>$0.036</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><div data-declared-reference-pricing><h4>Στοιχεία τιμοκαταλόγου αναφοράς</h4><p class=\"note-s\">Οι πίνακες αναφοράς του μοντέλου δεν αλλάζουν την επιλογή μεθόδου, τις εκτιμήσεις τιμής ή τις χρεώσεις. Οι εφαρμοζόμενες χρεώσεις χρησιμοποιούν τις τιμές της επιλεγμένης μεθόδου Ailoot.</p><details class=\"card-price-reference\" data-declared-reference-group data-client-selectable=\"false\"><summary>Διαμορφώσεις τιμολόγησης εικόνων</summary><h4>Τιμές ανά διαμόρφωση</h4><p class=\"note-s\">Αντιστοιχίστε κάθε χρέωση στις συνθήκες που εμφανίζονται. Χρησιμοποιήστε μία χρέωση ανά σύνολο εναλλακτικών διαμορφώσεων.</p><div class=\"tw\" data-pricing-profiles><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>Εικόνα εξόδου</th><td data-cell-label=\"Συνθήκες χρέωσης\"><span class=\"card-cell-label\">Συνθήκες χρέωσης</span>Δεν δηλώνεται παραλλαγή τιμολόγησης.</td><td data-cell-label=\"Χρέωση\"><span class=\"card-cell-label\">Χρέωση</span><div><span>Έξοδος · Εικόνα εξόδου</span> <b>$0.036</b> <span class=\"price-unit\">ανά εικόνα</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><div><span>Είσοδος · Εικόνα εισόδου</span> <b>$0</b> <span class=\"price-unit\">ανά εικόνα</span></div></td></tr></tbody></table></div><p class=\"note-s\" data-reference-basis>Οι ισοδύναμες καταχωρίσεις περιγράφουν την ίδια χρέωση· δεν προσθέτουν δεύτερη χρέωση.</p></details></div></section><section class=\"card-section\" data-card-section=\"examples\"><h3 tabindex=\"-1\">Παραδείγματα αιτημάτων</h3><h4>Ailoot Ultra · Εικόνες</h4><div class=\"code-group\"><div class=\"cg-bar\"><div class=\"cg-tabs\" role=\"tablist\" aria-label=\"Παραλλαγές κώδικα\"><button class=\"cg-tab\" id=\"model-code-1123-tab-0\" role=\"tab\" type=\"button\" aria-controls=\"model-code-1123-panel-0\" aria-selected=\"true\" tabindex=\"0\">curl</button><button class=\"cg-tab\" id=\"model-code-1123-tab-1\" role=\"tab\" type=\"button\" aria-controls=\"model-code-1123-panel-1\" aria-selected=\"false\" tabindex=\"-1\">Python SDK</button><button class=\"cg-tab\" id=\"model-code-1123-tab-2\" role=\"tab\" type=\"button\" aria-controls=\"model-code-1123-panel-2\" aria-selected=\"false\" tabindex=\"-1\">Node.js SDK</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-1123-panel-0\" role=\"tabpanel\" aria-labelledby=\"model-code-1123-tab-0\"><pre data-lang=\"bash\"><code>set -eu\n: &quot;${AILOOT_API_KEY:?Set your Ailoot API key}&quot;\nexport AILOOT_API_KEY\npython3 - &lt;&lt;&#39;PY_REQUEST&#39;\nimport json,os\nfrom pathlib import Path\np=json.loads(&#39;{&quot;model&quot;: &quot;bytedance-seed/seedream-5-0-flash&quot;, &quot;prompt&quot;: &quot;A lighthouse on a cliff, watercolor&quot;, &quot;n&quot;: 1, &quot;response_format&quot;: &quot;b64_json&quot;}&#39;)\n\nPath(&quot;request.json&quot;).write_text(json.dumps(p,ensure_ascii=False))\nPY_REQUEST\ncurl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/images/generations \\\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\npython3 - &lt;&lt;&#39;PY_RESULT&#39;\nimport base64, json, os, subprocess\nfrom pathlib import Path\nfrom urllib.parse import urlsplit, urljoin\n\ndef save_images(items):\n    if not items: raise SystemExit(&quot;No completed images; retain the full response&quot;)\n    for index, item in enumerate(items):\n        encoded=item.get(&quot;b64_json&quot;)\n        uri=item.get(&quot;url&quot;, &quot;&quot;)\n        if not encoded and uri.startswith(&quot;data:image/&quot;):\n            header, separator, encoded=uri.partition(&quot;,&quot;)\n            if not separator or &quot;;base64&quot; not in header: raise SystemExit(&quot;Unsupported image data URI&quot;)\n        if encoded:\n            raw=base64.b64decode(encoded,validate=True)\n        elif uri:\n            uri=urljoin(&quot;https://api.ailoot.ai&quot;,uri)\n            parsed=urlsplit(uri)\n            if parsed.scheme!=&quot;https&quot; or not parsed.netloc or parsed.username or parsed.password:\n                raise SystemExit(&quot;Invalid returned image URL&quot;)\n            owned=parsed.netloc==&quot;api.ailoot.ai&quot; and parsed.path.startswith(&quot;/v1/media/assets/&quot;) and parsed.path.endswith(&quot;/content&quot;)\n            args=[&quot;curl&quot;,&quot;--fail-with-body&quot;,&quot;--silent&quot;,&quot;--show-error&quot;,uri]\n            if owned: args += [&quot;-H&quot;,&quot;Authorization: Bearer &quot;+os.environ[&quot;AILOOT_API_KEY&quot;]]\n            temporary=Path(f&quot;image-{index}.bin&quot;)\n            subprocess.run(args+[&quot;-o&quot;,str(temporary)],check=True)\n            raw=temporary.read_bytes()\n            temporary.unlink()\n        else: raise SystemExit(&quot;Image has neither bytes nor URL&quot;)\n        if not raw: raise SystemExit(&quot;Empty image result&quot;)\n        ext=&quot;png&quot; if raw.startswith(b&quot;\\x89PNG&quot;) else &quot;jpg&quot; if raw.startswith(b&quot;\\xff\\xd8&quot;) else &quot;webp&quot; if raw[:4]==b&quot;RIFF&quot; and raw[8:12]==b&quot;WEBP&quot; else &quot;svg&quot; if raw.lstrip().startswith((b&quot;&lt;svg&quot;,b&quot;&lt;?xml&quot;)) else &quot;bin&quot;\n        Path(f&quot;image-{index}.{ext}&quot;).write_bytes(raw)\n    print(&quot;Every returned image saved; complete response metadata retained&quot;)\nsave_images(json.loads(Path(&quot;result.json&quot;).read_text())[&quot;data&quot;])\nPY_RESULT\n</code></pre></div><div class=\"cg-pane\" id=\"model-code-1123-panel-1\" role=\"tabpanel\" aria-labelledby=\"model-code-1123-tab-1\" hidden><pre data-lang=\"python\"><code>from openai import OpenAI\nimport base64, json, os, subprocess\nfrom pathlib import Path\nfrom urllib.parse import urlsplit, urljoin\n\ndef save_images(items):\n    if not items: raise SystemExit(&quot;No completed images; retain the full response&quot;)\n    for index, item in enumerate(items):\n        encoded=item.get(&quot;b64_json&quot;)\n        uri=item.get(&quot;url&quot;, &quot;&quot;)\n        if not encoded and uri.startswith(&quot;data:image/&quot;):\n            header, separator, encoded=uri.partition(&quot;,&quot;)\n            if not separator or &quot;;base64&quot; not in header: raise SystemExit(&quot;Unsupported image data URI&quot;)\n        if encoded:\n            raw=base64.b64decode(encoded,validate=True)\n        elif uri:\n            uri=urljoin(&quot;https://api.ailoot.ai&quot;,uri)\n            parsed=urlsplit(uri)\n            if parsed.scheme!=&quot;https&quot; or not parsed.netloc or parsed.username or parsed.password:\n                raise SystemExit(&quot;Invalid returned image URL&quot;)\n            owned=parsed.netloc==&quot;api.ailoot.ai&quot; and parsed.path.startswith(&quot;/v1/media/assets/&quot;) and parsed.path.endswith(&quot;/content&quot;)\n            args=[&quot;curl&quot;,&quot;--fail-with-body&quot;,&quot;--silent&quot;,&quot;--show-error&quot;,uri]\n            if owned: args += [&quot;-H&quot;,&quot;Authorization: Bearer &quot;+os.environ[&quot;AILOOT_API_KEY&quot;]]\n            temporary=Path(f&quot;image-{index}.bin&quot;)\n            subprocess.run(args+[&quot;-o&quot;,str(temporary)],check=True)\n            raw=temporary.read_bytes()\n            temporary.unlink()\n        else: raise SystemExit(&quot;Image has neither bytes nor URL&quot;)\n        if not raw: raise SystemExit(&quot;Empty image result&quot;)\n        ext=&quot;png&quot; if raw.startswith(b&quot;\\x89PNG&quot;) else &quot;jpg&quot; if raw.startswith(b&quot;\\xff\\xd8&quot;) else &quot;webp&quot; if raw[:4]==b&quot;RIFF&quot; and raw[8:12]==b&quot;WEBP&quot; else &quot;svg&quot; if raw.lstrip().startswith((b&quot;&lt;svg&quot;,b&quot;&lt;?xml&quot;)) else &quot;bin&quot;\n        Path(f&quot;image-{index}.{ext}&quot;).write_bytes(raw)\n    print(&quot;Every returned image saved; complete response metadata retained&quot;)\n\nrequest={&#39;model&#39;: &#39;bytedance-seed/seedream-5-0-flash&#39;, &#39;prompt&#39;: &#39;A lighthouse on a cliff, watercolor&#39;, &#39;n&#39;: 1, &#39;response_format&#39;: &#39;b64_json&#39;}\nclient=OpenAI(base_url=&quot;https://api.ailoot.ai/v1&quot;,api_key=os.environ[&quot;AILOOT_API_KEY&quot;],max_retries=0)\nresult=client.images.generate(**request)\nPath(&quot;sdk-result.txt&quot;).write_text(str(result),encoding=&quot;utf-8&quot;)\nsave_images([{&quot;b64_json&quot;:getattr(item,&quot;b64_json&quot;,None),&quot;url&quot;:getattr(item,&quot;url&quot;,None)} for item in result.data])\n</code></pre></div><div class=\"cg-pane\" id=\"model-code-1123-panel-2\" role=\"tabpanel\" aria-labelledby=\"model-code-1123-tab-2\" hidden><pre data-lang=\"js\"><code>import OpenAI from &quot;openai&quot;;\nimport { readFileSync, writeFileSync } from &quot;node:fs&quot;;\nconst key=process.env.AILOOT_API_KEY;\nif(!key) throw new Error(&quot;Set your actual Ailoot API key&quot;);\nconst client=new OpenAI({baseURL:&quot;https://api.ailoot.ai/v1&quot;,apiKey:key,maxRetries:0});\nconst request={&quot;model&quot;: &quot;bytedance-seed/seedream-5-0-flash&quot;, &quot;prompt&quot;: &quot;A lighthouse on a cliff, watercolor&quot;, &quot;n&quot;: 1, &quot;response_format&quot;: &quot;b64_json&quot;};\nconst result=await client.images.generate(request);\nwriteFileSync(&quot;sdk-result.json&quot;,JSON.stringify(result,null,2));\nif(!result.data?.length) throw new Error(&quot;No completed images&quot;);\nfor(let index=0;index&lt;result.data.length;index++) {\n  const item=result.data[index];let encoded=item.b64_json,uri=item.url||&quot;&quot;,raw;\n  if(!encoded &amp;&amp; uri.startsWith(&quot;data:image/&quot;)) {\n    const comma=uri.indexOf(&quot;,&quot;);if(comma&lt;0 || !uri.slice(0,comma).includes(&quot;;base64&quot;)) throw new Error(&quot;Unsupported image data URI&quot;);\n    encoded=uri.slice(comma+1);\n  }\n  if(encoded) {\n    if(encoded.length%4!==0 || !/^[A-Za-z0-9+/]*={0,2}$/.test(encoded)) throw new Error(&quot;Invalid Base64&quot;);\n    raw=Buffer.from(encoded,&quot;base64&quot;);\n  } else if(uri) {\n    const u=new URL(uri,&quot;https://api.ailoot.ai&quot;);\n    if(u.protocol!==&quot;https:&quot; || u.username || u.password) throw new Error(&quot;Invalid returned URL&quot;);\n    const owned=u.origin===&quot;https://api.ailoot.ai&quot; &amp;&amp; u.pathname.startsWith(&quot;/v1/media/assets/&quot;) &amp;&amp; u.pathname.endsWith(&quot;/content&quot;);\n    const response=await fetch(u,{headers:owned?{Authorization:&quot;Bearer &quot;+key}:{},redirect:&quot;manual&quot;});\n    if(!response.ok) throw new Error(&quot;Image content download failed: &quot;+response.status);\n    raw=Buffer.from(await response.arrayBuffer());\n  } else throw new Error(&quot;Image has neither bytes nor URL&quot;);\n  if(!raw.length) throw new Error(&quot;Empty image result&quot;);\n  const ext=raw.subarray(0,4).equals(Buffer.from([137,80,78,71]))?&quot;png&quot;:raw[0]===255&amp;&amp;raw[1]===216?&quot;jpg&quot;:raw.toString(&quot;ascii&quot;,0,4)===&quot;RIFF&quot;&amp;&amp;raw.toString(&quot;ascii&quot;,8,12)===&quot;WEBP&quot;?&quot;webp&quot;:raw.toString(&quot;utf8&quot;).trimStart().startsWith(&quot;&lt;svg&quot;)||raw.toString(&quot;utf8&quot;).trimStart().startsWith(&quot;&lt;?xml&quot;)?&quot;svg&quot;:&quot;bin&quot;;\n  writeFileSync(`image-${index}.${ext}`,raw);\n}\nconsole.log(&quot;Every returned image saved; sdk-result.json retains complete metadata&quot;);\n</code></pre></div></div></div></section><section class=\"card-section\" data-card-section=\"results\"><h3 tabindex=\"-1\">Λήψη και αποθήκευση αποτελεσμάτων</h3><h4>Ailoot Ultra · Εικόνες</h4><p class=\"note-s\">Κατεβάστε κάθε εικόνα που επιστρέφεται ή αποθηκεύστε το περιεχόμενο Base64</p><ul class=\"card-result-paths\"><li><code>GET /v1/media/tasks/{task_id}</code></li><li><code>GET /v1/media/assets/{asset_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 που επιστρέφεται ή αποκωδικοποιήστε το περιεχόμενο Base64.</p><p class=\"note-s\">Αποθηκεύστε κάθε στοιχείο δεδομένων. Αποκωδικοποιήστε κάθε b64_json ή ανακτήστε κάθε υπογεγραμμένο URL που επιστράφηκε. Επιλέξτε την επέκταση του ονόματος αρχείου βάσει του πραγματικού τύπου MIME/των byte.</p></div><div class=\"card-result-process\" data-unknown-recovery><h5>Αν χρειάζεται έλεγχος της αρχικής απάντησης</h5><p class=\"note-s\">Αν το αποτέλεσμα παραγωγής ή επεξεργασίας εικόνας χρειάζεται έλεγχο, διατηρήστε το αρχικό operation_id/X-Client-Request-ID και τις πληροφορίες αποτελέσματος που επιστράφηκαν. Ανακτήστε τα υπάρχοντα αποτελέσματα που σας ανήκουν μέσω της βιβλιοθήκης πολυμέσων χρησιμοποιώντας πραγματικές τιμές task_id ή asset_id. Μην υποβάλετε ξανά το αίτημα παραγωγής/επεξεργασίας και μην κατασκευάσετε URL περιοδικού ελέγχου από το operation_id.</p></div><details class=\"card-about\" data-output-fields><summary>Πεδία απάντησης</summary><div class=\"tw\" data-card-table=\"output\"><table><thead><tr><th>Πεδίο</th><th>Τύπος</th></tr></thead><tbody><tr><th data-cell-label=\"Πεδίο\" scope=\"row\"><span class=\"card-cell-label\">Πεδίο</span><code class=\"card-field-name\">created</code></th><td data-cell-label=\"Τύπος\" data-field-type><span class=\"card-cell-label\">Τύπος</span>integer</td></tr><tr><th data-cell-label=\"Πεδίο\" scope=\"row\"><span class=\"card-cell-label\">Πεδίο</span><code class=\"card-field-name\">data[].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\">data[].b64_json</code></th><td data-cell-label=\"Τύπος\" data-field-type><span class=\"card-cell-label\">Τύπος</span>base64 string</td></tr><tr><th data-cell-label=\"Πεδίο\" scope=\"row\"><span class=\"card-cell-label\">Πεδίο</span><code class=\"card-field-name\">usage</code></th><td data-cell-label=\"Τύπος\" data-field-type><span class=\"card-cell-label\">Τύπος</span>object</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>server_error</code></th><td data-cell-label=\"Συνθήκη\"><span class=\"card-cell-label\">Συνθήκη</span>Η απόκριση που επιστράφηκε αναφέρει ότι η λειτουργία ή το αποτέλεσμα χρειάζεται έλεγχο</td><td data-cell-label=\"Επόμενο βήμα\"><span class=\"card-cell-label\">Επόμενο βήμα</span>Διατηρήστε το αρχικό ID της λειτουργίας/εργασίας που επιστράφηκε, τις κεφαλίδες του αιτήματος και την απόκριση· συνεχίστε με τις υποστηριζόμενες αναγνώσεις αυτής της αρχικής λειτουργίας. Μην υποβάλετε ξανά το αίτημα δημιουργίας.</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=bytedance-seed%2Fseedream-5-0-flash&amp;route=Ultra&amp;caller=bytedance-seed%2Fseedream-5-0-flash&amp;fmt=images\"><code>bytedance-seed/seedream-5-0-flash</code></a></span></p><h4>Εναλλακτικές διαδρομές μεθόδων</h4><p class=\"note-s\">Χρησιμοποιήστε τις διαδρομές μεθόδων που εμφανίζονται παραπάνω.</p><h4>Σχετικά ID μοντέλων</h4><p class=\"note-s\"><a href=\"#m=bytedance-seed%2Fseedream-5-0-flash&amp;route=Ultra&amp;caller=bytedance-seed%2Fseedream-5-0-flash&amp;fmt=images\"><code>bytedance-seed/seedream-5-0-flash</code></a></p></section></div>",
      "method_identity": {
        "effective_request_model_id": "bytedance-seed/seedream-5-0-flash",
        "fmt": "images",
        "http": "POST",
        "path": "/v1/images/generations",
        "request_model_id": "bytedance-seed/seedream-5-0-flash",
        "route_label": "Ultra"
      },
      "method_key": "Ultra|images|/v1/images/generations|bytedance-seed%2Fseedream-5-0-flash",
      "ordinal": 0,
      "rawMethod": {
        "available": null,
        "billing_basis": {
          "basis": "original_invoice_usd",
          "description": "Οι εμφανιζόμενες τιμές χρησιμοποιούνται για την εκτίμηση του κόστους πριν από την παραγωγή. Η τελική χρέωση υπολογίζεται από το κόστος που καταγράφηκε για την αρχική παραγωγή. Η μετρημένη διάρκεια της εξόδου και οι προβλεπόμενες ποσότητες δεν αποτελούν την τελική χρεώσιμη ποσότητα.",
          "forecast_quantity_is_estimate": true,
          "physical_output_is_billable_quantity": false,
          "version": "original_invoice_usd_v1"
        },
        "cache_read": null,
        "cache_write": null,
        "cache_write_1h": null,
        "contract": {
          "data": {
            "all_results": "Save every data item. Decode each b64_json or fetch every returned signed URL. Select a filename extension from the actual MIME/bytes.",
            "errors": [
              {
                "code": null,
                "condition": "Μη έγκυρα υποχρεωτικά πεδία, μη έγκυρη αναπαράσταση υλικού ή μη έγκυρη τιμή παραμέτρου",
                "http_status": 400,
                "recovery": "Διορθώστε τα υποδεικνυόμενα πεδία πριν από νέο αίτημα δημιουργίας.",
                "type": "invalid_request_error"
              },
              {
                "code": null,
                "condition": "Η απόκριση που επιστράφηκε αναφέρει ότι η λειτουργία ή το αποτέλεσμα χρειάζεται έλεγχο",
                "http_status": null,
                "recovery": "Διατηρήστε το αρχικό ID της λειτουργίας/εργασίας που επιστράφηκε, τις κεφαλίδες του αιτήματος και την απόκριση· συνεχίστε με τις υποστηριζόμενες αναγνώσεις αυτής της αρχικής λειτουργίας. Μην υποβάλετε ξανά το αίτημα δημιουργίας.",
                "type": "server_error"
              }
            ],
            "hints": [],
            "ignored_fields": [],
            "lifecycle": {
              "all_results": "Follow everyactualreturnedoutputandownedasset; no result is discardedbecauseindex0orcontent_urlalreadyexists.",
              "assets": [
                {
                  "http": "GET",
                  "path": "/v1/media/assets"
                },
                {
                  "http": "GET",
                  "path": "/v1/media/assets/{asset_id}"
                }
              ],
              "content": [
                {
                  "http": "GET",
                  "path": "/v1/media/assets/{asset_id}/content",
                  "url_source": "exact returned signed URL; never construct token"
                }
              ],
              "mode": "synchronous_result_then_owned_library",
              "operation_id_is_not_task_id": true,
              "status": [
                {
                  "http": "GET",
                  "id_source": "actual returned task_id or media library record",
                  "path": "/v1/media/tasks/{task_id}"
                }
              ],
              "unknown": "Αν το αποτέλεσμα παραγωγής ή επεξεργασίας εικόνας χρειάζεται έλεγχο, διατηρήστε το αρχικό operation_id/X-Client-Request-ID και τις πληροφορίες αποτελέσματος που επιστράφηκαν. Ανακτήστε τα υπάρχοντα αποτελέσματα που σας ανήκουν μέσω της βιβλιοθήκης πολυμέσων χρησιμοποιώντας πραγματικές τιμές task_id ή asset_id. Μην υποβάλετε ξανά το αίτημα παραγωγής/επεξεργασίας και μην κατασκευάσετε URL περιοδικού ελέγχου από το operation_id."
            },
            "material_combinations": [
              {
                "content_type": "application/json",
                "mode": "text_to_image",
                "reference_images": false,
                "required": [
                  "prompt"
                ]
              }
            ],
            "media_library": {
              "asset": {
                "fields": [
                  {
                    "description": null,
                    "name": "asset_id",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "task_id",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "output_key",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "family",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "model",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "method",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "status",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "content_type",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "sha256",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "size_bytes",
                    "type": "integer"
                  },
                  {
                    "description": null,
                    "name": "content_url",
                    "type": "string"
                  }
                ],
                "http": "GET",
                "id_source": "actual returned asset_id",
                "path": "/v1/media/assets/{asset_id}"
              },
              "content": {
                "http": "GET",
                "path": "/v1/media/assets/{asset_id}/content",
                "range_header_supported": true,
                "url_source": "Use exact returned signed content_url including its token; do not construct a token."
              },
              "expired_link": {
                "code": "link_expired",
                "http_status": 404,
                "recovery": "Read the asset again to obtain its refreshed signed content_url, then fetch that URL. Do not regenerate."
              },
              "list": {
                "all_pages": "Follow every returned next_cursor, then select records by their actual task_id/output_key.",
                "http": "GET",
                "output_fields": [
                  {
                    "description": null,
                    "name": "object",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "data",
                    "type": "asset[]"
                  },
                  {
                    "description": null,
                    "name": "next_cursor",
                    "type": "string|null"
                  }
                ],
                "parameters": [
                  {
                    "availability": "source_interface",
                    "default": null,
                    "default_known": false,
                    "enum": null,
                    "enum_known": false,
                    "name": "family",
                    "required": false,
                    "type": "string"
                  },
                  {
                    "availability": "source_interface",
                    "default": null,
                    "default_known": false,
                    "enum": null,
                    "enum_known": false,
                    "name": "cursor",
                    "required": false,
                    "type": "string"
                  },
                  {
                    "availability": "source_interface",
                    "default": 20,
                    "default_known": true,
                    "enum": null,
                    "enum_known": false,
                    "maximum": 100,
                    "minimum": 1,
                    "name": "limit",
                    "required": false,
                    "type": "integer"
                  }
                ],
                "path": "/v1/media/assets"
              },
              "revoke": {
                "http": "DELETE",
                "meaning": "Revokes/deletes the existing owned file; this is not generation cancellation.",
                "path": "/v1/media/assets/{asset_id}",
                "pending_status": "revoking",
                "success_statuses": [
                  202,
                  204
                ]
              },
              "task": {
                "http": "GET",
                "id_source": "actual returned task_id or media library record; operation_id is not task_id",
                "path": "/v1/media/tasks/{task_id}"
              }
            },
            "operation_modes": [
              "text_to_image"
            ],
            "outputs": {
              "all_results": "Αποθηκεύστε κάθε στοιχείο δεδομένων. Αποκωδικοποιήστε κάθε b64_json ή ανακτήστε κάθε υπογεγραμμένο URL που επιστράφηκε. Επιλέξτε την επέκταση του ονόματος αρχείου βάσει του πραγματικού τύπου MIME/των byte.",
              "count": 1,
              "family": "image",
              "fields": [
                {
                  "description": null,
                  "name": "created",
                  "type": "integer"
                },
                {
                  "description": null,
                  "name": "data[].url",
                  "type": "string"
                },
                {
                  "description": null,
                  "name": "data[].b64_json",
                  "type": "base64 string"
                },
                {
                  "description": null,
                  "name": "usage",
                  "type": "object"
                }
              ],
              "format": "actual validated raster MIME"
            },
            "parameters": [
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": [
                  "bytedance-seed/seedream-5-0-flash"
                ],
                "enum_known": true,
                "name": "model",
                "required": true,
                "type": "string"
              },
              {
                "availability": "source_interface",
                "conditions": "Μη κενή προτροπή UTF8. Δεν επινοείται καθολικό όριο χαρακτήρων του κατασκευαστή.",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "min_length": 1,
                "name": "prompt",
                "required": true,
                "type": "string"
              },
              {
                "availability": "source_interface",
                "default": 1,
                "default_known": true,
                "enum": [
                  1
                ],
                "enum_known": true,
                "name": "n",
                "required": false,
                "type": "integer"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": [
                  "url",
                  "b64_json"
                ],
                "enum_known": true,
                "name": "response_format",
                "required": false,
                "type": "string"
              },
              {
                "availability": "source_interface",
                "default": false,
                "default_known": true,
                "enum": [
                  false
                ],
                "enum_known": true,
                "name": "stream",
                "required": false,
                "type": "boolean"
              }
            ],
            "profile_binding": "Exact existing Ailoot model and method; interface constraints below do not assert provider qualification.",
            "unsupported": [
              "image edits/references",
              "resolution/size",
              "aspect_ratio",
              "stream=true",
              "n other than1",
              "other fields outside this exact facade profile",
              "output_format field must be omitted"
            ]
          },
          "hints": [
            "Δημιουργήστε μία εικόνα από προτροπή.",
            "Αποθηκεύστε κάθε στοιχείο δεδομένων· τα url/b64_json είναι κωδικοποιήσεις αποτελεσμάτων."
          ],
          "input": {
            "aspect_ratio_control": null,
            "content_type": "application/json",
            "edit": false,
            "material_types": [
              "text"
            ],
            "n": [
              1
            ],
            "optional": [
              "n",
              "response_format",
              "stream"
            ],
            "other_fields": "απορρίπτονται, εκτός από την ακριβή ορισμένη εσωτερική δρομολόγηση παρόχου",
            "output_format_optional": [],
            "reference_images": false,
            "required": [
              "model",
              "prompt"
            ],
            "resolution_control": null,
            "response_format": [
              "url",
              "b64_json"
            ],
            "stream": [
              false
            ]
          },
          "lifecycle": {
            "assets": [
              {
                "http": "GET",
                "path": "/v1/media/assets"
              },
              {
                "http": "GET",
                "path": "/v1/media/assets/{asset_id}"
              }
            ],
            "content": [
              {
                "http": "GET",
                "path": "/v1/media/assets/{asset_id}/content",
                "url_source": "exact returned signed URL; never construct token"
              }
            ],
            "mode": "synchronous_result_then_owned_library",
            "operation_id_is_not_task_id": true,
            "status": [
              {
                "http": "GET",
                "id_source": "Το πραγματικό task_id που επιστράφηκε ή μια εγγραφή στη βιβλιοθήκη πολυμέσων",
                "path": "/v1/media/tasks/{task_id}"
              }
            ],
            "unknown": "If an image generation or edit result requires a check, keep the original operation_id/X-Client-Request-ID and returned result information. Recover existing owned results through the media library using actual task_id or asset_id values. Do not resubmit the generation/edit request or construct a polling URL from operation_id."
          },
          "manufacturer_capability": null,
          "method": {
            "http": "POST",
            "path": "/v1/images/generations"
          },
          "method_aliases": [],
          "operation_modes": [
            "text_to_image"
          ],
          "output": {
            "count": 1,
            "family": "image",
            "format": "validated raster MIME",
            "result": "actual owned URL or b64_json"
          }
        },
        "ctx": null,
        "declared_pricing_profiles": [
          {
            "dimensions": {
              "regime": "base"
            },
            "label": "Base token rates",
            "units": [
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "input_price",
                "label": "Input tokens",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "output_price",
                "label": "Output tokens",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "output_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "output_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "cache_read_price",
                "label": "Cache read",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "cached_input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "cached_input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "cache_write_price",
                "label": "Cache write",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "generic_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "generic_cache_creation_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "cache_write_1h_price",
                "label": "Cache write, 1 hour",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "one_hour_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "one_hour_cache_creation_token"
              }
            ]
          },
          {
            "dimensions": {
              "quoted_unit": "per input image"
            },
            "label": "εικόνα εισόδου",
            "units": [
              {
                "amount": "0",
                "amount_unit": "usd_per_exact_native_unit",
                "billing_input": false,
                "estimate_only": true,
                "key": "image_input",
                "label": "input image",
                "native_amount_usd_per_unit": "0",
                "native_quantity": 1,
                "public_unit_label": "per input image",
                "quantity": 1,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "image_input"
              }
            ]
          },
          {
            "dimensions": {
              "quoted_unit": "per image output"
            },
            "label": "Ultra",
            "units": [
              {
                "amount": "0.036",
                "amount_unit": "usd_per_exact_physical_unit",
                "billing_input": false,
                "estimate_only": true,
                "key": "image_output",
                "label": "image output",
                "native_amount_usd_per_unit": "0.036",
                "native_quantity": 1,
                "public_unit_label": "per image output",
                "quantity": "1",
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "image_output"
              }
            ]
          },
          {
            "basis": "Αυτή η εκτίμηση δεν αποτελεί πρόσθετη χρέωση ούτε σταθερή τιμή για την ολοκληρωμένη παραγωγή.",
            "dimensions": {
              "forecast_quantity": "one generation estimate"
            },
            "label": "Εκτιμώμενο κόστος δημιουργίας",
            "units": [
              {
                "amount": "0.036",
                "amount_unit": "usd_per_exact_native_unit",
                "billing_input": false,
                "estimate_only": true,
                "key": "forecast_usd",
                "label": "Estimated generation cost",
                "native_amount_usd_per_unit": "0.036",
                "native_quantity": 1,
                "public_unit_label": "estimate before generation",
                "quantity": 1,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "request_estimate"
              }
            ]
          }
        ],
        "examples": [
          {
            "code": "set -eu\n: \"${AILOOT_API_KEY:?Set your Ailoot API key}\"\nexport AILOOT_API_KEY\npython3 - <<'PY_REQUEST'\nimport json,os\nfrom pathlib import Path\np=json.loads('{\"model\": \"bytedance-seed/seedream-5-0-flash\", \"prompt\": \"A lighthouse on a cliff, watercolor\", \"n\": 1, \"response_format\": \"b64_json\"}')\n\nPath(\"request.json\").write_text(json.dumps(p,ensure_ascii=False))\nPY_REQUEST\ncurl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/images/generations \\\n  -H \"Authorization: Bearer $AILOOT_API_KEY\" -H 'Content-Type: application/json' \\\n  --data-binary @request.json -D response-headers.txt -o result.json\npython3 - <<'PY_RESULT'\nimport base64, json, os, subprocess\nfrom pathlib import Path\nfrom urllib.parse import urlsplit, urljoin\n\ndef save_images(items):\n    if not items: raise SystemExit(\"No completed images; retain the full response\")\n    for index, item in enumerate(items):\n        encoded=item.get(\"b64_json\")\n        uri=item.get(\"url\", \"\")\n        if not encoded and uri.startswith(\"data:image/\"):\n            header, separator, encoded=uri.partition(\",\")\n            if not separator or \";base64\" not in header: raise SystemExit(\"Unsupported image data URI\")\n        if encoded:\n            raw=base64.b64decode(encoded,validate=True)\n        elif uri:\n            uri=urljoin(\"https://api.ailoot.ai\",uri)\n            parsed=urlsplit(uri)\n            if parsed.scheme!=\"https\" or not parsed.netloc or parsed.username or parsed.password:\n                raise SystemExit(\"Invalid returned image URL\")\n            owned=parsed.netloc==\"api.ailoot.ai\" and parsed.path.startswith(\"/v1/media/assets/\") and parsed.path.endswith(\"/content\")\n            args=[\"curl\",\"--fail-with-body\",\"--silent\",\"--show-error\",uri]\n            if owned: args += [\"-H\",\"Authorization: Bearer \"+os.environ[\"AILOOT_API_KEY\"]]\n            temporary=Path(f\"image-{index}.bin\")\n            subprocess.run(args+[\"-o\",str(temporary)],check=True)\n            raw=temporary.read_bytes()\n            temporary.unlink()\n        else: raise SystemExit(\"Image has neither bytes nor URL\")\n        if not raw: raise SystemExit(\"Empty image result\")\n        ext=\"png\" if raw.startswith(b\"\\x89PNG\") else \"jpg\" if raw.startswith(b\"\\xff\\xd8\") else \"webp\" if raw[:4]==b\"RIFF\" and raw[8:12]==b\"WEBP\" else \"svg\" if raw.lstrip().startswith((b\"<svg\",b\"<?xml\")) else \"bin\"\n        Path(f\"image-{index}.{ext}\").write_bytes(raw)\n    print(\"Every returned image saved; complete response metadata retained\")\nsave_images(json.loads(Path(\"result.json\").read_text())[\"data\"])\nPY_RESULT\n",
            "label": "curl · exact creation/save all outputs",
            "language": "bash"
          },
          {
            "code": "from openai import OpenAI\nimport base64, json, os, subprocess\nfrom pathlib import Path\nfrom urllib.parse import urlsplit, urljoin\n\ndef save_images(items):\n    if not items: raise SystemExit(\"No completed images; retain the full response\")\n    for index, item in enumerate(items):\n        encoded=item.get(\"b64_json\")\n        uri=item.get(\"url\", \"\")\n        if not encoded and uri.startswith(\"data:image/\"):\n            header, separator, encoded=uri.partition(\",\")\n            if not separator or \";base64\" not in header: raise SystemExit(\"Unsupported image data URI\")\n        if encoded:\n            raw=base64.b64decode(encoded,validate=True)\n        elif uri:\n            uri=urljoin(\"https://api.ailoot.ai\",uri)\n            parsed=urlsplit(uri)\n            if parsed.scheme!=\"https\" or not parsed.netloc or parsed.username or parsed.password:\n                raise SystemExit(\"Invalid returned image URL\")\n            owned=parsed.netloc==\"api.ailoot.ai\" and parsed.path.startswith(\"/v1/media/assets/\") and parsed.path.endswith(\"/content\")\n            args=[\"curl\",\"--fail-with-body\",\"--silent\",\"--show-error\",uri]\n            if owned: args += [\"-H\",\"Authorization: Bearer \"+os.environ[\"AILOOT_API_KEY\"]]\n            temporary=Path(f\"image-{index}.bin\")\n            subprocess.run(args+[\"-o\",str(temporary)],check=True)\n            raw=temporary.read_bytes()\n            temporary.unlink()\n        else: raise SystemExit(\"Image has neither bytes nor URL\")\n        if not raw: raise SystemExit(\"Empty image result\")\n        ext=\"png\" if raw.startswith(b\"\\x89PNG\") else \"jpg\" if raw.startswith(b\"\\xff\\xd8\") else \"webp\" if raw[:4]==b\"RIFF\" and raw[8:12]==b\"WEBP\" else \"svg\" if raw.lstrip().startswith((b\"<svg\",b\"<?xml\")) else \"bin\"\n        Path(f\"image-{index}.{ext}\").write_bytes(raw)\n    print(\"Every returned image saved; complete response metadata retained\")\n\nrequest={'model': 'bytedance-seed/seedream-5-0-flash', 'prompt': 'A lighthouse on a cliff, watercolor', 'n': 1, 'response_format': 'b64_json'}\nclient=OpenAI(base_url=\"https://api.ailoot.ai/v1\",api_key=os.environ[\"AILOOT_API_KEY\"],max_retries=0)\nresult=client.images.generate(**request)\nPath(\"sdk-result.txt\").write_text(str(result),encoding=\"utf-8\")\nsave_images([{\"b64_json\":getattr(item,\"b64_json\",None),\"url\":getattr(item,\"url\",None)} for item in result.data])\n",
            "label": "Python SDK · exact payload/save all outputs",
            "language": "python"
          },
          {
            "code": "import OpenAI from \"openai\";\nimport { readFileSync, writeFileSync } from \"node:fs\";\nconst key=process.env.AILOOT_API_KEY;\nif(!key) throw new Error(\"Set your actual Ailoot API key\");\nconst client=new OpenAI({baseURL:\"https://api.ailoot.ai/v1\",apiKey:key,maxRetries:0});\nconst request={\"model\": \"bytedance-seed/seedream-5-0-flash\", \"prompt\": \"A lighthouse on a cliff, watercolor\", \"n\": 1, \"response_format\": \"b64_json\"};\nconst result=await client.images.generate(request);\nwriteFileSync(\"sdk-result.json\",JSON.stringify(result,null,2));\nif(!result.data?.length) throw new Error(\"No completed images\");\nfor(let index=0;index<result.data.length;index++) {\n  const item=result.data[index];let encoded=item.b64_json,uri=item.url||\"\",raw;\n  if(!encoded && uri.startsWith(\"data:image/\")) {\n    const comma=uri.indexOf(\",\");if(comma<0 || !uri.slice(0,comma).includes(\";base64\")) throw new Error(\"Unsupported image data URI\");\n    encoded=uri.slice(comma+1);\n  }\n  if(encoded) {\n    if(encoded.length%4!==0 || !/^[A-Za-z0-9+/]*={0,2}$/.test(encoded)) throw new Error(\"Invalid Base64\");\n    raw=Buffer.from(encoded,\"base64\");\n  } else if(uri) {\n    const u=new URL(uri,\"https://api.ailoot.ai\");\n    if(u.protocol!==\"https:\" || u.username || u.password) throw new Error(\"Invalid returned URL\");\n    const owned=u.origin===\"https://api.ailoot.ai\" && u.pathname.startsWith(\"/v1/media/assets/\") && u.pathname.endsWith(\"/content\");\n    const response=await fetch(u,{headers:owned?{Authorization:\"Bearer \"+key}:{},redirect:\"manual\"});\n    if(!response.ok) throw new Error(\"Image content download failed: \"+response.status);\n    raw=Buffer.from(await response.arrayBuffer());\n  } else throw new Error(\"Image has neither bytes nor URL\");\n  if(!raw.length) throw new Error(\"Empty image result\");\n  const ext=raw.subarray(0,4).equals(Buffer.from([137,80,78,71]))?\"png\":raw[0]===255&&raw[1]===216?\"jpg\":raw.toString(\"ascii\",0,4)===\"RIFF\"&&raw.toString(\"ascii\",8,12)===\"WEBP\"?\"webp\":raw.toString(\"utf8\").trimStart().startsWith(\"<svg\")||raw.toString(\"utf8\").trimStart().startsWith(\"<?xml\")?\"svg\":\"bin\";\n  writeFileSync(`image-${index}.${ext}`,raw);\n}\nconsole.log(\"Every returned image saved; sdk-result.json retains complete metadata\");\n",
            "label": "Node SDK · exact payload/save all outputs",
            "language": "js"
          }
        ],
        "family": "openai",
        "fast_multiplier": null,
        "flex_multiplier": null,
        "fmt": "images",
        "hints": [
          "Generate one image from prompt.",
          "Save every data item; url/b64_json are result encodings."
        ],
        "http": "POST",
        "in": null,
        "input": [
          "text"
        ],
        "label": "Картинки",
        "max_out": null,
        "max_reasoning_effort_multiplier": null,
        "method_aliases": [],
        "out": null,
        "output": [
          "image"
        ],
        "path": "/v1/images/generations",
        "price_conditions": [
          {
            "label": "Fast mode",
            "value": "Not specified",
            "when": "When fast mode is selected"
          },
          {
            "label": "Flex mode",
            "value": "Not specified",
            "when": "When flex mode is selected"
          },
          {
            "label": "Maximum reasoning effort",
            "value": "Not specified",
            "when": "When maximum reasoning effort uses the default adjustment"
          }
        ],
        "pricing": {
          "billing_mode": "original_invoice_usd",
          "image_input_price": null,
          "image_output_price": null
        },
        "pricing_profiles": [
          {
            "dimensions": {
              "regime": "base"
            },
            "label": "Base token rates",
            "units": [
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "input_price",
                "label": "Input tokens",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "output_price",
                "label": "Output tokens",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "output_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "output_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "cache_read_price",
                "label": "Cache read",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "cached_input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "cached_input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "cache_write_price",
                "label": "Cache write",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "generic_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "generic_cache_creation_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "cache_write_1h_price",
                "label": "Cache write, 1 hour",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "one_hour_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "one_hour_cache_creation_token"
              }
            ]
          },
          {
            "dimensions": {
              "quoted_unit": "per input image"
            },
            "label": "input image",
            "units": [
              {
                "amount": "0",
                "amount_unit": "usd_per_exact_native_unit",
                "billing_input": false,
                "estimate_only": true,
                "key": "image_input",
                "label": "input image",
                "native_amount_usd_per_unit": "0",
                "native_quantity": 1,
                "public_unit_label": "per input image",
                "quantity": 1,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "image_input"
              }
            ]
          },
          {
            "dimensions": {
              "quoted_unit": "per image output"
            },
            "label": "Ultra",
            "units": [
              {
                "amount": "0.036",
                "amount_unit": "usd_per_exact_physical_unit",
                "billing_input": false,
                "estimate_only": true,
                "key": "image_output",
                "label": "image output",
                "native_amount_usd_per_unit": "0.036",
                "native_quantity": 1,
                "public_unit_label": "per image output",
                "quantity": "1",
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "image_output"
              }
            ]
          },
          {
            "basis": "This estimate is not an additional charge or a fixed rate for the completed generation.",
            "dimensions": {
              "forecast_quantity": "one generation estimate"
            },
            "label": "Estimated generation cost",
            "units": [
              {
                "amount": "0.036",
                "amount_unit": "usd_per_exact_native_unit",
                "billing_input": false,
                "estimate_only": true,
                "key": "forecast_usd",
                "label": "Estimated generation cost",
                "native_amount_usd_per_unit": "0.036",
                "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": "bytedance-seed/seedream-5-0-flash",
        "route_label": "Ultra",
        "status_reads": [
          "GET /v1/media/tasks/{task_id}",
          "GET /v1/media/assets/{asset_id}/content"
        ],
        "tiers": [],
        "units": [
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": false,
            "estimate_only": true,
            "key": "input_price",
            "label": "Input tokens",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "input_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "input_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": false,
            "estimate_only": true,
            "key": "output_price",
            "label": "Output tokens",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "output_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "out",
            "unit": "output_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": false,
            "estimate_only": true,
            "key": "cache_read_price",
            "label": "Cache read",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "cached_input_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "cached_input_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": false,
            "estimate_only": true,
            "key": "cache_write_price",
            "label": "Cache write",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "generic_cache_creation_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "generic_cache_creation_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": false,
            "estimate_only": true,
            "key": "cache_write_1h_price",
            "label": "Cache write, 1 hour",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "one_hour_cache_creation_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "one_hour_cache_creation_token"
          },
          {
            "amount": "0",
            "amount_unit": "usd_per_exact_native_unit",
            "billing_input": false,
            "estimate_only": true,
            "key": "image_input",
            "label": "input image",
            "native_amount_usd_per_unit": "0",
            "native_quantity": 1,
            "public_unit_label": "per input image",
            "quantity": 1,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "image_input"
          },
          {
            "amount": "0.036",
            "amount_unit": "usd_per_exact_physical_unit",
            "billing_input": false,
            "estimate_only": true,
            "key": "image_output",
            "label": "image output",
            "native_amount_usd_per_unit": "0.036",
            "native_quantity": 1,
            "public_unit_label": "per image output",
            "quantity": "1",
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "out",
            "unit": "image_output"
          },
          {
            "amount": "0.036",
            "amount_unit": "usd_per_exact_native_unit",
            "billing_input": false,
            "estimate_only": true,
            "key": "forecast_usd",
            "label": "Estimated generation cost",
            "native_amount_usd_per_unit": "0.036",
            "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": "bytedance-seed/seedream-5-0-flash",
  "nativeProvenance": {
    "input_facts_canonical_sha256": "58dd38633846a44550b5511892635694923c2654a97eccf0d644f70d25836b03",
    "input_html_sha256": "d8d6e3689bb25bbe9d1838ed8285f7461a461bb9cabbb845414393b12b60b505",
    "private_audit_sha256": "3ed7941d0b90857abd88dba3e27209ed81665dbb3aed7da4c4451de81ca26796",
    "role": "historical-normalized-input-audit-hashes",
    "schema": "ailoot-native-model-provenance-v2"
  },
  "page": {
    "canonical": "https://ailoot.ai/models/el/bytedance-seed-seedream-5-0-flash/",
    "description": "Το Seedream 5.0 Flash δημιουργεί και επεξεργάζεται εικόνες από κείμενο και οπτικές αναφορές, με χωρικά καθοδηγούμενες αλλαγές, πολύγλωσσο κείμενο εικόνας και αποσύνθεση επιπέδων. Η ByteDance Seed τοποθετεί το Flash για ταχύτερη δημιουργία, διατηρώντας το διακριτό από την έκδοση Pro με έμφαση στην ποιότητα.",
    "locale": "el",
    "md_url": "https://ailoot.ai/models/el/bytedance-seed-seedream-5-0-flash/index.md",
    "title": "ByteDance Seed: Seedream 5.0 Flash — Ailoot",
    "url": "https://ailoot.ai/models/el/bytedance-seed-seedream-5-0-flash/"
  },
  "rawModel": {
    "about": "Μια ταχύτερη έκδοση δημιουργίας εικόνων\n\nΤο Seedream 5.0 Flash είναι το μοντέλο δημιουργίας και επεξεργασίας εικόνων της ByteDance Seed για ροές που δίνουν προτεραιότητα στην ταχύτητα δημιουργίας. Ο οδηγός Pro/Flash του κατασκευαστή περιγράφει τόσο δημιουργία από κείμενο όσο και από εικόνα με μία ή πολλές αναφορές. Διακρίνει την ταχύτερη δημιουργία Flash από την προτεραιότητα υψηλότερης ποιότητας εικόνας του Pro, χωρίς να καθορίζει σταθερό χρόνο απόκρισης για κάθε περιγραφή.\n\nΟι καθοριστικές κοινές δυνατότητες είναι διαδραστική επεξεργασία, αποσύνθεση επιπέδων και εγγενής πολύγλωσση δημιουργία. Η συνήθης δημιουργία επιστρέφει μία ολοκληρωμένη εικόνα. Η ροή Flash του κατασκευαστή δεν υποστηρίζει διαδοχική δημιουργία σχετικών εικόνων, αναζήτηση ιστού ή ροή εξόδου εικόνων. Η βελτιστοποίηση προτροπής χρησιμοποιεί την τυπική λειτουργία· ο χωριστός έλεγχος γρήγορης βελτιστοποίησης ανήκει στο Pro αντί στο Flash.\n\nΔημιουργία από περιγραφή και αναφορές\n\nΔηλώστε την επιθυμητή εικόνα, το κύριο θέμα, τη σύνθεση και την οπτική απόδοση και προσδιορίστε έπειτα τι ελέγχει κάθε αναφορά. Για οπτικό προϊόντος, διαχωρίστε την αναφορά που καθορίζει το αντικείμενο από εκείνη που παρέχει παλέτα ή υλικό επιφάνειας. Το «Κράτησε τη σιλουέτα και την οπτική γωνία του αντικειμένου από την πρώτη εικόνα· χρησιμοποίησε τη δεύτερη μόνο για την ήπια παλέτα φόντου» δίνει στις αναφορές διακριτούς ρόλους.\n\nΟ κατασκευαστής συνιστά σύντομες προτροπές, όχι περισσότερους από 300 κινεζικούς χαρακτήρες ή 600 αγγλικές λέξεις. Πρόκειται για οδηγία προετοιμασίας αντί για δηλωμένο αυστηρό όριο εισόδου κειμένου. Καταγράψτε πρώτα τις αποφασιστικές απαιτήσεις, μαζί με ακριβή διατύπωση που πρέπει να εμφανιστεί, επιθυμητή αναλογία και λεπτομέρειες που πρέπει να μείνουν αμετάβλητες. Εξετάστε την ολοκληρωμένη εικόνα έναντι αυτής της λίστας, αντί να βασίζεστε μόνο στη συνολική εμφάνιση.\n\nΧωρικά καθοδηγούμενη επεξεργασία\n\nΤο Flash μπορεί να χρησιμοποιεί σημεία, πλαίσια οριοθέτησης, βέλη και ελεύθερες σημάνσεις για να προσδιορίζει πού πρέπει να γίνει επεξεργασία. Δώστε την αρχική εικόνα μαζί με θέση και αλλαγή. Για ιδέα εσωτερικού χώρου, σημειώστε την καρέκλα, ζητήστε αντικατάσταση υφάσματος και προσδιορίστε δάπεδο, τοίχο, γωνία κάμερας και κοντινά αντικείμενα που θα διατηρηθούν. Αν οι σημάνσεις είναι μόνο καθοδήγηση, ζητήστε ρητά την αφαίρεσή τους από την ολοκληρωμένη εικόνα.\n\nΟ οδηγός επεξεργασίας συντεταγμένων του κατασκευαστή χρησιμοποιεί ετικέτες <point> και <bbox> με συντεταγμένες κανονικοποιημένες στο 0–999 ως προς τη συγκεκριμένη εικόνα εισόδου. Ένα σημείο περιέχει x και y· ένα πλαίσιο περιέχει τις συντεταγμένες επάνω αριστερά και κάτω δεξιά. Προσδιορίστε αριθμό εικόνας και αντικείμενο στόχου, ιδίως όταν ένα πλαίσιο περιλαμβάνει αρκετά θέματα. Για επεξεργασία μεταξύ εικόνων, διακρίνετε το αντικείμενο που θα ληφθεί από μία αναφορά και την περιοχή προορισμού σε άλλη.\n\nΧρησιμοποιήστε τις ίδιες τις διαστάσεις της εμφανιζόμενης εικόνας όταν εξάγετε την αναλογική θέση· η μεγέθυνση ή μετατόπιση καμβά και οι συντεταγμένες προγράμματος περιήγησης δεν είναι οι κανονικοποιημένες συντεταγμένες εικόνας. Περιγράψτε προστατευμένες περιοχές μαζί με την επεξεργασμένη. Συγκρίνετε προοπτική, φωτισμό και γύρω λεπτομέρειες αποτελέσματος με την αρχική πηγή.\n\nΔιαχωρισμός σύνθεσης σε επεξεργάσιμα επίπεδα\n\nΗ αποσύνθεση επιπέδων είναι διακριτή λειτουργία που δέχεται ακριβώς μία εικόνα και επιστρέφει εικόνα βάσης μαζί με έως 16 ανεξάρτητα επίπεδα. Κάθε επίπεδο είναι PNG με alpha. Μια προτροπή μπορεί να ονομάζει τα στοιχεία προς διαχωρισμό, όπως τίτλο, κύριο θέμα και διακοσμητικά· χωρίς προτροπή αποσύνθεσης, το μοντέλο προσδιορίζει αυτόματα τα κύρια στοιχεία.\n\nΤα αποτελέσματα περιλαμβάνουν ονόματα επιπέδων, περιγραφές, σειρά στοίβαξης και πλαίσια τοποθέτησης. Χρησιμοποιήστε την εικόνα βάσης με δείκτη στοίβαξης μηδέν και τοποθετήστε τα άλλα επίπεδα σε αύξουσα σειρά στοίβαξης. Τα απόλυτα πλαίσια περιγράφουν θέση στην εικόνα βάσης εξόδου· τα κανονικοποιημένα πλαίσια περιγράφουν αναλογική θέση σε διαφορετικό καμβά. Κρατήστε αυτά τα επιστρεφόμενα μεταδεδομένα τοποθέτησης με τα αρχεία εικόνας, ώστε η αρχική σύνθεση να ανακατασκευάζεται πριν αναδιαταχθεί.\n\nΓια αναθεώρηση αφίσας, διαχωρίστε το κύριο εικαστικό από τον τίτλο και τα διακοσμητικά και εξετάστε κατόπιν άκρα και κάθε αποκατεστημένη περιοχή φόντου. Ένα διαφανές επίπεδο μπορεί να υποβληθεί σε επεξεργασία ως μία είσοδος με κανάλι alpha, με έξοδο διαφανούς PNG. Η επιλογή διαφανούς φόντου αφορά αυτή τη ροή επεξεργασίας εικόνας μίας εισόδου· η συνήθης δημιουργία από κείμενο είναι χωριστή λειτουργία.\n\nΠολύγλωσση σύνθεση\n\nΕκτός από κινεζικά και αγγλικά, ο κατασκευαστής τεκμηριώνει εγγενή υποστήριξη προτροπών και κειμένου εικόνας για ρωσικά, αραβικά, φιλιππινέζικα, ταϊλανδικά, τουρκικά, κορεατικά, μαλαϊκά, ισπανικά, πορτογαλικά, ινδονησιακά, γαλλικά, γερμανικά, βιετναμικά και ιαπωνικά. Δώστε την ακριβή εγκεκριμένη διατύπωση και κατεύθυνση ανάγνωσης και προσδιορίστε ποια περιοχή περιέχει κάθε μπλοκ κειμένου. Ελέγξτε τόνους, ενωμένους χαρακτήρες, αλλαγές γραμμής και μικρές ετικέτες στην τελική εικόνα.\n\nΑρχεία αναφοράς και προδιαγραφές εξόδου\n\nΗ δημιουργία εικόνας δέχεται έως 10 αναφορές σε JPEG, PNG, WebP, BMP, TIFF, GIF, HEIC ή HEIF. Καθεμία μπορεί να είναι έως 30 MB, με αμφότερες τις πλευρές πάνω από 14 pixel, 196–36,000,000 συνολικά pixel και αναλογία από 1:16 έως 16:1. Η αποσύνθεση επιπέδων απαιτεί αντίθετα ένα JPEG ή PNG 262,144–36,000,000 pixel, έως 30 MB, στο ίδιο εύρος αναλογίας.\n\nΗ δημιουργία προσφέρει βαθμίδες εξόδου 1K, 1.5K και 2K, με προεπιλογή 2K, ή ρητές διαστάσεις με 921,600–4,624,220 συνολικά pixel και αναλογίες από 1:16 έως 16:1. Και οι δύο περιορισμοί ισχύουν για προσαρμοσμένες διαστάσεις. Η έξοδος επιπέδων χρησιμοποιεί 1K, 1.5K, 2K ή auto, με προεπιλογή auto· η βάση και κάθε επίπεδο διατηρούν τις αντίστοιχες αρχικές αναλογίες τους.\n\nΟι ολοκληρωμένες εικόνες είναι JPEG ή PNG. Η μορφή εικόνας βάσης μπορεί να επιλέγεται χωριστά, ενώ τα αποσυντεθειμένα επίπεδα παραμένουν PNG με alpha. Η παράδοση μπορεί να χρησιμοποιεί κωδικοποιημένα δεδομένα εικόνας ή συνδέσμους λήψης που διατηρούνται για 24 ώρες. Αποθηκεύστε κάθε επιστρεφόμενη εικόνα και τα μεταδεδομένα της για την επιθυμητή σχεδιαστική ροή. Εξετάστε κείμενο, επεξεργασμένες λεπτομέρειες και ευθυγράμμιση επιπέδων στο μέγεθος χρήσης του εικαστικού.",
    "alias_of": null,
    "aliases": [],
    "author": "ByteDance Seed",
    "available": null,
    "canonical_model": "bytedance-seed/seedream-5-0-flash",
    "capabilities": {
      "context_length": 0,
      "manufacturer_input": [
        "text",
        "image"
      ],
      "manufacturer_output": [
        "image"
      ]
    },
    "card_routes": [
      {
        "label": "Ultra",
        "rates": [
          {
            "amount": "0.036",
            "amount_unit": "usd_per_exact_native_unit",
            "billing_input": false,
            "estimate_only": true,
            "key": "forecast_usd",
            "label": "Estimated generation cost",
            "native_amount_usd_per_unit": "0.036",
            "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,
    "declared_tariff_references": [
      {
        "client_selectable": false,
        "key": "c28268da12f5c8a4b252dcc4",
        "label": "Διαμορφώσεις τιμολόγησης εικόνων",
        "profiles": [
          {
            "basis": "Οι ισοδύναμες καταχωρίσεις περιγράφουν την ίδια χρέωση· δεν προσθέτουν δεύτερη χρέωση.",
            "dimensions": {
              "conditions": "Δεν δηλώνεται παραλλαγή τιμολόγησης."
            },
            "label": "Εικόνα εξόδου",
            "units": [
              {
                "amount": "0.036",
                "amount_unit": "usd_per_image",
                "billing_input": false,
                "key": "output_image",
                "label": "Output image",
                "public_unit_label": "per image",
                "quantity": 1,
                "rate_role": "typed_image_reference",
                "side": "out",
                "unit": "image"
              }
            ]
          },
          {
            "basis": "Οι ισοδύναμες καταχωρίσεις περιγράφουν την ίδια χρέωση· δεν προσθέτουν δεύτερη χρέωση.",
            "dimensions": {
              "conditions": "Δεν δηλώνεται παραλλαγή τιμολόγησης."
            },
            "label": "Εικόνα εισόδου",
            "units": [
              {
                "amount": "0",
                "amount_unit": "usd_per_image",
                "billing_input": false,
                "key": "input_image",
                "label": "Input image",
                "public_unit_label": "per image",
                "quantity": 1,
                "rate_role": "typed_image_reference",
                "side": "in",
                "unit": "image"
              }
            ]
          }
        ]
      }
    ],
    "entity_type": "model",
    "formats": [
      "images"
    ],
    "id": "bytedance-seed/seedream-5-0-flash",
    "input": [
      "text"
    ],
    "kind": "image",
    "max_out": null,
    "methods": [
      {
        "available": null,
        "billing_basis": {
          "basis": "original_invoice_usd",
          "description": "Οι εμφανιζόμενες τιμές χρησιμοποιούνται για την εκτίμηση του κόστους πριν από την παραγωγή. Η τελική χρέωση υπολογίζεται από το κόστος που καταγράφηκε για την αρχική παραγωγή. Η μετρημένη διάρκεια της εξόδου και οι προβλεπόμενες ποσότητες δεν αποτελούν την τελική χρεώσιμη ποσότητα.",
          "forecast_quantity_is_estimate": true,
          "physical_output_is_billable_quantity": false,
          "version": "original_invoice_usd_v1"
        },
        "cache_read": null,
        "cache_write": null,
        "cache_write_1h": null,
        "contract": {
          "data": {
            "all_results": "Save every data item. Decode each b64_json or fetch every returned signed URL. Select a filename extension from the actual MIME/bytes.",
            "errors": [
              {
                "code": null,
                "condition": "Μη έγκυρα υποχρεωτικά πεδία, μη έγκυρη αναπαράσταση υλικού ή μη έγκυρη τιμή παραμέτρου",
                "http_status": 400,
                "recovery": "Διορθώστε τα υποδεικνυόμενα πεδία πριν από νέο αίτημα δημιουργίας.",
                "type": "invalid_request_error"
              },
              {
                "code": null,
                "condition": "Η απόκριση που επιστράφηκε αναφέρει ότι η λειτουργία ή το αποτέλεσμα χρειάζεται έλεγχο",
                "http_status": null,
                "recovery": "Διατηρήστε το αρχικό ID της λειτουργίας/εργασίας που επιστράφηκε, τις κεφαλίδες του αιτήματος και την απόκριση· συνεχίστε με τις υποστηριζόμενες αναγνώσεις αυτής της αρχικής λειτουργίας. Μην υποβάλετε ξανά το αίτημα δημιουργίας.",
                "type": "server_error"
              }
            ],
            "hints": [],
            "ignored_fields": [],
            "lifecycle": {
              "all_results": "Follow everyactualreturnedoutputandownedasset; no result is discardedbecauseindex0orcontent_urlalreadyexists.",
              "assets": [
                {
                  "http": "GET",
                  "path": "/v1/media/assets"
                },
                {
                  "http": "GET",
                  "path": "/v1/media/assets/{asset_id}"
                }
              ],
              "content": [
                {
                  "http": "GET",
                  "path": "/v1/media/assets/{asset_id}/content",
                  "url_source": "exact returned signed URL; never construct token"
                }
              ],
              "mode": "synchronous_result_then_owned_library",
              "operation_id_is_not_task_id": true,
              "status": [
                {
                  "http": "GET",
                  "id_source": "actual returned task_id or media library record",
                  "path": "/v1/media/tasks/{task_id}"
                }
              ],
              "unknown": "Αν το αποτέλεσμα παραγωγής ή επεξεργασίας εικόνας χρειάζεται έλεγχο, διατηρήστε το αρχικό operation_id/X-Client-Request-ID και τις πληροφορίες αποτελέσματος που επιστράφηκαν. Ανακτήστε τα υπάρχοντα αποτελέσματα που σας ανήκουν μέσω της βιβλιοθήκης πολυμέσων χρησιμοποιώντας πραγματικές τιμές task_id ή asset_id. Μην υποβάλετε ξανά το αίτημα παραγωγής/επεξεργασίας και μην κατασκευάσετε URL περιοδικού ελέγχου από το operation_id."
            },
            "material_combinations": [
              {
                "content_type": "application/json",
                "mode": "text_to_image",
                "reference_images": false,
                "required": [
                  "prompt"
                ]
              }
            ],
            "media_library": {
              "asset": {
                "fields": [
                  {
                    "description": null,
                    "name": "asset_id",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "task_id",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "output_key",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "family",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "model",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "method",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "status",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "content_type",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "sha256",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "size_bytes",
                    "type": "integer"
                  },
                  {
                    "description": null,
                    "name": "content_url",
                    "type": "string"
                  }
                ],
                "http": "GET",
                "id_source": "actual returned asset_id",
                "path": "/v1/media/assets/{asset_id}"
              },
              "content": {
                "http": "GET",
                "path": "/v1/media/assets/{asset_id}/content",
                "range_header_supported": true,
                "url_source": "Use exact returned signed content_url including its token; do not construct a token."
              },
              "expired_link": {
                "code": "link_expired",
                "http_status": 404,
                "recovery": "Read the asset again to obtain its refreshed signed content_url, then fetch that URL. Do not regenerate."
              },
              "list": {
                "all_pages": "Follow every returned next_cursor, then select records by their actual task_id/output_key.",
                "http": "GET",
                "output_fields": [
                  {
                    "description": null,
                    "name": "object",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "data",
                    "type": "asset[]"
                  },
                  {
                    "description": null,
                    "name": "next_cursor",
                    "type": "string|null"
                  }
                ],
                "parameters": [
                  {
                    "availability": "source_interface",
                    "default": null,
                    "default_known": false,
                    "enum": null,
                    "enum_known": false,
                    "name": "family",
                    "required": false,
                    "type": "string"
                  },
                  {
                    "availability": "source_interface",
                    "default": null,
                    "default_known": false,
                    "enum": null,
                    "enum_known": false,
                    "name": "cursor",
                    "required": false,
                    "type": "string"
                  },
                  {
                    "availability": "source_interface",
                    "default": 20,
                    "default_known": true,
                    "enum": null,
                    "enum_known": false,
                    "maximum": 100,
                    "minimum": 1,
                    "name": "limit",
                    "required": false,
                    "type": "integer"
                  }
                ],
                "path": "/v1/media/assets"
              },
              "revoke": {
                "http": "DELETE",
                "meaning": "Revokes/deletes the existing owned file; this is not generation cancellation.",
                "path": "/v1/media/assets/{asset_id}",
                "pending_status": "revoking",
                "success_statuses": [
                  202,
                  204
                ]
              },
              "task": {
                "http": "GET",
                "id_source": "actual returned task_id or media library record; operation_id is not task_id",
                "path": "/v1/media/tasks/{task_id}"
              }
            },
            "operation_modes": [
              "text_to_image"
            ],
            "outputs": {
              "all_results": "Αποθηκεύστε κάθε στοιχείο δεδομένων. Αποκωδικοποιήστε κάθε b64_json ή ανακτήστε κάθε υπογεγραμμένο URL που επιστράφηκε. Επιλέξτε την επέκταση του ονόματος αρχείου βάσει του πραγματικού τύπου MIME/των byte.",
              "count": 1,
              "family": "image",
              "fields": [
                {
                  "description": null,
                  "name": "created",
                  "type": "integer"
                },
                {
                  "description": null,
                  "name": "data[].url",
                  "type": "string"
                },
                {
                  "description": null,
                  "name": "data[].b64_json",
                  "type": "base64 string"
                },
                {
                  "description": null,
                  "name": "usage",
                  "type": "object"
                }
              ],
              "format": "actual validated raster MIME"
            },
            "parameters": [
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": [
                  "bytedance-seed/seedream-5-0-flash"
                ],
                "enum_known": true,
                "name": "model",
                "required": true,
                "type": "string"
              },
              {
                "availability": "source_interface",
                "conditions": "Μη κενή προτροπή UTF8. Δεν επινοείται καθολικό όριο χαρακτήρων του κατασκευαστή.",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "min_length": 1,
                "name": "prompt",
                "required": true,
                "type": "string"
              },
              {
                "availability": "source_interface",
                "default": 1,
                "default_known": true,
                "enum": [
                  1
                ],
                "enum_known": true,
                "name": "n",
                "required": false,
                "type": "integer"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": [
                  "url",
                  "b64_json"
                ],
                "enum_known": true,
                "name": "response_format",
                "required": false,
                "type": "string"
              },
              {
                "availability": "source_interface",
                "default": false,
                "default_known": true,
                "enum": [
                  false
                ],
                "enum_known": true,
                "name": "stream",
                "required": false,
                "type": "boolean"
              }
            ],
            "profile_binding": "Exact existing Ailoot model and method; interface constraints below do not assert provider qualification.",
            "unsupported": [
              "image edits/references",
              "resolution/size",
              "aspect_ratio",
              "stream=true",
              "n other than1",
              "other fields outside this exact facade profile",
              "output_format field must be omitted"
            ]
          },
          "hints": [
            "Δημιουργήστε μία εικόνα από προτροπή.",
            "Αποθηκεύστε κάθε στοιχείο δεδομένων· τα url/b64_json είναι κωδικοποιήσεις αποτελεσμάτων."
          ],
          "input": {
            "aspect_ratio_control": null,
            "content_type": "application/json",
            "edit": false,
            "material_types": [
              "text"
            ],
            "n": [
              1
            ],
            "optional": [
              "n",
              "response_format",
              "stream"
            ],
            "other_fields": "απορρίπτονται, εκτός από την ακριβή ορισμένη εσωτερική δρομολόγηση παρόχου",
            "output_format_optional": [],
            "reference_images": false,
            "required": [
              "model",
              "prompt"
            ],
            "resolution_control": null,
            "response_format": [
              "url",
              "b64_json"
            ],
            "stream": [
              false
            ]
          },
          "lifecycle": {
            "assets": [
              {
                "http": "GET",
                "path": "/v1/media/assets"
              },
              {
                "http": "GET",
                "path": "/v1/media/assets/{asset_id}"
              }
            ],
            "content": [
              {
                "http": "GET",
                "path": "/v1/media/assets/{asset_id}/content",
                "url_source": "exact returned signed URL; never construct token"
              }
            ],
            "mode": "synchronous_result_then_owned_library",
            "operation_id_is_not_task_id": true,
            "status": [
              {
                "http": "GET",
                "id_source": "Το πραγματικό task_id που επιστράφηκε ή μια εγγραφή στη βιβλιοθήκη πολυμέσων",
                "path": "/v1/media/tasks/{task_id}"
              }
            ],
            "unknown": "If an image generation or edit result requires a check, keep the original operation_id/X-Client-Request-ID and returned result information. Recover existing owned results through the media library using actual task_id or asset_id values. Do not resubmit the generation/edit request or construct a polling URL from operation_id."
          },
          "manufacturer_capability": null,
          "method": {
            "http": "POST",
            "path": "/v1/images/generations"
          },
          "method_aliases": [],
          "operation_modes": [
            "text_to_image"
          ],
          "output": {
            "count": 1,
            "family": "image",
            "format": "validated raster MIME",
            "result": "actual owned URL or b64_json"
          }
        },
        "ctx": null,
        "declared_pricing_profiles": [
          {
            "dimensions": {
              "regime": "base"
            },
            "label": "Base token rates",
            "units": [
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "input_price",
                "label": "Input tokens",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "output_price",
                "label": "Output tokens",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "output_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "output_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "cache_read_price",
                "label": "Cache read",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "cached_input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "cached_input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "cache_write_price",
                "label": "Cache write",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "generic_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "generic_cache_creation_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "cache_write_1h_price",
                "label": "Cache write, 1 hour",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "one_hour_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "one_hour_cache_creation_token"
              }
            ]
          },
          {
            "dimensions": {
              "quoted_unit": "per input image"
            },
            "label": "εικόνα εισόδου",
            "units": [
              {
                "amount": "0",
                "amount_unit": "usd_per_exact_native_unit",
                "billing_input": false,
                "estimate_only": true,
                "key": "image_input",
                "label": "input image",
                "native_amount_usd_per_unit": "0",
                "native_quantity": 1,
                "public_unit_label": "per input image",
                "quantity": 1,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "image_input"
              }
            ]
          },
          {
            "dimensions": {
              "quoted_unit": "per image output"
            },
            "label": "Ultra",
            "units": [
              {
                "amount": "0.036",
                "amount_unit": "usd_per_exact_physical_unit",
                "billing_input": false,
                "estimate_only": true,
                "key": "image_output",
                "label": "image output",
                "native_amount_usd_per_unit": "0.036",
                "native_quantity": 1,
                "public_unit_label": "per image output",
                "quantity": "1",
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "image_output"
              }
            ]
          },
          {
            "basis": "Αυτή η εκτίμηση δεν αποτελεί πρόσθετη χρέωση ούτε σταθερή τιμή για την ολοκληρωμένη παραγωγή.",
            "dimensions": {
              "forecast_quantity": "one generation estimate"
            },
            "label": "Εκτιμώμενο κόστος δημιουργίας",
            "units": [
              {
                "amount": "0.036",
                "amount_unit": "usd_per_exact_native_unit",
                "billing_input": false,
                "estimate_only": true,
                "key": "forecast_usd",
                "label": "Estimated generation cost",
                "native_amount_usd_per_unit": "0.036",
                "native_quantity": 1,
                "public_unit_label": "estimate before generation",
                "quantity": 1,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "request_estimate"
              }
            ]
          }
        ],
        "examples": [
          {
            "code": "set -eu\n: \"${AILOOT_API_KEY:?Set your Ailoot API key}\"\nexport AILOOT_API_KEY\npython3 - <<'PY_REQUEST'\nimport json,os\nfrom pathlib import Path\np=json.loads('{\"model\": \"bytedance-seed/seedream-5-0-flash\", \"prompt\": \"A lighthouse on a cliff, watercolor\", \"n\": 1, \"response_format\": \"b64_json\"}')\n\nPath(\"request.json\").write_text(json.dumps(p,ensure_ascii=False))\nPY_REQUEST\ncurl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/images/generations \\\n  -H \"Authorization: Bearer $AILOOT_API_KEY\" -H 'Content-Type: application/json' \\\n  --data-binary @request.json -D response-headers.txt -o result.json\npython3 - <<'PY_RESULT'\nimport base64, json, os, subprocess\nfrom pathlib import Path\nfrom urllib.parse import urlsplit, urljoin\n\ndef save_images(items):\n    if not items: raise SystemExit(\"No completed images; retain the full response\")\n    for index, item in enumerate(items):\n        encoded=item.get(\"b64_json\")\n        uri=item.get(\"url\", \"\")\n        if not encoded and uri.startswith(\"data:image/\"):\n            header, separator, encoded=uri.partition(\",\")\n            if not separator or \";base64\" not in header: raise SystemExit(\"Unsupported image data URI\")\n        if encoded:\n            raw=base64.b64decode(encoded,validate=True)\n        elif uri:\n            uri=urljoin(\"https://api.ailoot.ai\",uri)\n            parsed=urlsplit(uri)\n            if parsed.scheme!=\"https\" or not parsed.netloc or parsed.username or parsed.password:\n                raise SystemExit(\"Invalid returned image URL\")\n            owned=parsed.netloc==\"api.ailoot.ai\" and parsed.path.startswith(\"/v1/media/assets/\") and parsed.path.endswith(\"/content\")\n            args=[\"curl\",\"--fail-with-body\",\"--silent\",\"--show-error\",uri]\n            if owned: args += [\"-H\",\"Authorization: Bearer \"+os.environ[\"AILOOT_API_KEY\"]]\n            temporary=Path(f\"image-{index}.bin\")\n            subprocess.run(args+[\"-o\",str(temporary)],check=True)\n            raw=temporary.read_bytes()\n            temporary.unlink()\n        else: raise SystemExit(\"Image has neither bytes nor URL\")\n        if not raw: raise SystemExit(\"Empty image result\")\n        ext=\"png\" if raw.startswith(b\"\\x89PNG\") else \"jpg\" if raw.startswith(b\"\\xff\\xd8\") else \"webp\" if raw[:4]==b\"RIFF\" and raw[8:12]==b\"WEBP\" else \"svg\" if raw.lstrip().startswith((b\"<svg\",b\"<?xml\")) else \"bin\"\n        Path(f\"image-{index}.{ext}\").write_bytes(raw)\n    print(\"Every returned image saved; complete response metadata retained\")\nsave_images(json.loads(Path(\"result.json\").read_text())[\"data\"])\nPY_RESULT\n",
            "label": "curl · exact creation/save all outputs",
            "language": "bash"
          },
          {
            "code": "from openai import OpenAI\nimport base64, json, os, subprocess\nfrom pathlib import Path\nfrom urllib.parse import urlsplit, urljoin\n\ndef save_images(items):\n    if not items: raise SystemExit(\"No completed images; retain the full response\")\n    for index, item in enumerate(items):\n        encoded=item.get(\"b64_json\")\n        uri=item.get(\"url\", \"\")\n        if not encoded and uri.startswith(\"data:image/\"):\n            header, separator, encoded=uri.partition(\",\")\n            if not separator or \";base64\" not in header: raise SystemExit(\"Unsupported image data URI\")\n        if encoded:\n            raw=base64.b64decode(encoded,validate=True)\n        elif uri:\n            uri=urljoin(\"https://api.ailoot.ai\",uri)\n            parsed=urlsplit(uri)\n            if parsed.scheme!=\"https\" or not parsed.netloc or parsed.username or parsed.password:\n                raise SystemExit(\"Invalid returned image URL\")\n            owned=parsed.netloc==\"api.ailoot.ai\" and parsed.path.startswith(\"/v1/media/assets/\") and parsed.path.endswith(\"/content\")\n            args=[\"curl\",\"--fail-with-body\",\"--silent\",\"--show-error\",uri]\n            if owned: args += [\"-H\",\"Authorization: Bearer \"+os.environ[\"AILOOT_API_KEY\"]]\n            temporary=Path(f\"image-{index}.bin\")\n            subprocess.run(args+[\"-o\",str(temporary)],check=True)\n            raw=temporary.read_bytes()\n            temporary.unlink()\n        else: raise SystemExit(\"Image has neither bytes nor URL\")\n        if not raw: raise SystemExit(\"Empty image result\")\n        ext=\"png\" if raw.startswith(b\"\\x89PNG\") else \"jpg\" if raw.startswith(b\"\\xff\\xd8\") else \"webp\" if raw[:4]==b\"RIFF\" and raw[8:12]==b\"WEBP\" else \"svg\" if raw.lstrip().startswith((b\"<svg\",b\"<?xml\")) else \"bin\"\n        Path(f\"image-{index}.{ext}\").write_bytes(raw)\n    print(\"Every returned image saved; complete response metadata retained\")\n\nrequest={'model': 'bytedance-seed/seedream-5-0-flash', 'prompt': 'A lighthouse on a cliff, watercolor', 'n': 1, 'response_format': 'b64_json'}\nclient=OpenAI(base_url=\"https://api.ailoot.ai/v1\",api_key=os.environ[\"AILOOT_API_KEY\"],max_retries=0)\nresult=client.images.generate(**request)\nPath(\"sdk-result.txt\").write_text(str(result),encoding=\"utf-8\")\nsave_images([{\"b64_json\":getattr(item,\"b64_json\",None),\"url\":getattr(item,\"url\",None)} for item in result.data])\n",
            "label": "Python SDK · exact payload/save all outputs",
            "language": "python"
          },
          {
            "code": "import OpenAI from \"openai\";\nimport { readFileSync, writeFileSync } from \"node:fs\";\nconst key=process.env.AILOOT_API_KEY;\nif(!key) throw new Error(\"Set your actual Ailoot API key\");\nconst client=new OpenAI({baseURL:\"https://api.ailoot.ai/v1\",apiKey:key,maxRetries:0});\nconst request={\"model\": \"bytedance-seed/seedream-5-0-flash\", \"prompt\": \"A lighthouse on a cliff, watercolor\", \"n\": 1, \"response_format\": \"b64_json\"};\nconst result=await client.images.generate(request);\nwriteFileSync(\"sdk-result.json\",JSON.stringify(result,null,2));\nif(!result.data?.length) throw new Error(\"No completed images\");\nfor(let index=0;index<result.data.length;index++) {\n  const item=result.data[index];let encoded=item.b64_json,uri=item.url||\"\",raw;\n  if(!encoded && uri.startsWith(\"data:image/\")) {\n    const comma=uri.indexOf(\",\");if(comma<0 || !uri.slice(0,comma).includes(\";base64\")) throw new Error(\"Unsupported image data URI\");\n    encoded=uri.slice(comma+1);\n  }\n  if(encoded) {\n    if(encoded.length%4!==0 || !/^[A-Za-z0-9+/]*={0,2}$/.test(encoded)) throw new Error(\"Invalid Base64\");\n    raw=Buffer.from(encoded,\"base64\");\n  } else if(uri) {\n    const u=new URL(uri,\"https://api.ailoot.ai\");\n    if(u.protocol!==\"https:\" || u.username || u.password) throw new Error(\"Invalid returned URL\");\n    const owned=u.origin===\"https://api.ailoot.ai\" && u.pathname.startsWith(\"/v1/media/assets/\") && u.pathname.endsWith(\"/content\");\n    const response=await fetch(u,{headers:owned?{Authorization:\"Bearer \"+key}:{},redirect:\"manual\"});\n    if(!response.ok) throw new Error(\"Image content download failed: \"+response.status);\n    raw=Buffer.from(await response.arrayBuffer());\n  } else throw new Error(\"Image has neither bytes nor URL\");\n  if(!raw.length) throw new Error(\"Empty image result\");\n  const ext=raw.subarray(0,4).equals(Buffer.from([137,80,78,71]))?\"png\":raw[0]===255&&raw[1]===216?\"jpg\":raw.toString(\"ascii\",0,4)===\"RIFF\"&&raw.toString(\"ascii\",8,12)===\"WEBP\"?\"webp\":raw.toString(\"utf8\").trimStart().startsWith(\"<svg\")||raw.toString(\"utf8\").trimStart().startsWith(\"<?xml\")?\"svg\":\"bin\";\n  writeFileSync(`image-${index}.${ext}`,raw);\n}\nconsole.log(\"Every returned image saved; sdk-result.json retains complete metadata\");\n",
            "label": "Node SDK · exact payload/save all outputs",
            "language": "js"
          }
        ],
        "family": "openai",
        "fast_multiplier": null,
        "flex_multiplier": null,
        "fmt": "images",
        "hints": [
          "Generate one image from prompt.",
          "Save every data item; url/b64_json are result encodings."
        ],
        "http": "POST",
        "in": null,
        "input": [
          "text"
        ],
        "label": "Картинки",
        "max_out": null,
        "max_reasoning_effort_multiplier": null,
        "method_aliases": [],
        "out": null,
        "output": [
          "image"
        ],
        "path": "/v1/images/generations",
        "price_conditions": [
          {
            "label": "Fast mode",
            "value": "Not specified",
            "when": "When fast mode is selected"
          },
          {
            "label": "Flex mode",
            "value": "Not specified",
            "when": "When flex mode is selected"
          },
          {
            "label": "Maximum reasoning effort",
            "value": "Not specified",
            "when": "When maximum reasoning effort uses the default adjustment"
          }
        ],
        "pricing": {
          "billing_mode": "original_invoice_usd",
          "image_input_price": null,
          "image_output_price": null
        },
        "pricing_profiles": [
          {
            "dimensions": {
              "regime": "base"
            },
            "label": "Base token rates",
            "units": [
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "input_price",
                "label": "Input tokens",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "output_price",
                "label": "Output tokens",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "output_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "output_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "cache_read_price",
                "label": "Cache read",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "cached_input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "cached_input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "cache_write_price",
                "label": "Cache write",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "generic_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "generic_cache_creation_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "cache_write_1h_price",
                "label": "Cache write, 1 hour",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "one_hour_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "one_hour_cache_creation_token"
              }
            ]
          },
          {
            "dimensions": {
              "quoted_unit": "per input image"
            },
            "label": "input image",
            "units": [
              {
                "amount": "0",
                "amount_unit": "usd_per_exact_native_unit",
                "billing_input": false,
                "estimate_only": true,
                "key": "image_input",
                "label": "input image",
                "native_amount_usd_per_unit": "0",
                "native_quantity": 1,
                "public_unit_label": "per input image",
                "quantity": 1,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "image_input"
              }
            ]
          },
          {
            "dimensions": {
              "quoted_unit": "per image output"
            },
            "label": "Ultra",
            "units": [
              {
                "amount": "0.036",
                "amount_unit": "usd_per_exact_physical_unit",
                "billing_input": false,
                "estimate_only": true,
                "key": "image_output",
                "label": "image output",
                "native_amount_usd_per_unit": "0.036",
                "native_quantity": 1,
                "public_unit_label": "per image output",
                "quantity": "1",
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "image_output"
              }
            ]
          },
          {
            "basis": "This estimate is not an additional charge or a fixed rate for the completed generation.",
            "dimensions": {
              "forecast_quantity": "one generation estimate"
            },
            "label": "Estimated generation cost",
            "units": [
              {
                "amount": "0.036",
                "amount_unit": "usd_per_exact_native_unit",
                "billing_input": false,
                "estimate_only": true,
                "key": "forecast_usd",
                "label": "Estimated generation cost",
                "native_amount_usd_per_unit": "0.036",
                "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": "bytedance-seed/seedream-5-0-flash",
        "route_label": "Ultra",
        "status_reads": [
          "GET /v1/media/tasks/{task_id}",
          "GET /v1/media/assets/{asset_id}/content"
        ],
        "tiers": [],
        "units": [
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": false,
            "estimate_only": true,
            "key": "input_price",
            "label": "Input tokens",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "input_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "input_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": false,
            "estimate_only": true,
            "key": "output_price",
            "label": "Output tokens",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "output_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "out",
            "unit": "output_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": false,
            "estimate_only": true,
            "key": "cache_read_price",
            "label": "Cache read",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "cached_input_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "cached_input_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": false,
            "estimate_only": true,
            "key": "cache_write_price",
            "label": "Cache write",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "generic_cache_creation_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "generic_cache_creation_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": false,
            "estimate_only": true,
            "key": "cache_write_1h_price",
            "label": "Cache write, 1 hour",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "one_hour_cache_creation_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "one_hour_cache_creation_token"
          },
          {
            "amount": "0",
            "amount_unit": "usd_per_exact_native_unit",
            "billing_input": false,
            "estimate_only": true,
            "key": "image_input",
            "label": "input image",
            "native_amount_usd_per_unit": "0",
            "native_quantity": 1,
            "public_unit_label": "per input image",
            "quantity": 1,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "image_input"
          },
          {
            "amount": "0.036",
            "amount_unit": "usd_per_exact_physical_unit",
            "billing_input": false,
            "estimate_only": true,
            "key": "image_output",
            "label": "image output",
            "native_amount_usd_per_unit": "0.036",
            "native_quantity": 1,
            "public_unit_label": "per image output",
            "quantity": "1",
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "out",
            "unit": "image_output"
          },
          {
            "amount": "0.036",
            "amount_unit": "usd_per_exact_native_unit",
            "billing_input": false,
            "estimate_only": true,
            "key": "forecast_usd",
            "label": "Estimated generation cost",
            "native_amount_usd_per_unit": "0.036",
            "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": "bytedance-seed/seedream-5-0-flash",
        "request_model_id": "bytedance-seed/seedream-5-0-flash",
        "route_label": "Ultra"
      }
    ],
    "name": "ByteDance Seed: Seedream 5.0 Flash",
    "price": {
      "estimate_only": true,
      "in": null,
      "in_label": null,
      "out": 0.036,
      "out_label": "estimate before generation",
      "scope_label": "Estimated generation cost",
      "sort_in": null,
      "sort_out": 0.036,
      "varies": false
    },
    "pricing_profiles": [
      {
        "applicability": {
          "client_selectable": false,
          "native_profile_selection_pending": true,
          "scope": "manufacturer_reference"
        },
        "dimensions": {
          "actual_successful_output_count": true,
          "input_images_free": true,
          "sequential_generation_charged_per_actual_output": true
        },
        "label": "Ultra",
        "units": [
          {
            "amount": "0.036",
            "amount_unit": "usd_per_output_image",
            "conditions": {
              "actual_successful_output_count": true,
              "input_images_free": true,
              "sequential_generation_charged_per_actual_output": true
            },
            "key": "base",
            "label": "base",
            "profile_index": 0,
            "quantity": "1",
            "rate_role": "binding_component_rate",
            "side": "out",
            "unit": "output_image"
          }
        ]
      }
    ],
    "public_id": "bytedance-seed/seedream-5-0-flash",
    "short": "Το Seedream 5.0 Flash δημιουργεί και επεξεργάζεται εικόνες από κείμενο και οπτικές αναφορές, με χωρικά καθοδηγούμενες αλλαγές, πολύγλωσσο κείμενο εικόνας και αποσύνθεση επιπέδων. Η ByteDance Seed τοποθετεί το Flash για ταχύτερη δημιουργία, διατηρώντας το διακριτό από την έκδοση Pro με έμφαση στην ποιότητα."
  },
  "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": "Το Seedream 5.0 Flash δημιουργεί και επεξεργάζεται εικόνες από κείμενο και οπτικές αναφορές, με χωρικά καθοδηγούμενες αλλαγές, πολύγλωσσο κείμενο εικόνας και αποσύνθεση επιπέδων. Η ByteDance Seed τοποθετεί το Flash για ταχύτερη δημιουργία, διατηρώντας το διακριτό από την έκδοση Pro με έμφαση στην ποιότητα.",
  "source": {
    "audit_sha256": "2e00086bcbfc28e64d0cebe97aa47c17d8d5618963027f8ffb9dc6123d7d25b1",
    "bridge_map_sha256": "1125275768b9636fc8461bc7da5061239a81ddfe508e2557843ca42c58ab0036",
    "raw_model_json_sha256": "0dff473e6d1fc63a415eddde15325ec749a11d29b4d6298fac2852a88fa36ce5",
    "renderer_sha256": "3ed36f7af4f78822bafbd174fdcaed7b698a18a86efe254253d37f1b098a7566"
  },
  "sourceRevision": "cc4f6cc1d8a90d0376347a8fb206015458cca80cfba4f5033a61bc96526e31a1"
}
