{
  "aboutHtml": "<p>Το FLUX 3 Image είναι το μοντέλο δημιουργίας και επεξεργασίας εικόνων της Black Forest Labs με ρητό έλεγχο σύνθεσης. Μια περιγραφή κειμένου μπορεί να δημιουργήσει νέα σκηνή· οι παρεχόμενες εικόνες μπορούν να καθορίζουν θέμα, σκηνή προς αναθεώρηση ή αρκετά στοιχεία προς συνδυασμό. Τα πλαίσια οριοθέτησης επιτρέπουν στην περιγραφή να ορίζει πού ανήκει κάθε στοιχείο και ποια μέρη υπάρχουσας εικόνας πρέπει να αλλάξουν. Το αποτέλεσμα είναι εικόνα, με τη ζητούμενη σκηνή, το κείμενο και τη διάταξη προς έλεγχο.</p><h4>Δημιουργήστε σκηνή ή δώστε οδηγία επεξεργασίας</h4><p>Για νέα εικόνα, περιγράψτε το θέμα, τη δράση ή στάση, το περιβάλλον, το φως και το κάδρο. Βάλτε την ακριβή διατύπωση μέσα στην εικόνα σε εισαγωγικά και δηλώστε πού εμφανίζεται. Μια πρωτότυπη περιγραφή προϊόντος θα μπορούσε να δείχνει κόκκινη κούπα κάμπινγκ σε ανοιχτόχρωμη πέτρινη επιφάνεια, με μεγάλο τίτλο από πάνω και απαλό πρωινό φως που αναδεικνύει το χερούλι. Ορίστε τη σχέση τίτλου, προϊόντος και φόντου, αντί να δίνετε άσχετες λέξεις ύφους.</p><p>Για επεξεργασία, προσδιορίστε το συγκεκριμένο αντικείμενο και την αλλαγή: αλλάξτε χρώμα στην κούπα, αντικαταστήστε ετικέτα, μετακινήστε φιγούρα ή αλλάξτε ύφος στη σκηνή. Μία επεξεργασία δεν απαιτεί χειροκίνητα σχεδιασμένο πλαίσιο. Η τεκμηριωμένη ροή επεκτείνει την οδηγία πριν τη δημιουργία και μπορεί να εντοπίσει το ονομασμένο στοιχείο και να προσθέσει αυτόματα πλαίσιο. Η επιστρεφόμενη εμπλουτισμένη προτροπή καταγράφει αυτή την ερμηνεία, χρήσιμη όταν μια οδηγία επιλέγει λάθος αντικείμενο ή εισάγει ανεπιθύμητη λεπτομέρεια.</p><h4>Συνδυάστε και προετοιμάστε εικόνες αναφοράς</h4><p>Το συγκεκριμένο προφίλ παραγωγού δέχεται από μία έως δέκα αναφορές, παρεχόμενες ως URL εικόνων ή κωδικοποιημένα δεδομένα εικόνας. Καθεμία πρέπει να είναι τουλάχιστον 256×256 pixel και όχι μεγαλύτερη από 16 megapixel. Ονομάστε μια αναφορά βάσει θέσης ή ορατού περιεχομένου και εξηγήστε τον ρόλο της: το πρόσωπο από Image 1, το σακάκι από Image 2 και το δωμάτιο από Image 3. Μια εικόνα αναφοράς είναι πηγή οπτικών πληροφοριών, όχι οδηγία αντιγραφής κάθε άσχετης λεπτομέρειας που περιέχει.</p><p>Η ρύθμιση αναλογίας διαστάσεων έχει προεπιλογή auto. Στην προδιαγραφή αιτήματος, μια αναλογία που ζητείται στην προτροπή έχει προτεραιότητα· διαφορετικά η πρώτη αναφορά καθορίζει το κάδρο, με τετράγωνη έξοδο ως εναλλακτική όταν ούτε αναφορά ούτε ζητούμενο σχήμα το ορίζουν. Για σύνθεση, τοποθετήστε πρώτη την αναφορά της επιθυμητής σκηνής ή επιλέξτε ρητά την αναλογία. Κρατήστε τις αρχικές εικόνες και τη σειρά τους μαζί με το αποτέλεσμα, ώστε μεταγενέστερη αναθεώρηση να χρησιμοποιεί την ίδια οπτική αφετηρία.</p><h4>Τοποθετήστε στοιχεία με πλαίσια οριοθέτησης</h4><p>Μια προτροπή διάταξης συνδυάζει λεζάντα με πίνακα JSON από γραμμές στοιχείων. Η λεζάντα ονομάζει ένα στοιχείο μέσω δείκτη όπως &lt;cup_1&gt;· η γραμμή περιέχει id, bbox και desc. Οι συντεταγμένες είναι ακέραιοι από 0 έως 1000 στη σειρά [top, left, bottom, right], με αφετηρία την επάνω αριστερή γωνία. Για παράδειγμα, το [0, 0, 500, 500] περιγράφει το επάνω αριστερό τέταρτο ανεξάρτητα από τις διαστάσεις pixel της εικόνας. Χρησιμοποιήστε την αναλογία για την οποία σχεδιάστηκε η διάταξη, επειδή αυτό το πλέγμα συντεταγμένων τεντώνεται μαζί με το κάδρο.</p><p>Μια γραμμή επεξεργασίας χρησιμοποιεί αντίθετα from, src_bbox και tgt_bbox μαζί με το αναγνωριστικό και την περιγραφή. Το ref_image_0 σημαίνει την πρώτη παρεχόμενη εικόνα. Ίδια πλαίσια πηγής και στόχου σταθεροποιούν ένα στοιχείο· διαφορετικά πλαίσια το μετακινούν ή αλλάζουν το μέγεθός του. Νέα γραμμή χωρίς πηγή παράγει την περιγραφή της στη θέση στόχου, επιτρέποντας προσθήκες, αντικαταστάσεις ή αλλαγές χρώματος. Γραμμή πηγής χωρίς στόχο αφαιρεί το στοιχείο. Δηλώστε προσθήκες και αφαιρέσεις τόσο στη γραπτή οδηγία όσο και στις γραμμές και διατηρήστε γραμμές σταθεροποίησης για λεπτομέρειες που πρέπει να μείνουν στη θέση τους.</p><p>Δώστε στα γράμματα δικό τους πλαίσιο και παραθέστε την ακριβή διατύπωσή τους στο desc. Τα πλαίσια καθοδηγούν θέση και κλίμακα· δεν είναι μάσκες αποκοπής, οπότε ένα στοιχείο μπορεί να εκτείνεται πέρα από το ορθογώνιο. Ο κατασκευαστής αναφέρει ότι νέα αντικείμενα σε πλαίσια περίπου 40×25 pixel συχνά δεν εμφανίζονταν στα παραδείγματά του. Αφήστε αρκετό ορατό χώρο και εξετάστε τα επεξεργασμένα όρια. Τα pixel εκτός στόχου συνήθως παραμένουν σταθερά, αλλά σκιές, αντανακλάσεις και κοντινός φωτισμός μπορεί και πάλι να αλλάξουν.</p><h4>Τεκμηρίωση, κατηγορίες εξόδου και χρήσιμα αρχεία</h4><p>Το τεκμηριωμένο προφίλ ενεργοποιεί από προεπιλογή την τεκμηρίωση, επιτρέποντας σε αναζήτηση ιστού και εικόνων να ενημερώνει τη δημιουργία. Μπορεί να απενεργοποιηθεί για περιγραφή που πρέπει να χρησιμοποιεί μόνο το παρεχόμενο κείμενο και τις αναφορές της. Για θέμα πραγματικού κόσμου, προσδιορίστε καθαρά την τοποθεσία, το γεγονός ή το αντικείμενο και κρατήστε το πραγματολογικό περιεχόμενο χωριστό από την καλλιτεχνική απόδοση. Εικόνες που ενημερώνονται από αναζήτηση εξακολουθούν να χρειάζονται σύγκριση με έγκυρο υλικό όταν απαιτείται ακρίβεια σε μια ετικέτα, ένα αντικείμενο ή ένα απεικονιζόμενο γεγονός.</p><p>Οι πέντε κατηγορίες ανάλυσης είναι 768sq, 1k, 1.5k, 2k και 4k, με προεπιλογή 1k. Αντιπροσωπεύουν βαθμίδες ίσου εμβαδού pixel, επομένως το ακριβές πλάτος και ύψος εξαρτώνται από την επιλεγμένη αναλογία. Δεκαπέντε σταθερές αναλογίες εκτείνονται από 21:9, μέσω τετράγωνων και κάθετων μορφών, έως 9:21. Το προφίλ αυτού του μοντέλου ελέγχει το μέγεθος μέσω αναλογίας και ανάλυσης· δεν εκθέτει τα πεδία seed, width ή height των προφίλ αιτήματος FLUX.2. Ο τεκμηριωμένος επιλογέας έκδοσης ονομάζει επί του παρόντος μια μεταβαλλόμενη έκδοση, αντί να καθορίζει χρονολογημένη αντιστοίχιση βαρών προμηθευτή.</p><p>Η ροή παραγωγού επιστρέφει εικόνα μετά από ασύγχρονη επεξεργασία, μαζί με την εμπλουτισμένη προτροπή. Ο υπογεγραμμένος σύνδεσμος λήψης εικόνας ισχύει για μία ώρα. Διατηρήστε την πραγματική εικόνα, την τελική προτροπή και τις αναφορές αντί να βασίζεστε σε προσωρινό σύνδεσμο. Για ελεγμένο οπτικό αρχείο, συγκρίνετε το ζητούμενο κείμενο, την τοποθέτηση αντικειμένων, την ταυτότητα αναφορών και την αλλαγμένη περιοχή στο προβλεπόμενο μέγεθος προβολής. Μια ολοκληρωμένη δημιουργία είναι η αφετηρία για τον έλεγχο αυτών των οπτικών απαιτήσεων.</p>",
  "aboutText": "Το FLUX 3 Image είναι το μοντέλο δημιουργίας και επεξεργασίας εικόνων της Black Forest Labs με ρητό έλεγχο σύνθεσης. Μια περιγραφή κειμένου μπορεί να δημιουργήσει νέα σκηνή· οι παρεχόμενες εικόνες μπορούν να καθορίζουν θέμα, σκηνή προς αναθεώρηση ή αρκετά στοιχεία προς συνδυασμό. Τα πλαίσια οριοθέτησης επιτρέπουν στην περιγραφή να ορίζει πού ανήκει κάθε στοιχείο και ποια μέρη υπάρχουσας εικόνας πρέπει να αλλάξουν. Το αποτέλεσμα είναι εικόνα, με τη ζητούμενη σκηνή, το κείμενο και τη διάταξη προς έλεγχο.\n\n### Δημιουργήστε σκηνή ή δώστε οδηγία επεξεργασίας\n\nΓια νέα εικόνα, περιγράψτε το θέμα, τη δράση ή στάση, το περιβάλλον, το φως και το κάδρο. Βάλτε την ακριβή διατύπωση μέσα στην εικόνα σε εισαγωγικά και δηλώστε πού εμφανίζεται. Μια πρωτότυπη περιγραφή προϊόντος θα μπορούσε να δείχνει κόκκινη κούπα κάμπινγκ σε ανοιχτόχρωμη πέτρινη επιφάνεια, με μεγάλο τίτλο από πάνω και απαλό πρωινό φως που αναδεικνύει το χερούλι. Ορίστε τη σχέση τίτλου, προϊόντος και φόντου, αντί να δίνετε άσχετες λέξεις ύφους.\n\nΓια επεξεργασία, προσδιορίστε το συγκεκριμένο αντικείμενο και την αλλαγή: αλλάξτε χρώμα στην κούπα, αντικαταστήστε ετικέτα, μετακινήστε φιγούρα ή αλλάξτε ύφος στη σκηνή. Μία επεξεργασία δεν απαιτεί χειροκίνητα σχεδιασμένο πλαίσιο. Η τεκμηριωμένη ροή επεκτείνει την οδηγία πριν τη δημιουργία και μπορεί να εντοπίσει το ονομασμένο στοιχείο και να προσθέσει αυτόματα πλαίσιο. Η επιστρεφόμενη εμπλουτισμένη προτροπή καταγράφει αυτή την ερμηνεία, χρήσιμη όταν μια οδηγία επιλέγει λάθος αντικείμενο ή εισάγει ανεπιθύμητη λεπτομέρεια.\n\n### Συνδυάστε και προετοιμάστε εικόνες αναφοράς\n\nΤο συγκεκριμένο προφίλ παραγωγού δέχεται από μία έως δέκα αναφορές, παρεχόμενες ως URL εικόνων ή κωδικοποιημένα δεδομένα εικόνας. Καθεμία πρέπει να είναι τουλάχιστον 256×256 pixel και όχι μεγαλύτερη από 16 megapixel. Ονομάστε μια αναφορά βάσει θέσης ή ορατού περιεχομένου και εξηγήστε τον ρόλο της: το πρόσωπο από Image 1, το σακάκι από Image 2 και το δωμάτιο από Image 3. Μια εικόνα αναφοράς είναι πηγή οπτικών πληροφοριών, όχι οδηγία αντιγραφής κάθε άσχετης λεπτομέρειας που περιέχει.\n\nΗ ρύθμιση αναλογίας διαστάσεων έχει προεπιλογή auto. Στην προδιαγραφή αιτήματος, μια αναλογία που ζητείται στην προτροπή έχει προτεραιότητα· διαφορετικά η πρώτη αναφορά καθορίζει το κάδρο, με τετράγωνη έξοδο ως εναλλακτική όταν ούτε αναφορά ούτε ζητούμενο σχήμα το ορίζουν. Για σύνθεση, τοποθετήστε πρώτη την αναφορά της επιθυμητής σκηνής ή επιλέξτε ρητά την αναλογία. Κρατήστε τις αρχικές εικόνες και τη σειρά τους μαζί με το αποτέλεσμα, ώστε μεταγενέστερη αναθεώρηση να χρησιμοποιεί την ίδια οπτική αφετηρία.\n\n### Τοποθετήστε στοιχεία με πλαίσια οριοθέτησης\n\nΜια προτροπή διάταξης συνδυάζει λεζάντα με πίνακα JSON από γραμμές στοιχείων. Η λεζάντα ονομάζει ένα στοιχείο μέσω δείκτη όπως <cup_1>· η γραμμή περιέχει id, bbox και desc. Οι συντεταγμένες είναι ακέραιοι από 0 έως 1000 στη σειρά [top, left, bottom, right], με αφετηρία την επάνω αριστερή γωνία. Για παράδειγμα, το [0, 0, 500, 500] περιγράφει το επάνω αριστερό τέταρτο ανεξάρτητα από τις διαστάσεις pixel της εικόνας. Χρησιμοποιήστε την αναλογία για την οποία σχεδιάστηκε η διάταξη, επειδή αυτό το πλέγμα συντεταγμένων τεντώνεται μαζί με το κάδρο.\n\nΜια γραμμή επεξεργασίας χρησιμοποιεί αντίθετα from, src_bbox και tgt_bbox μαζί με το αναγνωριστικό και την περιγραφή. Το ref_image_0 σημαίνει την πρώτη παρεχόμενη εικόνα. Ίδια πλαίσια πηγής και στόχου σταθεροποιούν ένα στοιχείο· διαφορετικά πλαίσια το μετακινούν ή αλλάζουν το μέγεθός του. Νέα γραμμή χωρίς πηγή παράγει την περιγραφή της στη θέση στόχου, επιτρέποντας προσθήκες, αντικαταστάσεις ή αλλαγές χρώματος. Γραμμή πηγής χωρίς στόχο αφαιρεί το στοιχείο. Δηλώστε προσθήκες και αφαιρέσεις τόσο στη γραπτή οδηγία όσο και στις γραμμές και διατηρήστε γραμμές σταθεροποίησης για λεπτομέρειες που πρέπει να μείνουν στη θέση τους.\n\nΔώστε στα γράμματα δικό τους πλαίσιο και παραθέστε την ακριβή διατύπωσή τους στο desc. Τα πλαίσια καθοδηγούν θέση και κλίμακα· δεν είναι μάσκες αποκοπής, οπότε ένα στοιχείο μπορεί να εκτείνεται πέρα από το ορθογώνιο. Ο κατασκευαστής αναφέρει ότι νέα αντικείμενα σε πλαίσια περίπου 40×25 pixel συχνά δεν εμφανίζονταν στα παραδείγματά του. Αφήστε αρκετό ορατό χώρο και εξετάστε τα επεξεργασμένα όρια. Τα pixel εκτός στόχου συνήθως παραμένουν σταθερά, αλλά σκιές, αντανακλάσεις και κοντινός φωτισμός μπορεί και πάλι να αλλάξουν.\n\n### Τεκμηρίωση, κατηγορίες εξόδου και χρήσιμα αρχεία\n\nΤο τεκμηριωμένο προφίλ ενεργοποιεί από προεπιλογή την τεκμηρίωση, επιτρέποντας σε αναζήτηση ιστού και εικόνων να ενημερώνει τη δημιουργία. Μπορεί να απενεργοποιηθεί για περιγραφή που πρέπει να χρησιμοποιεί μόνο το παρεχόμενο κείμενο και τις αναφορές της. Για θέμα πραγματικού κόσμου, προσδιορίστε καθαρά την τοποθεσία, το γεγονός ή το αντικείμενο και κρατήστε το πραγματολογικό περιεχόμενο χωριστό από την καλλιτεχνική απόδοση. Εικόνες που ενημερώνονται από αναζήτηση εξακολουθούν να χρειάζονται σύγκριση με έγκυρο υλικό όταν απαιτείται ακρίβεια σε μια ετικέτα, ένα αντικείμενο ή ένα απεικονιζόμενο γεγονός.\n\nΟι πέντε κατηγορίες ανάλυσης είναι 768sq, 1k, 1.5k, 2k και 4k, με προεπιλογή 1k. Αντιπροσωπεύουν βαθμίδες ίσου εμβαδού pixel, επομένως το ακριβές πλάτος και ύψος εξαρτώνται από την επιλεγμένη αναλογία. Δεκαπέντε σταθερές αναλογίες εκτείνονται από 21:9, μέσω τετράγωνων και κάθετων μορφών, έως 9:21. Το προφίλ αυτού του μοντέλου ελέγχει το μέγεθος μέσω αναλογίας και ανάλυσης· δεν εκθέτει τα πεδία seed, width ή height των προφίλ αιτήματος FLUX.2. Ο τεκμηριωμένος επιλογέας έκδοσης ονομάζει επί του παρόντος μια μεταβαλλόμενη έκδοση, αντί να καθορίζει χρονολογημένη αντιστοίχιση βαρών προμηθευτή.\n\nΗ ροή παραγωγού επιστρέφει εικόνα μετά από ασύγχρονη επεξεργασία, μαζί με την εμπλουτισμένη προτροπή. Ο υπογεγραμμένος σύνδεσμος λήψης εικόνας ισχύει για μία ώρα. Διατηρήστε την πραγματική εικόνα, την τελική προτροπή και τις αναφορές αντί να βασίζεστε σε προσωρινό σύνδεσμο. Για ελεγμένο οπτικό αρχείο, συγκρίνετε το ζητούμενο κείμενο, την τοποθέτηση αντικειμένων, την ταυτότητα αναφορών και την αλλαγμένη περιοχή στο προβλεπόμενο μέγεθος προβολής. Μια ολοκληρωμένη δημιουργία είναι η αφετηρία για τον έλεγχο αυτών των οπτικών απαιτήσεων.",
  "editorialOverlay": {
    "copy_fields": null,
    "copy_sha256": null,
    "copy_source": null,
    "html_sha256": "4f2e424a57f29b8f18ac76425924ccee26b35d189bb8cdd6cc977d49ecdc4262",
    "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\">Black Forest Labs: FLUX.3 Image</h2><button class=\"icon-btn\" type=\"button\" data-close-sheet aria-label=\"Κλείσιμο\">×</button></div><div class=\"idline\"><span>Black Forest Labs /</span><code>black-forest-labs/flux-3-image</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|black-forest-labs%2Fflux-3-image\">Εικόνες</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\">Το FLUX 3 Image δημιουργεί και επεξεργάζεται εικόνες από γραπτή περιγραφή και έως δέκα αναφορές. Προσθέτει πλαίσια οριοθέτησης μέσω προτροπών για σύνθεση και τοπικές αλλαγές, τεκμηρίωση από ιστό και εικόνες και πέντε κατηγορίες ανάλυσης.</p><dl class=\"card-io\" data-card-io><div><dt>Αποδεκτές είσοδοι</dt><dd>Κείμενο · Εικόνες</dd></div><div><dt>Αποτελέσματα</dt><dd>Εικόνες</dd></div></dl><details class=\"card-about\"><summary>Σχετικά με το μοντέλο</summary><p class=\"note-s\" data-model-method-boundary>Αυτή η περιγραφή καλύπτει τις δυνατότητες του μοντέλου. Οι είσοδοι, έξοδοι και επιλογές που διατίθενται στο Ailoot παρατίθενται παρακάτω για την επιλεγμένη μέθοδο.</p><div class=\"mabout\" id=\"m-about\"><p>Το FLUX 3 Image είναι το μοντέλο δημιουργίας και επεξεργασίας εικόνων της Black Forest Labs με ρητό έλεγχο σύνθεσης. Μια περιγραφή κειμένου μπορεί να δημιουργήσει νέα σκηνή· οι παρεχόμενες εικόνες μπορούν να καθορίζουν θέμα, σκηνή προς αναθεώρηση ή αρκετά στοιχεία προς συνδυασμό. Τα πλαίσια οριοθέτησης επιτρέπουν στην περιγραφή να ορίζει πού ανήκει κάθε στοιχείο και ποια μέρη υπάρχουσας εικόνας πρέπει να αλλάξουν. Το αποτέλεσμα είναι εικόνα, με τη ζητούμενη σκηνή, το κείμενο και τη διάταξη προς έλεγχο.</p><h4>Δημιουργήστε σκηνή ή δώστε οδηγία επεξεργασίας</h4><p>Για νέα εικόνα, περιγράψτε το θέμα, τη δράση ή στάση, το περιβάλλον, το φως και το κάδρο. Βάλτε την ακριβή διατύπωση μέσα στην εικόνα σε εισαγωγικά και δηλώστε πού εμφανίζεται. Μια πρωτότυπη περιγραφή προϊόντος θα μπορούσε να δείχνει κόκκινη κούπα κάμπινγκ σε ανοιχτόχρωμη πέτρινη επιφάνεια, με μεγάλο τίτλο από πάνω και απαλό πρωινό φως που αναδεικνύει το χερούλι. Ορίστε τη σχέση τίτλου, προϊόντος και φόντου, αντί να δίνετε άσχετες λέξεις ύφους.</p><p>Για επεξεργασία, προσδιορίστε το συγκεκριμένο αντικείμενο και την αλλαγή: αλλάξτε χρώμα στην κούπα, αντικαταστήστε ετικέτα, μετακινήστε φιγούρα ή αλλάξτε ύφος στη σκηνή. Μία επεξεργασία δεν απαιτεί χειροκίνητα σχεδιασμένο πλαίσιο. Η τεκμηριωμένη ροή επεκτείνει την οδηγία πριν τη δημιουργία και μπορεί να εντοπίσει το ονομασμένο στοιχείο και να προσθέσει αυτόματα πλαίσιο. Η επιστρεφόμενη εμπλουτισμένη προτροπή καταγράφει αυτή την ερμηνεία, χρήσιμη όταν μια οδηγία επιλέγει λάθος αντικείμενο ή εισάγει ανεπιθύμητη λεπτομέρεια.</p><h4>Συνδυάστε και προετοιμάστε εικόνες αναφοράς</h4><p>Το συγκεκριμένο προφίλ παραγωγού δέχεται από μία έως δέκα αναφορές, παρεχόμενες ως URL εικόνων ή κωδικοποιημένα δεδομένα εικόνας. Καθεμία πρέπει να είναι τουλάχιστον 256×256 pixel και όχι μεγαλύτερη από 16 megapixel. Ονομάστε μια αναφορά βάσει θέσης ή ορατού περιεχομένου και εξηγήστε τον ρόλο της: το πρόσωπο από Image 1, το σακάκι από Image 2 και το δωμάτιο από Image 3. Μια εικόνα αναφοράς είναι πηγή οπτικών πληροφοριών, όχι οδηγία αντιγραφής κάθε άσχετης λεπτομέρειας που περιέχει.</p><p>Η ρύθμιση αναλογίας διαστάσεων έχει προεπιλογή auto. Στην προδιαγραφή αιτήματος, μια αναλογία που ζητείται στην προτροπή έχει προτεραιότητα· διαφορετικά η πρώτη αναφορά καθορίζει το κάδρο, με τετράγωνη έξοδο ως εναλλακτική όταν ούτε αναφορά ούτε ζητούμενο σχήμα το ορίζουν. Για σύνθεση, τοποθετήστε πρώτη την αναφορά της επιθυμητής σκηνής ή επιλέξτε ρητά την αναλογία. Κρατήστε τις αρχικές εικόνες και τη σειρά τους μαζί με το αποτέλεσμα, ώστε μεταγενέστερη αναθεώρηση να χρησιμοποιεί την ίδια οπτική αφετηρία.</p><h4>Τοποθετήστε στοιχεία με πλαίσια οριοθέτησης</h4><p>Μια προτροπή διάταξης συνδυάζει λεζάντα με πίνακα JSON από γραμμές στοιχείων. Η λεζάντα ονομάζει ένα στοιχείο μέσω δείκτη όπως &lt;cup_1&gt;· η γραμμή περιέχει id, bbox και desc. Οι συντεταγμένες είναι ακέραιοι από 0 έως 1000 στη σειρά [top, left, bottom, right], με αφετηρία την επάνω αριστερή γωνία. Για παράδειγμα, το [0, 0, 500, 500] περιγράφει το επάνω αριστερό τέταρτο ανεξάρτητα από τις διαστάσεις pixel της εικόνας. Χρησιμοποιήστε την αναλογία για την οποία σχεδιάστηκε η διάταξη, επειδή αυτό το πλέγμα συντεταγμένων τεντώνεται μαζί με το κάδρο.</p><p>Μια γραμμή επεξεργασίας χρησιμοποιεί αντίθετα from, src_bbox και tgt_bbox μαζί με το αναγνωριστικό και την περιγραφή. Το ref_image_0 σημαίνει την πρώτη παρεχόμενη εικόνα. Ίδια πλαίσια πηγής και στόχου σταθεροποιούν ένα στοιχείο· διαφορετικά πλαίσια το μετακινούν ή αλλάζουν το μέγεθός του. Νέα γραμμή χωρίς πηγή παράγει την περιγραφή της στη θέση στόχου, επιτρέποντας προσθήκες, αντικαταστάσεις ή αλλαγές χρώματος. Γραμμή πηγής χωρίς στόχο αφαιρεί το στοιχείο. Δηλώστε προσθήκες και αφαιρέσεις τόσο στη γραπτή οδηγία όσο και στις γραμμές και διατηρήστε γραμμές σταθεροποίησης για λεπτομέρειες που πρέπει να μείνουν στη θέση τους.</p><p>Δώστε στα γράμματα δικό τους πλαίσιο και παραθέστε την ακριβή διατύπωσή τους στο desc. Τα πλαίσια καθοδηγούν θέση και κλίμακα· δεν είναι μάσκες αποκοπής, οπότε ένα στοιχείο μπορεί να εκτείνεται πέρα από το ορθογώνιο. Ο κατασκευαστής αναφέρει ότι νέα αντικείμενα σε πλαίσια περίπου 40×25 pixel συχνά δεν εμφανίζονταν στα παραδείγματά του. Αφήστε αρκετό ορατό χώρο και εξετάστε τα επεξεργασμένα όρια. Τα pixel εκτός στόχου συνήθως παραμένουν σταθερά, αλλά σκιές, αντανακλάσεις και κοντινός φωτισμός μπορεί και πάλι να αλλάξουν.</p><h4>Τεκμηρίωση, κατηγορίες εξόδου και χρήσιμα αρχεία</h4><p>Το τεκμηριωμένο προφίλ ενεργοποιεί από προεπιλογή την τεκμηρίωση, επιτρέποντας σε αναζήτηση ιστού και εικόνων να ενημερώνει τη δημιουργία. Μπορεί να απενεργοποιηθεί για περιγραφή που πρέπει να χρησιμοποιεί μόνο το παρεχόμενο κείμενο και τις αναφορές της. Για θέμα πραγματικού κόσμου, προσδιορίστε καθαρά την τοποθεσία, το γεγονός ή το αντικείμενο και κρατήστε το πραγματολογικό περιεχόμενο χωριστό από την καλλιτεχνική απόδοση. Εικόνες που ενημερώνονται από αναζήτηση εξακολουθούν να χρειάζονται σύγκριση με έγκυρο υλικό όταν απαιτείται ακρίβεια σε μια ετικέτα, ένα αντικείμενο ή ένα απεικονιζόμενο γεγονός.</p><p>Οι πέντε κατηγορίες ανάλυσης είναι 768sq, 1k, 1.5k, 2k και 4k, με προεπιλογή 1k. Αντιπροσωπεύουν βαθμίδες ίσου εμβαδού pixel, επομένως το ακριβές πλάτος και ύψος εξαρτώνται από την επιλεγμένη αναλογία. Δεκαπέντε σταθερές αναλογίες εκτείνονται από 21:9, μέσω τετράγωνων και κάθετων μορφών, έως 9:21. Το προφίλ αυτού του μοντέλου ελέγχει το μέγεθος μέσω αναλογίας και ανάλυσης· δεν εκθέτει τα πεδία seed, width ή height των προφίλ αιτήματος FLUX.2. Ο τεκμηριωμένος επιλογέας έκδοσης ονομάζει επί του παρόντος μια μεταβαλλόμενη έκδοση, αντί να καθορίζει χρονολογημένη αντιστοίχιση βαρών προμηθευτή.</p><p>Η ροή παραγωγού επιστρέφει εικόνα μετά από ασύγχρονη επεξεργασία, μαζί με την εμπλουτισμένη προτροπή. Ο υπογεγραμμένος σύνδεσμος λήψης εικόνας ισχύει για μία ώρα. Διατηρήστε την πραγματική εικόνα, την τελική προτροπή και τις αναφορές αντί να βασίζεστε σε προσωρινό σύνδεσμο. Για ελεγμένο οπτικό αρχείο, συγκρίνετε το ζητούμενο κείμενο, την τοποθέτηση αντικειμένων, την ταυτότητα αναφορών και την αλλαγμένη περιοχή στο προβλεπόμενο μέγεθος προβολής. Μια ολοκληρωμένη δημιουργία είναι η αφετηρία για τον έλεγχο αυτών των οπτικών απαιτήσεων.</p></div></details></section><section class=\"card-section\" data-card-section=\"methods\"><h3 tabindex=\"-1\">Διαθέσιμα στο Ailoot · είσοδοι και μέθοδοι</h3><details class=\"card-method\" open><summary><b>Ailoot Ultra · Εικόνες</b> <code>POST /v1/images/generations</code></summary><dl class=\"method-capabilities\"><div><dt>Είσοδος</dt><dd><code>text</code>, <code>image</code></dd></div><div><dt>Έξοδος</dt><dd><code>image</code></dd></div></dl><div class=\"tw\" data-card-parameters data-typed-parameters><table><thead><tr><th>Πεδίο</th><th>Τύπος</th><th>Απαίτηση</th><th>Τιμές και όρια</th><th>Προεπιλογή</th></tr></thead><tbody><tr><th data-cell-label=\"Πεδίο\" scope=\"row\"><span class=\"card-cell-label\">Πεδίο</span><code class=\"card-field-name\">model</code></th><td data-cell-label=\"Τύπος\" data-field-type><span class=\"card-cell-label\">Τύπος</span><code>string</code></td><td data-cell-label=\"Απαίτηση\"><span class=\"card-cell-label\">Απαίτηση</span>Υποχρεωτικό</td><td data-cell-label=\"Τιμές και όρια\"><span class=\"card-cell-label\">Τιμές και όρια</span><div>black-forest-labs/flux-3-image</div></td><td data-cell-label=\"Προεπιλογή\" data-default=\"unspecified\"><span class=\"card-cell-label\">Προεπιλογή</span>—</td></tr><tr><th data-cell-label=\"Πεδίο\" scope=\"row\"><span class=\"card-cell-label\">Πεδίο</span><code class=\"card-field-name\">prompt</code></th><td data-cell-label=\"Τύπος\" data-field-type><span class=\"card-cell-label\">Τύπος</span><code>string</code></td><td data-cell-label=\"Απαίτηση\"><span class=\"card-cell-label\">Απαίτηση</span>Υποχρεωτικό</td><td data-cell-label=\"Τιμές και όρια\"><span class=\"card-cell-label\">Τιμές και όρια</span><div>Ελάχιστο μήκος: 1</div></td><td data-cell-label=\"Προεπιλογή\" data-default=\"unspecified\"><span class=\"card-cell-label\">Προεπιλογή</span>—</td></tr><tr><th data-cell-label=\"Πεδίο\" scope=\"row\"><span class=\"card-cell-label\">Πεδίο</span><code class=\"card-field-name\">resolution</code></th><td data-cell-label=\"Τύπος\" data-field-type><span class=\"card-cell-label\">Τύπος</span><code>string</code></td><td data-cell-label=\"Απαίτηση\"><span class=\"card-cell-label\">Απαίτηση</span>Προαιρετικό</td><td data-cell-label=\"Τιμές και όρια\"><span class=\"card-cell-label\">Τιμές και όρια</span><div>768, 1K, 1.5K, 2K, 4K</div></td><td data-cell-label=\"Προεπιλογή\" data-default=\"unspecified\"><span class=\"card-cell-label\">Προεπιλογή</span>—</td></tr><tr><th data-cell-label=\"Πεδίο\" scope=\"row\"><span class=\"card-cell-label\">Πεδίο</span><code class=\"card-field-name\">aspect_ratio</code></th><td data-cell-label=\"Τύπος\" data-field-type><span class=\"card-cell-label\">Τύπος</span><code>string</code></td><td data-cell-label=\"Απαίτηση\"><span class=\"card-cell-label\">Απαίτηση</span>Προαιρετικό</td><td data-cell-label=\"Τιμές και όρια\"><span class=\"card-cell-label\">Τιμές και όρια</span><div>21:9, 2:1, 16:9, 3:2, 7:5, 4:3, 5:4, 1:1, 4:5, 3:4, 5:7, 2:3, 9:16, 1:2, 9:21, auto</div></td><td data-cell-label=\"Προεπιλογή\" data-default=\"unspecified\"><span class=\"card-cell-label\">Προεπιλογή</span>—</td></tr><tr><th data-cell-label=\"Πεδίο\" scope=\"row\"><span class=\"card-cell-label\">Πεδίο</span><code class=\"card-field-name\">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><div>Μέγιστο: 1</div></td><td data-cell-label=\"Προεπιλογή\" data-default=\"unspecified\"><span class=\"card-cell-label\">Προεπιλογή</span>—</td></tr><tr><th data-cell-label=\"Πεδίο\" scope=\"row\"><span class=\"card-cell-label\">Πεδίο</span><code class=\"card-field-name\">input_references</code></th><td data-cell-label=\"Τύπος\" data-field-type><span class=\"card-cell-label\">Τύπος</span><code>array</code></td><td data-cell-label=\"Απαίτηση\"><span class=\"card-cell-label\">Απαίτηση</span>Προαιρετικό</td><td data-cell-label=\"Τιμές και όρια\"><span class=\"card-cell-label\">Τιμές και όρια</span><div>Ελάχιστο πλήθος στοιχείων: 0</div><div>Μέγιστο πλήθος στοιχείων: 10</div></td><td data-cell-label=\"Προεπιλογή\" data-default=\"unspecified\"><span class=\"card-cell-label\">Προεπιλογή</span>—</td></tr><tr><th data-cell-label=\"Πεδίο\" scope=\"row\"><span class=\"card-cell-label\">Πεδίο</span><code class=\"card-field-name\">provider</code></th><td data-cell-label=\"Τύπος\" data-field-type><span class=\"card-cell-label\">Τύπος</span><code>object</code></td><td data-cell-label=\"Απαίτηση\"><span class=\"card-cell-label\">Απαίτηση</span>Προαιρετικό</td><td data-cell-label=\"Τιμές και όρια\"><span class=\"card-cell-label\">Τιμές και όρια</span></td><td data-cell-label=\"Προεπιλογή\" data-default=\"unspecified\"><span class=\"card-cell-label\">Προεπιλογή</span>—</td></tr></tbody></table></div><details class=\"note-s\" data-method-contract><summary>Παράμετροι και κύκλος ζωής μεθόδου</summary><div class=\"tw\" data-card-table=\"contract\"><table><thead><tr><th>Παράμετρος</th><th>Σύμβαση</th></tr></thead><tbody><tr><th data-cell-label=\"Παράμετρος\" scope=\"row\"><span class=\"card-cell-label\">Παράμετρος</span><code>content_type</code></th><td data-cell-label=\"Σύμβαση\"><span class=\"card-cell-label\">Σύμβαση</span>application/json</td></tr><tr><th data-cell-label=\"Παράμετρος\" scope=\"row\"><span class=\"card-cell-label\">Παράμετρος</span><code>required</code></th><td data-cell-label=\"Σύμβαση\"><span class=\"card-cell-label\">Σύμβαση</span>model, prompt</td></tr><tr><th data-cell-label=\"Παράμετρος\" scope=\"row\"><span class=\"card-cell-label\">Παράμετρος</span><code>material_types</code></th><td data-cell-label=\"Σύμβαση\"><span class=\"card-cell-label\">Σύμβαση</span>text, image</td></tr></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></details></details></section><section class=\"card-section\" data-card-section=\"pricing\"><h3 tabindex=\"-1\">Τιμολόγηση</h3><div class=\"card-result-process\" data-billing-basis><h5>Πώς υπολογίζεται η τελική χρέωση</h5><p class=\"note-s\">Οι εμφανιζόμενες τιμές χρησιμοποιούνται για την εκτίμηση του κόστους πριν από την παραγωγή. Η τελική χρέωση υπολογίζεται από το κόστος που καταγράφηκε για την αρχική παραγωγή. Η μετρημένη διάρκεια της εξόδου και οι προβλεπόμενες ποσότητες δεν αποτελούν την τελική χρεώσιμη ποσότητα.</p></div><div data-native-semantic-method=\"v1\" data-tariff-reference-only><p class=\"note-s\" data-rate-support-note>Οι τιμολογιακές αναφορές δεν προσθέτουν επιλογές αιτήματος. Οι υποστηριζόμενες παράμετροι αναφέρονται στην επιλεγμένη μέθοδο.</p><dl data-price-conditions><dt>Γρήγορη λειτουργία</dt><dd>Δεν έχει οριστεί <span class=\"note-s\">Όταν επιλέγεται η γρήγορη λειτουργία</span></dd><dt>Λειτουργία flex</dt><dd>Δεν έχει οριστεί <span class=\"note-s\">Όταν επιλέγεται η λειτουργία flex</span></dd><dt>Μέγιστη προσπάθεια συλλογισμού</dt><dd>Δεν έχει οριστεί <span class=\"note-s\">Όταν η μέγιστη προσπάθεια συλλογισμού χρησιμοποιεί την προσαρμογή default</span></dd></dl></div><div data-declared-tariff-pricing><h4>Εκτιμώμενες χρεώσεις για σύγκριση</h4><h4>Τιμές ανά διαμόρφωση</h4><p class=\"note-s\">Αντιστοιχίστε κάθε χρέωση στις συνθήκες που εμφανίζονται. Χρησιμοποιήστε μία χρέωση ανά σύνολο εναλλακτικών διαμορφώσεων.</p><div class=\"tw\" data-pricing-profiles><table><thead><tr><th>Διαμόρφωση</th><th>Πίνακας χρεώσεων</th><th>Προβλεπόμενη ποσότητα</th><th>Χρέωση</th></tr></thead><tbody><tr><th data-cell-label=\"Διαμόρφωση\" scope=\"row\"><span class=\"card-cell-label\">Διαμόρφωση</span>Βασικές χρεώσεις token</th><td data-cell-label=\"Πίνακας χρεώσεων\"><span class=\"card-cell-label\">Πίνακας χρεώσεων</span>Βασική χρέωση</td><td data-cell-label=\"Προβλεπόμενη ποσότητα\"><span class=\"card-cell-label\">Προβλεπόμενη ποσότητα</span>—</td><td data-cell-label=\"Χρέωση\"><span class=\"card-cell-label\">Χρέωση</span><div><span>Είσοδος · Token εισόδου · Εκτίμηση μόνο για σύγκριση</span> <b>—</b> <span class=\"price-unit\">/ 1K token</span></div><div><span>Έξοδος · Token εξόδου · Εκτίμηση μόνο για σύγκριση</span> <b>—</b> <span class=\"price-unit\">/ 1K token</span></div><div><span>Είσοδος · Ανάγνωση από την κρυφή μνήμη · Εκτίμηση μόνο για σύγκριση</span> <b>—</b> <span class=\"price-unit\">/ 1K token</span></div><div><span>Είσοδος · Εγγραφή στην κρυφή μνήμη · Εκτίμηση μόνο για σύγκριση</span> <b>—</b> <span class=\"price-unit\">/ 1K token</span></div><div><span>Είσοδος · Εγγραφή στην κρυφή μνήμη, 1 ώρα · Εκτίμηση μόνο για σύγκριση</span> <b>—</b> <span class=\"price-unit\">/ 1K token</span></div></td></tr><tr><th data-cell-label=\"Διαμόρφωση\" scope=\"row\"><span class=\"card-cell-label\">Διαμόρφωση</span>Εκτιμώμενο κόστος δημιουργίας</th><td data-cell-label=\"Πίνακας χρεώσεων\"><span class=\"card-cell-label\">Πίνακας χρεώσεων</span>—</td><td data-cell-label=\"Προβλεπόμενη ποσότητα\"><span class=\"card-cell-label\">Προβλεπόμενη ποσότητα</span>εκτίμηση για μία δημιουργία</td><td data-cell-label=\"Χρέωση\"><span class=\"card-cell-label\">Χρέωση</span><div><span>Έξοδος · Εκτιμώμενο κόστος δημιουργίας · Εκτίμηση μόνο για σύγκριση</span> <b>$0.082</b> <span class=\"price-unit\">εκτίμηση πριν από τη δημιουργία</span></div><p class=\"note-s\">Αυτή η εκτίμηση δεν αποτελεί πρόσθετη χρέωση ούτε σταθερή τιμή για την ολοκληρωμένη παραγωγή.</p></td></tr></tbody></table></div></div><p class=\"note-s\">Το Ailoot δεσμεύει ένα εκτιμώμενο ποσό πριν από το αίτημα. Μετά το αποτέλεσμα, εκκαθαρίζει την τελική χρέωση βάσει της μετρημένης χρήσης. Η εκκαθάριση ροής χρησιμοποιεί την τελική καταγραφή χρήσης. <a href=\"/docs/el/billing/reserve/\">Πώς λειτουργούν η δέσμευση και η εκκαθάριση →</a></p></section><section class=\"card-section\" data-card-section=\"examples\"><h3 tabindex=\"-1\">Παραδείγματα αιτημάτων</h3><h4>Ailoot Ultra · Εικόνες</h4><div class=\"code-group\"><div class=\"cg-bar\"><div class=\"cg-tabs\" role=\"tablist\" aria-label=\"Παραλλαγές κώδικα\"><button class=\"cg-tab\" id=\"model-code-1090-tab-0\" role=\"tab\" type=\"button\" aria-controls=\"model-code-1090-panel-0\" aria-selected=\"true\" tabindex=\"0\">curl</button></div><div class=\"cg-tools\"><button class=\"cg-btn cg-copy\" type=\"button\" aria-label=\"Αντιγραφή κώδικα\"><svg class=\"cp\" viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.4\"><rect x=\"5.25\" y=\"5.25\" width=\"8.5\" height=\"8.5\" rx=\"1.75\"/><path d=\"M10.75 5.25V3.5a1.25 1.25 0 0 0-1.25-1.25H3.5A1.25 1.25 0 0 0 2.25 3.5v6a1.25 1.25 0 0 0 1.25 1.25h1.75\"/></svg><svg class=\"ok\" viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.4\"><path d=\"m3 8.5 3.25 3.25L13 5\"/></svg></button></div></div><div class=\"cg-body\"><div class=\"cg-pane\" id=\"model-code-1090-panel-0\" role=\"tabpanel\" aria-labelledby=\"model-code-1090-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={&#39;model&#39;: &#39;black-forest-labs/flux-3-image&#39;, &#39;prompt&#39;: &#39;a red panda astronaut floating in space, studio lighting&#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></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><details class=\"card-about\"><summary>Άλλες ανακτήσεις περιεχομένου</summary><div class=\"code-group\"><div class=\"cg-bar\"><div class=\"cg-tabs\" role=\"tablist\" aria-label=\"Παραλλαγές κώδικα\"><button class=\"cg-tab\" id=\"model-code-1091-tab-0\" role=\"tab\" type=\"button\" aria-controls=\"model-code-1091-panel-0\" aria-selected=\"true\" tabindex=\"0\">Ανάκτηση υπαρχόντων αρχείων που σας ανήκουν</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-1091-panel-0\" role=\"tabpanel\" aria-labelledby=\"model-code-1091-tab-0\"><pre data-lang=\"bash\"><code>set -eu\n: &quot;${AILOOT_API_KEY:?Set your Ailoot API key}&quot;\ncurl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/media/assets \\\n  -H &quot;Authorization: Bearer $AILOOT_API_KEY&quot; -o owned-assets.json\n# Preserve every returned asset and follow its exact signed content URL. Do not construct a signed token.\n</code></pre></div></div></div></details><div class=\"card-result-process\" data-all-results><h5>Διατηρήστε όλα τα ολοκληρωμένα αποτελέσματα</h5><p class=\"note-s\">Αποθηκεύστε κάθε ολοκληρωμένη εικόνα· ανακτήστε κάθε URL που επιστρέφεται ή αποκωδικοποιήστε το περιεχόμενο Base64.</p><p class=\"note-s\">Διατηρήστε ολόκληρη την απόκριση και τις κεφαλίδες, κάθε πραγματικό αποτέλεσμα εξόδου, τα αρχικά αναγνωριστικά που επιστράφηκαν και όλα τα πεδία χρήσης. Ανακτήστε την αρχική λειτουργία χωρίς να υποβάλετε ξανά αίτημα δημιουργίας.</p></div><div class=\"card-result-process\" data-unknown-recovery><h5>Αν χρειάζεται έλεγχος της αρχικής απάντησης</h5><p class=\"note-s\">Διατηρήστε το X-Client-Request-ID που επιστράφηκε για τη συμφωνία των εγγραφών. Διαβάστε μόνο πραγματικές τιμές task_id/asset_id που επιστράφηκαν ή τη βιβλιοθήκη πολυμέσων που σας ανήκει· μην κατασκευάσετε ποτέ URL εργασίας από το 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></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></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></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></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=black-forest-labs%2Fflux-3-image&amp;route=Ultra&amp;caller=black-forest-labs%2Fflux-3-image&amp;fmt=images\"><code>black-forest-labs/flux-3-image</code></a></span></p><h4>Εναλλακτικές διαδρομές μεθόδων</h4><p class=\"note-s\"><code>/v1/images</code></p><h4>Σχετικά ID μοντέλων</h4><p class=\"note-s\"><a href=\"#m=black-forest-labs%2Fflux-3-image&amp;route=Ultra&amp;caller=black-forest-labs%2Fflux-3-image&amp;fmt=images\"><code>black-forest-labs/flux-3-image</code></a></p></section></div>",
      "method_identity": {
        "effective_request_model_id": "black-forest-labs/flux-3-image",
        "fmt": "images",
        "http": "POST",
        "path": "/v1/images/generations",
        "request_model_id": "black-forest-labs/flux-3-image",
        "route_label": "Ultra"
      },
      "method_key": "Ultra|images|/v1/images/generations|black-forest-labs%2Fflux-3-image",
      "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": "Retain the complete response and headers, every actual output, original returned identifiers and all usage fields. Recover the original operation without submitting creation again.",
            "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": "actual returned task_id or media library record",
                  "path": "/v1/media/tasks/{task_id}"
                }
              ],
              "unknown": "Διατηρήστε το X-Client-Request-ID που επιστράφηκε για τη συμφωνία των εγγραφών. Διαβάστε μόνο πραγματικές τιμές task_id/asset_id που επιστράφηκαν ή τη βιβλιοθήκη πολυμέσων που σας ανήκει· μην κατασκευάσετε ποτέ URL εργασίας από το ID της λειτουργίας και μην υποβάλετε ποτέ ξανά αίτημα δημιουργίας."
            },
            "outputs": {
              "all_results": "Διατηρήστε ολόκληρη την απόκριση και τις κεφαλίδες, κάθε πραγματικό αποτέλεσμα εξόδου, τα αρχικά αναγνωριστικά που επιστράφηκαν και όλα τα πεδία χρήσης. Ανακτήστε την αρχική λειτουργία χωρίς να υποβάλετε ξανά αίτημα δημιουργίας.",
              "family": "image",
              "fields": [
                {
                  "description": null,
                  "name": "created",
                  "type": null
                },
                {
                  "description": null,
                  "name": "data[].url",
                  "type": null
                },
                {
                  "description": null,
                  "name": "data[].b64_json",
                  "type": null
                },
                {
                  "description": null,
                  "name": "usage",
                  "type": null
                }
              ]
            },
            "parameters": [
              {
                "enum": [
                  "black-forest-labs/flux-3-image"
                ],
                "enum_known": true,
                "name": "model",
                "required": true,
                "type": "string"
              },
              {
                "min_length": 1,
                "name": "prompt",
                "required": true,
                "type": "string"
              },
              {
                "enum": [
                  "768",
                  "1K",
                  "1.5K",
                  "2K",
                  "4K"
                ],
                "enum_known": true,
                "name": "resolution",
                "required": false,
                "type": "string"
              },
              {
                "enum": [
                  "21:9",
                  "2:1",
                  "16:9",
                  "3:2",
                  "7:5",
                  "4:3",
                  "5:4",
                  "1:1",
                  "4:5",
                  "3:4",
                  "5:7",
                  "2:3",
                  "9:16",
                  "1:2",
                  "9:21",
                  "auto"
                ],
                "enum_known": true,
                "name": "aspect_ratio",
                "required": false,
                "type": "string"
              },
              {
                "maximum": 1,
                "minimum": 1,
                "name": "n",
                "required": false,
                "type": "integer"
              },
              {
                "items": {
                  "properties": {
                    "image_url": {
                      "properties": {
                        "url": {
                          "type": "string"
                        }
                      },
                      "required": [
                        "url"
                      ],
                      "type": "object"
                    },
                    "type": {
                      "const": "image_url"
                    }
                  },
                  "required": [
                    "type",
                    "image_url"
                  ],
                  "type": "object"
                },
                "maximum_items": 10,
                "minimum_items": 0,
                "name": "input_references",
                "required": false,
                "type": "array"
              },
              {
                "name": "provider",
                "required": false,
                "type": "object"
              }
            ],
            "request_schema": {
              "properties": {
                "aspect_ratio": {
                  "enum": [
                    "21:9",
                    "2:1",
                    "16:9",
                    "3:2",
                    "7:5",
                    "4:3",
                    "5:4",
                    "1:1",
                    "4:5",
                    "3:4",
                    "5:7",
                    "2:3",
                    "9:16",
                    "1:2",
                    "9:21",
                    "auto"
                  ],
                  "type": "string"
                },
                "input_references": {
                  "items": {
                    "properties": {
                      "image_url": {
                        "properties": {
                          "url": {
                            "type": "string"
                          }
                        },
                        "required": [
                          "url"
                        ],
                        "type": "object"
                      },
                      "type": {
                        "const": "image_url"
                      }
                    },
                    "required": [
                      "type",
                      "image_url"
                    ],
                    "type": "object"
                  },
                  "maxItems": 10,
                  "minItems": 0,
                  "type": "array"
                },
                "model": {
                  "enum": [
                    "black-forest-labs/flux-3-image"
                  ],
                  "type": "string"
                },
                "n": {
                  "maximum": 1,
                  "minimum": 1,
                  "type": "integer"
                },
                "prompt": {
                  "minLength": 1,
                  "type": "string"
                },
                "provider": {
                  "description": "Exact image provider preferences from the documented image request schema.",
                  "type": "object"
                },
                "resolution": {
                  "enum": [
                    "768",
                    "1K",
                    "1.5K",
                    "2K",
                    "4K"
                  ],
                  "type": "string"
                }
              },
              "required": [
                "model",
                "prompt"
              ],
              "type": "object"
            },
            "schema_template": {
              "actual_file_preparation_required": false,
              "body": {
                "model": "black-forest-labs/flux-3-image",
                "prompt": "a red panda astronaut floating in space, studio lighting"
              },
              "content_type": "application/json"
            }
          },
          "input": {
            "content_type": "application/json",
            "material_types": [
              "text",
              "image"
            ],
            "required": [
              "model",
              "prompt"
            ]
          },
          "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": "Keep the returned X-Client-Request-ID for reconciliation. Read only actual returned task_id/asset_id values or the owned media library; never build a task URL from the operation ID and never resubmit creation."
          },
          "method": {
            "http": "POST",
            "path": "/v1/images/generations"
          },
          "output": {
            "all_results": "Retain the complete response and headers, every actual output, original returned identifiers and all usage fields. Recover the original operation without submitting creation again.",
            "family": "image",
            "fields": [
              {
                "description": null,
                "name": "created",
                "type": null
              },
              {
                "description": null,
                "name": "data[].url",
                "type": null
              },
              {
                "description": null,
                "name": "data[].b64_json",
                "type": null
              },
              {
                "description": null,
                "name": "usage",
                "type": null
              }
            ]
          }
        },
        "ctx": null,
        "declared_pricing_profiles": [
          {
            "dimensions": {
              "regime": "base"
            },
            "label": "Base token rates",
            "units": [
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "input_price",
                "label": "Input tokens",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "output_price",
                "label": "Output tokens",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "output_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "output_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "cache_read_price",
                "label": "Cache read",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "cached_input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "cached_input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "cache_write_price",
                "label": "Cache write",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "generic_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "generic_cache_creation_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "cache_write_1h_price",
                "label": "Cache write, 1 hour",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "one_hour_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "one_hour_cache_creation_token"
              }
            ]
          },
          {
            "basis": "Αυτή η εκτίμηση δεν αποτελεί πρόσθετη χρέωση ούτε σταθερή τιμή για την ολοκληρωμένη παραγωγή.",
            "dimensions": {
              "forecast_quantity": "one generation estimate"
            },
            "label": "Εκτιμώμενο κόστος δημιουργίας",
            "units": [
              {
                "amount": "0.082",
                "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.082",
                "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={'model': 'black-forest-labs/flux-3-image', 'prompt': 'a red panda astronaut floating in space, studio lighting'}\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": "set -eu\n: \"${AILOOT_API_KEY:?Set your Ailoot API key}\"\ncurl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/media/assets \\\n  -H \"Authorization: Bearer $AILOOT_API_KEY\" -o owned-assets.json\n# Preserve every returned asset and follow its exact signed content URL. Do not construct a signed token.\n",
            "label": "Read existing owned assets",
            "language": "bash"
          }
        ],
        "family": "openai",
        "fast_multiplier": null,
        "flex_multiplier": null,
        "fmt": "images",
        "hints": [
          "Use the exact caller model ID and documented input representation.",
          "Retain the complete response and headers, every actual output, original returned identifiers and all usage fields. Recover the original operation without submitting creation again."
        ],
        "http": "POST",
        "in": null,
        "input": [
          "text",
          "image"
        ],
        "label": "Εικόνες",
        "max_out": null,
        "max_reasoning_effort_multiplier": null,
        "method_aliases": [
          "/v1/images"
        ],
        "native_endpoint": "images",
        "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"
              }
            ]
          },
          {
            "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.082",
                "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.082",
                "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": "black-forest-labs/flux-3-image",
        "route_label": "Ultra",
        "status_reads": [
          "GET /v1/media/tasks/{task_id}"
        ],
        "tiers": [],
        "units": [
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": false,
            "estimate_only": true,
            "key": "input_price",
            "label": "Input tokens",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "input_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "input_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": false,
            "estimate_only": true,
            "key": "output_price",
            "label": "Output tokens",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "output_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "out",
            "unit": "output_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": false,
            "estimate_only": true,
            "key": "cache_read_price",
            "label": "Cache read",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "cached_input_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "cached_input_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": false,
            "estimate_only": true,
            "key": "cache_write_price",
            "label": "Cache write",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "generic_cache_creation_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "generic_cache_creation_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": false,
            "estimate_only": true,
            "key": "cache_write_1h_price",
            "label": "Cache write, 1 hour",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "one_hour_cache_creation_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "one_hour_cache_creation_token"
          },
          {
            "amount": "0.082",
            "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.082",
            "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": "black-forest-labs/flux-3-image",
  "nativeProvenance": {
    "input_facts_canonical_sha256": "f020e76d1f24e070ef7305a21a5310d336526a8c8c822c5973b82dd282921439",
    "input_html_sha256": "0bf44d9b460234d0e5bd2a9d51cf0593445d560a830490f005a2f16cbda666f3",
    "private_audit_sha256": "605ff44ed9a37ea3aaaf092479b1c2c6850e2b6aa5095c394a3f4b0ade544d4f",
    "role": "historical-normalized-input-audit-hashes",
    "schema": "ailoot-native-model-provenance-v2"
  },
  "page": {
    "canonical": "https://ailoot.ai/models/el/black-forest-labs-flux-3-image/",
    "description": "Το FLUX 3 Image δημιουργεί και επεξεργάζεται εικόνες από γραπτή περιγραφή και έως δέκα αναφορές. Προσθέτει πλαίσια οριοθέτησης μέσω προτροπών για σύνθεση και τοπικές αλλαγές, τεκμηρίωση από ιστό και εικόνες και πέντε κατηγορίες ανάλυσης.",
    "locale": "el",
    "md_url": "https://ailoot.ai/models/el/black-forest-labs-flux-3-image/index.md",
    "title": "Black Forest Labs: FLUX.3 Image — Ailoot",
    "url": "https://ailoot.ai/models/el/black-forest-labs-flux-3-image/"
  },
  "rawModel": {
    "about": "Το FLUX 3 Image είναι το μοντέλο δημιουργίας και επεξεργασίας εικόνων της Black Forest Labs με ρητό έλεγχο σύνθεσης. Μια περιγραφή κειμένου μπορεί να δημιουργήσει νέα σκηνή· οι παρεχόμενες εικόνες μπορούν να καθορίζουν θέμα, σκηνή προς αναθεώρηση ή αρκετά στοιχεία προς συνδυασμό. Τα πλαίσια οριοθέτησης επιτρέπουν στην περιγραφή να ορίζει πού ανήκει κάθε στοιχείο και ποια μέρη υπάρχουσας εικόνας πρέπει να αλλάξουν. Το αποτέλεσμα είναι εικόνα, με τη ζητούμενη σκηνή, το κείμενο και τη διάταξη προς έλεγχο.\n\n### Δημιουργήστε σκηνή ή δώστε οδηγία επεξεργασίας\n\nΓια νέα εικόνα, περιγράψτε το θέμα, τη δράση ή στάση, το περιβάλλον, το φως και το κάδρο. Βάλτε την ακριβή διατύπωση μέσα στην εικόνα σε εισαγωγικά και δηλώστε πού εμφανίζεται. Μια πρωτότυπη περιγραφή προϊόντος θα μπορούσε να δείχνει κόκκινη κούπα κάμπινγκ σε ανοιχτόχρωμη πέτρινη επιφάνεια, με μεγάλο τίτλο από πάνω και απαλό πρωινό φως που αναδεικνύει το χερούλι. Ορίστε τη σχέση τίτλου, προϊόντος και φόντου, αντί να δίνετε άσχετες λέξεις ύφους.\n\nΓια επεξεργασία, προσδιορίστε το συγκεκριμένο αντικείμενο και την αλλαγή: αλλάξτε χρώμα στην κούπα, αντικαταστήστε ετικέτα, μετακινήστε φιγούρα ή αλλάξτε ύφος στη σκηνή. Μία επεξεργασία δεν απαιτεί χειροκίνητα σχεδιασμένο πλαίσιο. Η τεκμηριωμένη ροή επεκτείνει την οδηγία πριν τη δημιουργία και μπορεί να εντοπίσει το ονομασμένο στοιχείο και να προσθέσει αυτόματα πλαίσιο. Η επιστρεφόμενη εμπλουτισμένη προτροπή καταγράφει αυτή την ερμηνεία, χρήσιμη όταν μια οδηγία επιλέγει λάθος αντικείμενο ή εισάγει ανεπιθύμητη λεπτομέρεια.\n\n### Συνδυάστε και προετοιμάστε εικόνες αναφοράς\n\nΤο συγκεκριμένο προφίλ παραγωγού δέχεται από μία έως δέκα αναφορές, παρεχόμενες ως URL εικόνων ή κωδικοποιημένα δεδομένα εικόνας. Καθεμία πρέπει να είναι τουλάχιστον 256×256 pixel και όχι μεγαλύτερη από 16 megapixel. Ονομάστε μια αναφορά βάσει θέσης ή ορατού περιεχομένου και εξηγήστε τον ρόλο της: το πρόσωπο από Image 1, το σακάκι από Image 2 και το δωμάτιο από Image 3. Μια εικόνα αναφοράς είναι πηγή οπτικών πληροφοριών, όχι οδηγία αντιγραφής κάθε άσχετης λεπτομέρειας που περιέχει.\n\nΗ ρύθμιση αναλογίας διαστάσεων έχει προεπιλογή auto. Στην προδιαγραφή αιτήματος, μια αναλογία που ζητείται στην προτροπή έχει προτεραιότητα· διαφορετικά η πρώτη αναφορά καθορίζει το κάδρο, με τετράγωνη έξοδο ως εναλλακτική όταν ούτε αναφορά ούτε ζητούμενο σχήμα το ορίζουν. Για σύνθεση, τοποθετήστε πρώτη την αναφορά της επιθυμητής σκηνής ή επιλέξτε ρητά την αναλογία. Κρατήστε τις αρχικές εικόνες και τη σειρά τους μαζί με το αποτέλεσμα, ώστε μεταγενέστερη αναθεώρηση να χρησιμοποιεί την ίδια οπτική αφετηρία.\n\n### Τοποθετήστε στοιχεία με πλαίσια οριοθέτησης\n\nΜια προτροπή διάταξης συνδυάζει λεζάντα με πίνακα JSON από γραμμές στοιχείων. Η λεζάντα ονομάζει ένα στοιχείο μέσω δείκτη όπως <cup_1>· η γραμμή περιέχει id, bbox και desc. Οι συντεταγμένες είναι ακέραιοι από 0 έως 1000 στη σειρά [top, left, bottom, right], με αφετηρία την επάνω αριστερή γωνία. Για παράδειγμα, το [0, 0, 500, 500] περιγράφει το επάνω αριστερό τέταρτο ανεξάρτητα από τις διαστάσεις pixel της εικόνας. Χρησιμοποιήστε την αναλογία για την οποία σχεδιάστηκε η διάταξη, επειδή αυτό το πλέγμα συντεταγμένων τεντώνεται μαζί με το κάδρο.\n\nΜια γραμμή επεξεργασίας χρησιμοποιεί αντίθετα from, src_bbox και tgt_bbox μαζί με το αναγνωριστικό και την περιγραφή. Το ref_image_0 σημαίνει την πρώτη παρεχόμενη εικόνα. Ίδια πλαίσια πηγής και στόχου σταθεροποιούν ένα στοιχείο· διαφορετικά πλαίσια το μετακινούν ή αλλάζουν το μέγεθός του. Νέα γραμμή χωρίς πηγή παράγει την περιγραφή της στη θέση στόχου, επιτρέποντας προσθήκες, αντικαταστάσεις ή αλλαγές χρώματος. Γραμμή πηγής χωρίς στόχο αφαιρεί το στοιχείο. Δηλώστε προσθήκες και αφαιρέσεις τόσο στη γραπτή οδηγία όσο και στις γραμμές και διατηρήστε γραμμές σταθεροποίησης για λεπτομέρειες που πρέπει να μείνουν στη θέση τους.\n\nΔώστε στα γράμματα δικό τους πλαίσιο και παραθέστε την ακριβή διατύπωσή τους στο desc. Τα πλαίσια καθοδηγούν θέση και κλίμακα· δεν είναι μάσκες αποκοπής, οπότε ένα στοιχείο μπορεί να εκτείνεται πέρα από το ορθογώνιο. Ο κατασκευαστής αναφέρει ότι νέα αντικείμενα σε πλαίσια περίπου 40×25 pixel συχνά δεν εμφανίζονταν στα παραδείγματά του. Αφήστε αρκετό ορατό χώρο και εξετάστε τα επεξεργασμένα όρια. Τα pixel εκτός στόχου συνήθως παραμένουν σταθερά, αλλά σκιές, αντανακλάσεις και κοντινός φωτισμός μπορεί και πάλι να αλλάξουν.\n\n### Τεκμηρίωση, κατηγορίες εξόδου και χρήσιμα αρχεία\n\nΤο τεκμηριωμένο προφίλ ενεργοποιεί από προεπιλογή την τεκμηρίωση, επιτρέποντας σε αναζήτηση ιστού και εικόνων να ενημερώνει τη δημιουργία. Μπορεί να απενεργοποιηθεί για περιγραφή που πρέπει να χρησιμοποιεί μόνο το παρεχόμενο κείμενο και τις αναφορές της. Για θέμα πραγματικού κόσμου, προσδιορίστε καθαρά την τοποθεσία, το γεγονός ή το αντικείμενο και κρατήστε το πραγματολογικό περιεχόμενο χωριστό από την καλλιτεχνική απόδοση. Εικόνες που ενημερώνονται από αναζήτηση εξακολουθούν να χρειάζονται σύγκριση με έγκυρο υλικό όταν απαιτείται ακρίβεια σε μια ετικέτα, ένα αντικείμενο ή ένα απεικονιζόμενο γεγονός.\n\nΟι πέντε κατηγορίες ανάλυσης είναι 768sq, 1k, 1.5k, 2k και 4k, με προεπιλογή 1k. Αντιπροσωπεύουν βαθμίδες ίσου εμβαδού pixel, επομένως το ακριβές πλάτος και ύψος εξαρτώνται από την επιλεγμένη αναλογία. Δεκαπέντε σταθερές αναλογίες εκτείνονται από 21:9, μέσω τετράγωνων και κάθετων μορφών, έως 9:21. Το προφίλ αυτού του μοντέλου ελέγχει το μέγεθος μέσω αναλογίας και ανάλυσης· δεν εκθέτει τα πεδία seed, width ή height των προφίλ αιτήματος FLUX.2. Ο τεκμηριωμένος επιλογέας έκδοσης ονομάζει επί του παρόντος μια μεταβαλλόμενη έκδοση, αντί να καθορίζει χρονολογημένη αντιστοίχιση βαρών προμηθευτή.\n\nΗ ροή παραγωγού επιστρέφει εικόνα μετά από ασύγχρονη επεξεργασία, μαζί με την εμπλουτισμένη προτροπή. Ο υπογεγραμμένος σύνδεσμος λήψης εικόνας ισχύει για μία ώρα. Διατηρήστε την πραγματική εικόνα, την τελική προτροπή και τις αναφορές αντί να βασίζεστε σε προσωρινό σύνδεσμο. Για ελεγμένο οπτικό αρχείο, συγκρίνετε το ζητούμενο κείμενο, την τοποθέτηση αντικειμένων, την ταυτότητα αναφορών και την αλλαγμένη περιοχή στο προβλεπόμενο μέγεθος προβολής. Μια ολοκληρωμένη δημιουργία είναι η αφετηρία για τον έλεγχο αυτών των οπτικών απαιτήσεων.",
    "alias_of": null,
    "aliases": [],
    "author": "Black Forest Labs",
    "capabilities": {
      "context_length": 46864,
      "manufacturer_input": [
        "text",
        "image"
      ],
      "manufacturer_output": [
        "image"
      ]
    },
    "card_routes": [
      {
        "label": "Ultra",
        "rates": [
          {
            "amount": "0.082",
            "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.082",
            "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,
    "formats": [
      "images"
    ],
    "id": "black-forest-labs/flux-3-image",
    "input": [
      "text",
      "image"
    ],
    "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": "Retain the complete response and headers, every actual output, original returned identifiers and all usage fields. Recover the original operation without submitting creation again.",
            "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": "actual returned task_id or media library record",
                  "path": "/v1/media/tasks/{task_id}"
                }
              ],
              "unknown": "Διατηρήστε το X-Client-Request-ID που επιστράφηκε για τη συμφωνία των εγγραφών. Διαβάστε μόνο πραγματικές τιμές task_id/asset_id που επιστράφηκαν ή τη βιβλιοθήκη πολυμέσων που σας ανήκει· μην κατασκευάσετε ποτέ URL εργασίας από το ID της λειτουργίας και μην υποβάλετε ποτέ ξανά αίτημα δημιουργίας."
            },
            "outputs": {
              "all_results": "Διατηρήστε ολόκληρη την απόκριση και τις κεφαλίδες, κάθε πραγματικό αποτέλεσμα εξόδου, τα αρχικά αναγνωριστικά που επιστράφηκαν και όλα τα πεδία χρήσης. Ανακτήστε την αρχική λειτουργία χωρίς να υποβάλετε ξανά αίτημα δημιουργίας.",
              "family": "image",
              "fields": [
                {
                  "description": null,
                  "name": "created",
                  "type": null
                },
                {
                  "description": null,
                  "name": "data[].url",
                  "type": null
                },
                {
                  "description": null,
                  "name": "data[].b64_json",
                  "type": null
                },
                {
                  "description": null,
                  "name": "usage",
                  "type": null
                }
              ]
            },
            "parameters": [
              {
                "enum": [
                  "black-forest-labs/flux-3-image"
                ],
                "enum_known": true,
                "name": "model",
                "required": true,
                "type": "string"
              },
              {
                "min_length": 1,
                "name": "prompt",
                "required": true,
                "type": "string"
              },
              {
                "enum": [
                  "768",
                  "1K",
                  "1.5K",
                  "2K",
                  "4K"
                ],
                "enum_known": true,
                "name": "resolution",
                "required": false,
                "type": "string"
              },
              {
                "enum": [
                  "21:9",
                  "2:1",
                  "16:9",
                  "3:2",
                  "7:5",
                  "4:3",
                  "5:4",
                  "1:1",
                  "4:5",
                  "3:4",
                  "5:7",
                  "2:3",
                  "9:16",
                  "1:2",
                  "9:21",
                  "auto"
                ],
                "enum_known": true,
                "name": "aspect_ratio",
                "required": false,
                "type": "string"
              },
              {
                "maximum": 1,
                "minimum": 1,
                "name": "n",
                "required": false,
                "type": "integer"
              },
              {
                "items": {
                  "properties": {
                    "image_url": {
                      "properties": {
                        "url": {
                          "type": "string"
                        }
                      },
                      "required": [
                        "url"
                      ],
                      "type": "object"
                    },
                    "type": {
                      "const": "image_url"
                    }
                  },
                  "required": [
                    "type",
                    "image_url"
                  ],
                  "type": "object"
                },
                "maximum_items": 10,
                "minimum_items": 0,
                "name": "input_references",
                "required": false,
                "type": "array"
              },
              {
                "name": "provider",
                "required": false,
                "type": "object"
              }
            ],
            "request_schema": {
              "properties": {
                "aspect_ratio": {
                  "enum": [
                    "21:9",
                    "2:1",
                    "16:9",
                    "3:2",
                    "7:5",
                    "4:3",
                    "5:4",
                    "1:1",
                    "4:5",
                    "3:4",
                    "5:7",
                    "2:3",
                    "9:16",
                    "1:2",
                    "9:21",
                    "auto"
                  ],
                  "type": "string"
                },
                "input_references": {
                  "items": {
                    "properties": {
                      "image_url": {
                        "properties": {
                          "url": {
                            "type": "string"
                          }
                        },
                        "required": [
                          "url"
                        ],
                        "type": "object"
                      },
                      "type": {
                        "const": "image_url"
                      }
                    },
                    "required": [
                      "type",
                      "image_url"
                    ],
                    "type": "object"
                  },
                  "maxItems": 10,
                  "minItems": 0,
                  "type": "array"
                },
                "model": {
                  "enum": [
                    "black-forest-labs/flux-3-image"
                  ],
                  "type": "string"
                },
                "n": {
                  "maximum": 1,
                  "minimum": 1,
                  "type": "integer"
                },
                "prompt": {
                  "minLength": 1,
                  "type": "string"
                },
                "provider": {
                  "description": "Exact image provider preferences from the documented image request schema.",
                  "type": "object"
                },
                "resolution": {
                  "enum": [
                    "768",
                    "1K",
                    "1.5K",
                    "2K",
                    "4K"
                  ],
                  "type": "string"
                }
              },
              "required": [
                "model",
                "prompt"
              ],
              "type": "object"
            },
            "schema_template": {
              "actual_file_preparation_required": false,
              "body": {
                "model": "black-forest-labs/flux-3-image",
                "prompt": "a red panda astronaut floating in space, studio lighting"
              },
              "content_type": "application/json"
            }
          },
          "input": {
            "content_type": "application/json",
            "material_types": [
              "text",
              "image"
            ],
            "required": [
              "model",
              "prompt"
            ]
          },
          "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": "Keep the returned X-Client-Request-ID for reconciliation. Read only actual returned task_id/asset_id values or the owned media library; never build a task URL from the operation ID and never resubmit creation."
          },
          "method": {
            "http": "POST",
            "path": "/v1/images/generations"
          },
          "output": {
            "all_results": "Retain the complete response and headers, every actual output, original returned identifiers and all usage fields. Recover the original operation without submitting creation again.",
            "family": "image",
            "fields": [
              {
                "description": null,
                "name": "created",
                "type": null
              },
              {
                "description": null,
                "name": "data[].url",
                "type": null
              },
              {
                "description": null,
                "name": "data[].b64_json",
                "type": null
              },
              {
                "description": null,
                "name": "usage",
                "type": null
              }
            ]
          }
        },
        "ctx": null,
        "declared_pricing_profiles": [
          {
            "dimensions": {
              "regime": "base"
            },
            "label": "Base token rates",
            "units": [
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "input_price",
                "label": "Input tokens",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "output_price",
                "label": "Output tokens",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "output_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "output_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "cache_read_price",
                "label": "Cache read",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "cached_input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "cached_input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "cache_write_price",
                "label": "Cache write",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "generic_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "generic_cache_creation_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "cache_write_1h_price",
                "label": "Cache write, 1 hour",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "one_hour_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "one_hour_cache_creation_token"
              }
            ]
          },
          {
            "basis": "Αυτή η εκτίμηση δεν αποτελεί πρόσθετη χρέωση ούτε σταθερή τιμή για την ολοκληρωμένη παραγωγή.",
            "dimensions": {
              "forecast_quantity": "one generation estimate"
            },
            "label": "Εκτιμώμενο κόστος δημιουργίας",
            "units": [
              {
                "amount": "0.082",
                "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.082",
                "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={'model': 'black-forest-labs/flux-3-image', 'prompt': 'a red panda astronaut floating in space, studio lighting'}\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": "set -eu\n: \"${AILOOT_API_KEY:?Set your Ailoot API key}\"\ncurl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/media/assets \\\n  -H \"Authorization: Bearer $AILOOT_API_KEY\" -o owned-assets.json\n# Preserve every returned asset and follow its exact signed content URL. Do not construct a signed token.\n",
            "label": "Read existing owned assets",
            "language": "bash"
          }
        ],
        "family": "openai",
        "fast_multiplier": null,
        "flex_multiplier": null,
        "fmt": "images",
        "hints": [
          "Use the exact caller model ID and documented input representation.",
          "Retain the complete response and headers, every actual output, original returned identifiers and all usage fields. Recover the original operation without submitting creation again."
        ],
        "http": "POST",
        "in": null,
        "input": [
          "text",
          "image"
        ],
        "label": "Εικόνες",
        "max_out": null,
        "max_reasoning_effort_multiplier": null,
        "method_aliases": [
          "/v1/images"
        ],
        "native_endpoint": "images",
        "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"
              }
            ]
          },
          {
            "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.082",
                "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.082",
                "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": "black-forest-labs/flux-3-image",
        "route_label": "Ultra",
        "status_reads": [
          "GET /v1/media/tasks/{task_id}"
        ],
        "tiers": [],
        "units": [
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": false,
            "estimate_only": true,
            "key": "input_price",
            "label": "Input tokens",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "input_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "input_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": false,
            "estimate_only": true,
            "key": "output_price",
            "label": "Output tokens",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "output_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "out",
            "unit": "output_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": false,
            "estimate_only": true,
            "key": "cache_read_price",
            "label": "Cache read",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "cached_input_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "cached_input_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": false,
            "estimate_only": true,
            "key": "cache_write_price",
            "label": "Cache write",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "generic_cache_creation_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "generic_cache_creation_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": false,
            "estimate_only": true,
            "key": "cache_write_1h_price",
            "label": "Cache write, 1 hour",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "one_hour_cache_creation_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "one_hour_cache_creation_token"
          },
          {
            "amount": "0.082",
            "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.082",
            "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": "black-forest-labs/flux-3-image",
        "request_model_id": "black-forest-labs/flux-3-image",
        "route_label": "Ultra"
      }
    ],
    "name": "Black Forest Labs: FLUX.3 Image",
    "price": {
      "estimate_only": true,
      "in": null,
      "in_label": null,
      "out": 0.082,
      "out_label": "estimate before generation",
      "scope_label": "Estimated generation cost",
      "sort_in": null,
      "sort_out": 0.082,
      "varies": false
    },
    "short": "Το FLUX 3 Image δημιουργεί και επεξεργάζεται εικόνες από γραπτή περιγραφή και έως δέκα αναφορές. Προσθέτει πλαίσια οριοθέτησης μέσω προτροπών για σύνθεση και τοπικές αλλαγές, τεκμηρίωση από ιστό και εικόνες και πέντε κατηγορίες ανάλυσης."
  },
  "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": "Το FLUX 3 Image δημιουργεί και επεξεργάζεται εικόνες από γραπτή περιγραφή και έως δέκα αναφορές. Προσθέτει πλαίσια οριοθέτησης μέσω προτροπών για σύνθεση και τοπικές αλλαγές, τεκμηρίωση από ιστό και εικόνες και πέντε κατηγορίες ανάλυσης.",
  "source": {
    "audit_sha256": "2e00086bcbfc28e64d0cebe97aa47c17d8d5618963027f8ffb9dc6123d7d25b1",
    "bridge_map_sha256": "1125275768b9636fc8461bc7da5061239a81ddfe508e2557843ca42c58ab0036",
    "raw_model_json_sha256": "7c562d026801d8f2b2f7a986625cf97737f6b9b5777ba1f3fc9fb6cd85038fc5",
    "renderer_sha256": "3ed36f7af4f78822bafbd174fdcaed7b698a18a86efe254253d37f1b098a7566"
  },
  "sourceRevision": "ad678192b7efe6baed2732244306cde9729a1bee5b161aec54bc24518e1921a2"
}
