{
  "aboutHtml": "<p>Το Tripo δημιουργεί μοντέλα 3D από περιγραφή ή οπτική αναφορά. Οι ροές εργασίας του διαχωρίζουν τη δημιουργία ενός αντικειμένου από μεταγενέστερα βήματα, όπως η εφαρμογή υφών, η δημιουργία σκελετού και η μετατροπή. Ξεκινήστε προσδιορίζοντας το επιθυμητό στοιχείο και τη λειτουργία που το παράγει: ένα στατικό πλέγμα για μια σκηνή, ένα αντικείμενο με υφές για απόδοση ή ένα μοντέλο που θα προετοιμαστεί περαιτέρω σε επεξεργαστή 3D.</p><p>Για μια περιγραφή δημιουργίας μοντέλου από κείμενο, περιγράψτε το σχήμα του αντικειμένου και τα σημαντικά μέρη του. Ένα μικρό φανάρι μπορεί να προσδιοριστεί μέσω του σώματος, της λαβής, των ανοιγμάτων και των αναλογιών του· ένα πλάσμα μέσω του περιγράμματος, των άκρων και της στάσης του. Δηλώστε το υλικό ή το οπτικό ύφος όταν επηρεάζουν το αποτέλεσμα. Κρατήστε την περιγραφή εστιασμένη στο ίδιο το αντικείμενο, ώστε η παραγόμενη γεωμετρία να μπορεί να αξιολογηθεί ως προς ένα σαφές σχέδιο.</p><p>Για μια ροή εργασίας του κατασκευαστή που βασίζεται σε αναφορές, προετοιμάστε εικόνες που δείχνουν το περίγραμμα του θέματος και τα διακριτά χαρακτηριστικά του. Οι διαφορετικές όψεις πρέπει να περιγράφουν το ίδιο αντικείμενο με συνεπείς αναλογίες και εξαρτήματα. Μετά τη δημιουργία, ελέγξτε τα μέρη που είναι κρυμμένα στην αναφορά, επειδή μια πειστική εμπρόσθια όψη δεν αποδεικνύει ότι η πίσω ή η κάτω πλευρά και οι συνδέσεις μεταξύ των μερών αντιστοιχούν στο επιθυμητό σχέδιο.</p><p>Διατηρήστε την επιλεγμένη έκδοση του μοντέλου μαζί με το αίτημα. Η διεπαφή δημιουργίας του Tripo προσδιορίζει τη λειτουργία χωριστά από τη ρύθμιση της έκδοσης του μοντέλου, και το τεκμηριωμένο παράδειγμα δημιουργίας μοντέλου από κείμενο επιλέγει συγκεκριμένη έκδοση. Διατηρήστε την ακριβή έκδοση και τις παραμέτρους ελέγχου κατά τη σύγκριση στοιχείων, ώστε μια αλλαγή στην περιγραφή του αντικειμένου να μη συγχέεται με αλλαγή στη διαμόρφωση της δημιουργίας.</p><p>Η γεωμετρία και η εμφάνιση της επιφάνειας αποτελούν ξεχωριστές αποφάσεις παραγωγής. Η βασική ροή εργασίας του κατασκευαστή διακρίνει ένα μοντέλο χωρίς υφές από ένα αποτέλεσμα με υφές και υλικά για απόδοση με βάση τη φυσική. Επιλέξτε τη μορφή του στοιχείου που χρειάζεται το επόμενο βήμα και εξετάστε τόσο το πλέγμα όσο και τυχόν συνοδευτικά αρχεία υλικών. Μια εικόνα προεπισκόπησης βοηθά στον προσανατολισμό, ενώ το πραγματικό μοντέλο είναι το στοιχείο που απαιτείται για τη συναρμολόγηση της σκηνής και την περαιτέρω επεξεργασία.</p><p>Εξετάστε το ολοκληρωμένο αντικείμενο από διάφορες γωνίες. Ελέγξτε το περίγραμμα, τον διαχωρισμό των μερών, τα λεπτά χαρακτηριστικά, τα ανοίγματα και τις επιφάνειες όπου συναντώνται τα μέρη. Για ένα στυλιζαρισμένο αντικείμενο σκηνής, συγκρίνετε τις αναλογίες με την περιγραφή του σχεδίου. Για ένα αντικείμενο που μοιάζει με προϊόν, ελέγξτε ποιες λεπτομέρειες αποδίδονται με γεωμετρία και ποιες εμφανίζονται μόνο στην επεξεργασία της επιφάνειας. Προσδιορίστε το χαρακτηριστικό που χρειάζεται αναθεώρηση πριν αλλάξετε την προτροπή ή την αναφορά.</p><p>Η δημιουργία εκτελείται ως ασύγχρονη εργασία. Διατηρήστε την ταυτότητα της αρχικής εργασίας σε όλη τη διάρκεια του ελέγχου της κατάστασής της και κρατήστε μαζί το ολοκληρωμένο μοντέλο, την προεπισκόπηση και τυχόν άλλα αρχεία που επιστρέφονται. Το τεκμηριωμένο αποτέλεσμα περιλαμβάνει πεδία εξόδου σχετικά με το μοντέλο και αποδοσμένες εικόνες. Αποθηκεύστε τα ίδια τα αρχεία για το επόμενο βήμα παραγωγής, αντί να βασίζεστε σε προσωρινό σύνδεσμο αποτελέσματος ή να αντιμετωπίζετε την προεπισκόπηση ως το ολοκληρωμένο παραδοτέο 3D.</p><p>Εισαγάγετε το μοντέλο στον προβλεπόμενο επεξεργαστή ή στο περιβάλλον προβολής και εξετάστε εκεί τον προσανατολισμό, την κλίμακα, τα υλικά και τη γεωμετρία του. Ένα αντικείμενο σκηνής, μια κοντινή απόδοση και ένας χαρακτήρας έτοιμος για κίνηση έχουν διαφορετικές ανάγκες ολοκλήρωσης. Κρατήστε ένα αντίγραφο εργασίας για τις αλλαγές και διατηρήστε το αρχικό παραγόμενο στοιχείο μαζί με την περιγραφή και τις αναφορές του. Όταν απαιτείται άλλη λειτουργία, όπως εργασία στις υφές ή δημιουργία σκελετού, επιλέξτε τη συνειδητά και ελέγξτε το στοιχείο που προκύπτει ως ξεχωριστό στάδιο.</p>",
  "aboutText": "Το Tripo δημιουργεί μοντέλα 3D από περιγραφή ή οπτική αναφορά. Οι ροές εργασίας του διαχωρίζουν τη δημιουργία ενός αντικειμένου από μεταγενέστερα βήματα, όπως η εφαρμογή υφών, η δημιουργία σκελετού και η μετατροπή. Ξεκινήστε προσδιορίζοντας το επιθυμητό στοιχείο και τη λειτουργία που το παράγει: ένα στατικό πλέγμα για μια σκηνή, ένα αντικείμενο με υφές για απόδοση ή ένα μοντέλο που θα προετοιμαστεί περαιτέρω σε επεξεργαστή 3D.\n\nΓια μια περιγραφή δημιουργίας μοντέλου από κείμενο, περιγράψτε το σχήμα του αντικειμένου και τα σημαντικά μέρη του. Ένα μικρό φανάρι μπορεί να προσδιοριστεί μέσω του σώματος, της λαβής, των ανοιγμάτων και των αναλογιών του· ένα πλάσμα μέσω του περιγράμματος, των άκρων και της στάσης του. Δηλώστε το υλικό ή το οπτικό ύφος όταν επηρεάζουν το αποτέλεσμα. Κρατήστε την περιγραφή εστιασμένη στο ίδιο το αντικείμενο, ώστε η παραγόμενη γεωμετρία να μπορεί να αξιολογηθεί ως προς ένα σαφές σχέδιο.\n\nΓια μια ροή εργασίας του κατασκευαστή που βασίζεται σε αναφορές, προετοιμάστε εικόνες που δείχνουν το περίγραμμα του θέματος και τα διακριτά χαρακτηριστικά του. Οι διαφορετικές όψεις πρέπει να περιγράφουν το ίδιο αντικείμενο με συνεπείς αναλογίες και εξαρτήματα. Μετά τη δημιουργία, ελέγξτε τα μέρη που είναι κρυμμένα στην αναφορά, επειδή μια πειστική εμπρόσθια όψη δεν αποδεικνύει ότι η πίσω ή η κάτω πλευρά και οι συνδέσεις μεταξύ των μερών αντιστοιχούν στο επιθυμητό σχέδιο.\n\nΔιατηρήστε την επιλεγμένη έκδοση του μοντέλου μαζί με το αίτημα. Η διεπαφή δημιουργίας του Tripo προσδιορίζει τη λειτουργία χωριστά από τη ρύθμιση της έκδοσης του μοντέλου, και το τεκμηριωμένο παράδειγμα δημιουργίας μοντέλου από κείμενο επιλέγει συγκεκριμένη έκδοση. Διατηρήστε την ακριβή έκδοση και τις παραμέτρους ελέγχου κατά τη σύγκριση στοιχείων, ώστε μια αλλαγή στην περιγραφή του αντικειμένου να μη συγχέεται με αλλαγή στη διαμόρφωση της δημιουργίας.\n\nΗ γεωμετρία και η εμφάνιση της επιφάνειας αποτελούν ξεχωριστές αποφάσεις παραγωγής. Η βασική ροή εργασίας του κατασκευαστή διακρίνει ένα μοντέλο χωρίς υφές από ένα αποτέλεσμα με υφές και υλικά για απόδοση με βάση τη φυσική. Επιλέξτε τη μορφή του στοιχείου που χρειάζεται το επόμενο βήμα και εξετάστε τόσο το πλέγμα όσο και τυχόν συνοδευτικά αρχεία υλικών. Μια εικόνα προεπισκόπησης βοηθά στον προσανατολισμό, ενώ το πραγματικό μοντέλο είναι το στοιχείο που απαιτείται για τη συναρμολόγηση της σκηνής και την περαιτέρω επεξεργασία.\n\nΕξετάστε το ολοκληρωμένο αντικείμενο από διάφορες γωνίες. Ελέγξτε το περίγραμμα, τον διαχωρισμό των μερών, τα λεπτά χαρακτηριστικά, τα ανοίγματα και τις επιφάνειες όπου συναντώνται τα μέρη. Για ένα στυλιζαρισμένο αντικείμενο σκηνής, συγκρίνετε τις αναλογίες με την περιγραφή του σχεδίου. Για ένα αντικείμενο που μοιάζει με προϊόν, ελέγξτε ποιες λεπτομέρειες αποδίδονται με γεωμετρία και ποιες εμφανίζονται μόνο στην επεξεργασία της επιφάνειας. Προσδιορίστε το χαρακτηριστικό που χρειάζεται αναθεώρηση πριν αλλάξετε την προτροπή ή την αναφορά.\n\nΗ δημιουργία εκτελείται ως ασύγχρονη εργασία. Διατηρήστε την ταυτότητα της αρχικής εργασίας σε όλη τη διάρκεια του ελέγχου της κατάστασής της και κρατήστε μαζί το ολοκληρωμένο μοντέλο, την προεπισκόπηση και τυχόν άλλα αρχεία που επιστρέφονται. Το τεκμηριωμένο αποτέλεσμα περιλαμβάνει πεδία εξόδου σχετικά με το μοντέλο και αποδοσμένες εικόνες. Αποθηκεύστε τα ίδια τα αρχεία για το επόμενο βήμα παραγωγής, αντί να βασίζεστε σε προσωρινό σύνδεσμο αποτελέσματος ή να αντιμετωπίζετε την προεπισκόπηση ως το ολοκληρωμένο παραδοτέο 3D.\n\nΕισαγάγετε το μοντέλο στον προβλεπόμενο επεξεργαστή ή στο περιβάλλον προβολής και εξετάστε εκεί τον προσανατολισμό, την κλίμακα, τα υλικά και τη γεωμετρία του. Ένα αντικείμενο σκηνής, μια κοντινή απόδοση και ένας χαρακτήρας έτοιμος για κίνηση έχουν διαφορετικές ανάγκες ολοκλήρωσης. Κρατήστε ένα αντίγραφο εργασίας για τις αλλαγές και διατηρήστε το αρχικό παραγόμενο στοιχείο μαζί με την περιγραφή και τις αναφορές του. Όταν απαιτείται άλλη λειτουργία, όπως εργασία στις υφές ή δημιουργία σκελετού, επιλέξτε τη συνειδητά και ελέγξτε το στοιχείο που προκύπτει ως ξεχωριστό στάδιο.",
  "editorialOverlay": {
    "copy_fields": null,
    "copy_sha256": null,
    "copy_source": null,
    "html_sha256": "c2ba6dca61e9adf2ac71d26fb026570551e3c5418b0e006436db3696226668dc",
    "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\">Tripo: 3D Generation</h2><button class=\"icon-btn\" type=\"button\" data-close-sheet aria-label=\"Κλείσιμο\">×</button></div><div class=\"idline\"><span>Tripo /</span><code>tripo3d</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|3d|/v1/3d/generations|tripo3d\">3D</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\">Το Tripo δημιουργεί ένα μοντέλο 3D από γραπτή περιγραφή ενός αντικειμένου. Οι ευρύτερες ροές εργασίας του κατασκευαστή διακρίνουν τη γεωμετρία, την εφαρμογή υφών και τη μεταγενέστερη επεξεργασία του μοντέλου· εξετάστε το ολοκληρωμένο πλέγμα από διάφορες οπτικές γωνίες και διατηρήστε τα πραγματικά αρχεία για τη σκηνή ή τον επεξεργαστή προορισμού.</p><dl class=\"card-io\" data-card-io><div><dt>Αποδεκτές είσοδοι</dt><dd>Κείμενο</dd></div><div><dt>Αποτελέσματα</dt><dd>model_3d · Εικόνες</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>Το Tripo δημιουργεί μοντέλα 3D από περιγραφή ή οπτική αναφορά. Οι ροές εργασίας του διαχωρίζουν τη δημιουργία ενός αντικειμένου από μεταγενέστερα βήματα, όπως η εφαρμογή υφών, η δημιουργία σκελετού και η μετατροπή. Ξεκινήστε προσδιορίζοντας το επιθυμητό στοιχείο και τη λειτουργία που το παράγει: ένα στατικό πλέγμα για μια σκηνή, ένα αντικείμενο με υφές για απόδοση ή ένα μοντέλο που θα προετοιμαστεί περαιτέρω σε επεξεργαστή 3D.</p><p>Για μια περιγραφή δημιουργίας μοντέλου από κείμενο, περιγράψτε το σχήμα του αντικειμένου και τα σημαντικά μέρη του. Ένα μικρό φανάρι μπορεί να προσδιοριστεί μέσω του σώματος, της λαβής, των ανοιγμάτων και των αναλογιών του· ένα πλάσμα μέσω του περιγράμματος, των άκρων και της στάσης του. Δηλώστε το υλικό ή το οπτικό ύφος όταν επηρεάζουν το αποτέλεσμα. Κρατήστε την περιγραφή εστιασμένη στο ίδιο το αντικείμενο, ώστε η παραγόμενη γεωμετρία να μπορεί να αξιολογηθεί ως προς ένα σαφές σχέδιο.</p><p>Για μια ροή εργασίας του κατασκευαστή που βασίζεται σε αναφορές, προετοιμάστε εικόνες που δείχνουν το περίγραμμα του θέματος και τα διακριτά χαρακτηριστικά του. Οι διαφορετικές όψεις πρέπει να περιγράφουν το ίδιο αντικείμενο με συνεπείς αναλογίες και εξαρτήματα. Μετά τη δημιουργία, ελέγξτε τα μέρη που είναι κρυμμένα στην αναφορά, επειδή μια πειστική εμπρόσθια όψη δεν αποδεικνύει ότι η πίσω ή η κάτω πλευρά και οι συνδέσεις μεταξύ των μερών αντιστοιχούν στο επιθυμητό σχέδιο.</p><p>Διατηρήστε την επιλεγμένη έκδοση του μοντέλου μαζί με το αίτημα. Η διεπαφή δημιουργίας του Tripo προσδιορίζει τη λειτουργία χωριστά από τη ρύθμιση της έκδοσης του μοντέλου, και το τεκμηριωμένο παράδειγμα δημιουργίας μοντέλου από κείμενο επιλέγει συγκεκριμένη έκδοση. Διατηρήστε την ακριβή έκδοση και τις παραμέτρους ελέγχου κατά τη σύγκριση στοιχείων, ώστε μια αλλαγή στην περιγραφή του αντικειμένου να μη συγχέεται με αλλαγή στη διαμόρφωση της δημιουργίας.</p><p>Η γεωμετρία και η εμφάνιση της επιφάνειας αποτελούν ξεχωριστές αποφάσεις παραγωγής. Η βασική ροή εργασίας του κατασκευαστή διακρίνει ένα μοντέλο χωρίς υφές από ένα αποτέλεσμα με υφές και υλικά για απόδοση με βάση τη φυσική. Επιλέξτε τη μορφή του στοιχείου που χρειάζεται το επόμενο βήμα και εξετάστε τόσο το πλέγμα όσο και τυχόν συνοδευτικά αρχεία υλικών. Μια εικόνα προεπισκόπησης βοηθά στον προσανατολισμό, ενώ το πραγματικό μοντέλο είναι το στοιχείο που απαιτείται για τη συναρμολόγηση της σκηνής και την περαιτέρω επεξεργασία.</p><p>Εξετάστε το ολοκληρωμένο αντικείμενο από διάφορες γωνίες. Ελέγξτε το περίγραμμα, τον διαχωρισμό των μερών, τα λεπτά χαρακτηριστικά, τα ανοίγματα και τις επιφάνειες όπου συναντώνται τα μέρη. Για ένα στυλιζαρισμένο αντικείμενο σκηνής, συγκρίνετε τις αναλογίες με την περιγραφή του σχεδίου. Για ένα αντικείμενο που μοιάζει με προϊόν, ελέγξτε ποιες λεπτομέρειες αποδίδονται με γεωμετρία και ποιες εμφανίζονται μόνο στην επεξεργασία της επιφάνειας. Προσδιορίστε το χαρακτηριστικό που χρειάζεται αναθεώρηση πριν αλλάξετε την προτροπή ή την αναφορά.</p><p>Η δημιουργία εκτελείται ως ασύγχρονη εργασία. Διατηρήστε την ταυτότητα της αρχικής εργασίας σε όλη τη διάρκεια του ελέγχου της κατάστασής της και κρατήστε μαζί το ολοκληρωμένο μοντέλο, την προεπισκόπηση και τυχόν άλλα αρχεία που επιστρέφονται. Το τεκμηριωμένο αποτέλεσμα περιλαμβάνει πεδία εξόδου σχετικά με το μοντέλο και αποδοσμένες εικόνες. Αποθηκεύστε τα ίδια τα αρχεία για το επόμενο βήμα παραγωγής, αντί να βασίζεστε σε προσωρινό σύνδεσμο αποτελέσματος ή να αντιμετωπίζετε την προεπισκόπηση ως το ολοκληρωμένο παραδοτέο 3D.</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 · 3D</b> <code>POST /v1/3d/generations</code></summary><dl class=\"method-capabilities\"><div><dt>Είσοδος</dt><dd><code>text</code></dd></div><div><dt>Έξοδος</dt><dd><code>model_3d</code>, <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>tripo3d</div><div>Συνθήκες: Χρησιμοποιήστε τον επιλογέα μοντέλου Ailoot.</div></td><td data-cell-label=\"Προεπιλογή\" data-default=\"unspecified\"><span class=\"card-cell-label\">Προεπιλογή</span>—</td></tr><tr><th data-cell-label=\"Πεδίο\" scope=\"row\"><span class=\"card-cell-label\">Πεδίο</span><code class=\"card-field-name\">type</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>text_to_model, image_to_model, multiview_to_model, texture_model, animate_prerigcheck, animate_rig, animate_retarget, stylize_model, convert_model</div><div>Συνθήκες: Το πλήρες παράδειγμα χρησιμοποιεί text_to_model· οι άλλοι τύποι εργασίας απαιτούν τις τεκμηριωμένες εισόδους που αντιστοιχούν στον τύπο τους.</div></td><td data-cell-label=\"Προεπιλογή\" data-default=\"unspecified\"><span class=\"card-cell-label\">Προεπιλογή</span>—</td></tr><tr><th data-cell-label=\"Πεδίο\" scope=\"row\"><span class=\"card-cell-label\">Πεδίο</span><code class=\"card-field-name\">model_version</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>v2.0-20240919, v1.4-20240625, v2.5-20250123, v3.0-20250812, Turbo-v1.0-20250506</div><div>Συνθήκες: Επιλέξτε μια ρητά τεκμηριωμένη έκδοση· αυτό το παράδειγμα χρησιμοποιεί την v3.0-20250812.</div></td><td data-cell-label=\"Προεπιλογή\" data-default=\"unspecified\"><span class=\"card-cell-label\">Προεπιλογή</span>—</td></tr><tr><th data-cell-label=\"Πεδίο\" scope=\"row\"><span class=\"card-cell-label\">Πεδίο</span><code class=\"card-field-name\">prompt</code></th><td data-cell-label=\"Τύπος\" data-field-type><span class=\"card-cell-label\">Τύπος</span><code>string</code></td><td data-cell-label=\"Απαίτηση\"><span class=\"card-cell-label\">Απαίτηση</span>Υποχρεωτικό</td><td data-cell-label=\"Τιμές και όρια\"><span class=\"card-cell-label\">Τιμές και όρια</span><div>Συνθήκες: Περιγράψτε το αντικείμενο που θα δημιουργηθεί.</div></td><td data-cell-label=\"Προεπιλογή\" data-default=\"unspecified\"><span class=\"card-cell-label\">Προεπιλογή</span>—</td></tr></tbody></table></div><details class=\"note-s\" data-method-contract><summary>Παράμετροι και κύκλος ζωής μεθόδου</summary><div class=\"tw\" data-card-table=\"contract\"><table><thead><tr><th>Παράμετρος</th><th>Σύμβαση</th></tr></thead><tbody><tr><th data-cell-label=\"Παράμετρος\" scope=\"row\"><span class=\"card-cell-label\">Παράμετρος</span><code>content_type</code></th><td data-cell-label=\"Σύμβαση\"><span class=\"card-cell-label\">Σύμβαση</span>application/json</td></tr><tr><th data-cell-label=\"Παράμετρος\" scope=\"row\"><span class=\"card-cell-label\">Παράμετρος</span><code>required</code></th><td data-cell-label=\"Σύμβαση\"><span class=\"card-cell-label\">Σύμβαση</span>model, type, model_version, prompt</td></tr><tr><th data-cell-label=\"Παράμετρος\" scope=\"row\"><span class=\"card-cell-label\">Παράμετρος</span><code>optional</code></th><td data-cell-label=\"Σύμβαση\"><span class=\"card-cell-label\">Σύμβαση</span></td></tr><tr><th data-cell-label=\"Παράμετρος\" scope=\"row\"><span class=\"card-cell-label\">Παράμετρος</span><code>material_types</code></th><td data-cell-label=\"Σύμβαση\"><span class=\"card-cell-label\">Σύμβαση</span>text</td></tr><tr><th data-cell-label=\"Παράμετρος\" scope=\"row\"><span class=\"card-cell-label\">Παράμετρος</span><code>conditions</code></th><td data-cell-label=\"Σύμβαση\"><span class=\"card-cell-label\">Σύμβαση</span>Χρησιμοποιήστε τον επιλογέα μοντέλου Ailoot., Το πλήρες παράδειγμα χρησιμοποιεί text_to_model· οι άλλοι τύποι εργασίας απαιτούν τις τεκμηριωμένες εισόδους που αντιστοιχούν στον τύπο τους., Επιλέξτε μια ρητά τεκμηριωμένη έκδοση· αυτό το παράδειγμα χρησιμοποιεί την v3.0-20250812., Περιγράψτε το αντικείμενο που θα δημιουργηθεί.</td></tr></tbody></table></div><p>Κύκλος ζωής: <code>submit_once_poll_original</code></p><p class=\"note-s\"><code>GET /v1/3d/generations/{request_id}</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>$1.35</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 · 3D</h4><div class=\"code-group\"><div class=\"cg-bar\"><div class=\"cg-tabs\" role=\"tablist\" aria-label=\"Παραλλαγές κώδικα\"><button class=\"cg-tab\" id=\"model-code-2793-tab-0\" role=\"tab\" type=\"button\" aria-controls=\"model-code-2793-panel-0\" aria-selected=\"true\" tabindex=\"0\">curl · δημιουργήστε μία φορά και διατηρήστε το αποδεικτικό</button><button class=\"cg-tab\" id=\"model-code-2793-tab-1\" role=\"tab\" type=\"button\" aria-controls=\"model-code-2793-panel-1\" aria-selected=\"false\" tabindex=\"-1\">Διαβάστε την αρχική εργασία</button><button class=\"cg-tab\" id=\"model-code-2793-tab-2\" role=\"tab\" type=\"button\" aria-controls=\"model-code-2793-panel-2\" aria-selected=\"false\" tabindex=\"-1\">Αποθηκεύστε κάθε ολοκληρωμένο ψηφιακό στοιχείο που σας ανήκει</button></div><div class=\"cg-tools\"><button class=\"cg-btn cg-copy\" type=\"button\" aria-label=\"Αντιγραφή κώδικα\"><svg class=\"cp\" viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.4\"><rect x=\"5.25\" y=\"5.25\" width=\"8.5\" height=\"8.5\" rx=\"1.75\"/><path d=\"M10.75 5.25V3.5a1.25 1.25 0 0 0-1.25-1.25H3.5A1.25 1.25 0 0 0 2.25 3.5v6a1.25 1.25 0 0 0 1.25 1.25h1.75\"/></svg><svg class=\"ok\" viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.4\"><path d=\"m3 8.5 3.25 3.25L13 5\"/></svg></button></div></div><div class=\"cg-body\"><div class=\"cg-pane\" id=\"model-code-2793-panel-0\" role=\"tabpanel\" aria-labelledby=\"model-code-2793-tab-0\"><pre data-lang=\"bash\"><code>set -eu\n: &quot;${AILOOT_API_KEY:?Set your Ailoot API key}&quot;\ncat &gt; request.json &lt;&lt;&#39;JSON&#39;\n{\n  &quot;model&quot;: &quot;tripo3d&quot;,\n  &quot;type&quot;: &quot;text_to_model&quot;,\n  &quot;prompt&quot;: &quot;a cute pig&quot;,\n  &quot;model_version&quot;: &quot;v3.0-20250812&quot;\n}\nJSON\ncurl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/3d/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\n# Create once; retain id, polling_url, original task identifiers and every header.\n</code></pre></div><div class=\"cg-pane\" id=\"model-code-2793-panel-1\" role=\"tabpanel\" aria-labelledby=\"model-code-2793-tab-1\" hidden><pre data-lang=\"bash\"><code>set -eu\n: &quot;${AILOOT_API_KEY:?Set your Ailoot API key}&quot;\nexport AILOOT_API_KEY\npython3 - &lt;&lt;&#39;PY_STATUS&#39;\nimport json,os,subprocess\nfrom pathlib import Path\nfrom urllib.parse import urljoin,urlsplit\nr=json.loads(Path(&quot;result.json&quot;).read_text())\nu=urljoin(&quot;https://api.ailoot.ai&quot;,r[&quot;polling_url&quot;])\np=urlsplit(u)\nif p.scheme!=&quot;https&quot; or p.netloc!=&quot;api.ailoot.ai&quot; or p.username or p.password:\n    raise SystemExit(&quot;Unexpected returned polling URL; preserve the response&quot;)\nsubprocess.run([&quot;curl&quot;,&quot;--fail-with-body&quot;,&quot;--silent&quot;,&quot;--show-error&quot;,u,&quot;-H&quot;,&quot;Authorization: Bearer &quot;+os.environ[&quot;AILOOT_API_KEY&quot;],&quot;-D&quot;,&quot;status-headers.txt&quot;,&quot;-o&quot;,&quot;status.json&quot;],check=True)\n# Read this same original polling_url again while pending.\n# Preserve unknown/result_pending_check; do not repeat creation.\nPY_STATUS\n</code></pre></div><div class=\"cg-pane\" id=\"model-code-2793-panel-2\" role=\"tabpanel\" aria-labelledby=\"model-code-2793-tab-2\" hidden><pre data-lang=\"bash\"><code>set -eu\n: &quot;${AILOOT_API_KEY:?Set your Ailoot API key}&quot;\nexport AILOOT_API_KEY\npython3 - &lt;&lt;&#39;PY_ASSETS&#39;\nimport json,os,subprocess\nfrom pathlib import Path\nfrom urllib.parse import urljoin,urlsplit\nr=json.loads(Path(&quot;status.json&quot;).read_text())\nroles={}\ndef visit(v,path=&quot;&quot;):\n    if isinstance(v,dict):\n        for k,x in v.items(): visit(x,path+&quot;/&quot;+k)\n    elif isinstance(v,list):\n        for i,x in enumerate(v): visit(x,path+&quot;/&quot;+str(i))\n    elif isinstance(v,str):\n        u=urljoin(&quot;https://api.ailoot.ai&quot;,v); p=urlsplit(u)\n        if p.scheme==&quot;https&quot; and p.netloc==&quot;api.ailoot.ai&quot; and not p.username and not p.password and p.path.startswith(&quot;/v1/media/assets/&quot;) and p.path.endswith(&quot;/content&quot;):\n            roles.setdefault(u,[]).append(path)\nvisit(r)\nif not roles: raise SystemExit(&quot;No completed owned assets; retain the original status&quot;)\nmanifest=[]\nfor i,(u,paths) in enumerate(roles.items()):\n    target=Path(f&quot;asset-{i}.bin&quot;)\n    subprocess.run([&quot;curl&quot;,&quot;--fail-with-body&quot;,&quot;--silent&quot;,&quot;--show-error&quot;,u,&quot;-H&quot;,&quot;Authorization: Bearer &quot;+os.environ[&quot;AILOOT_API_KEY&quot;],&quot;-o&quot;,str(target)],check=True)\n    raw=target.read_bytes()\n    if not raw: raise SystemExit(&quot;Empty asset; retain original status and metadata&quot;)\n    ext=&quot;glb&quot; if raw[:4]==b&quot;glTF&quot; else &quot;png&quot; if raw[:8]==b&quot;\\x89PNG\\r\\n\\x1a\\n&quot; else &quot;jpg&quot; if raw[:3]==b&quot;\\xff\\xd8\\xff&quot; else &quot;webp&quot; if raw[:4]==b&quot;RIFF&quot; and raw[8:12]==b&quot;WEBP&quot; else &quot;mp4&quot; if raw[4:8]==b&quot;ftyp&quot; else &quot;bin&quot;\n    name=f&quot;asset-{i}.{ext}&quot;\n    if target.name!=name: target.rename(name)\n    manifest.append({&quot;file&quot;:name,&quot;response_paths&quot;:paths,&quot;bytes&quot;:len(raw)})\nPath(&quot;asset-manifest.json&quot;).write_text(json.dumps(manifest,indent=2))\nprint(&quot;Saved&quot;,len(manifest),&quot;unique owned assets; every response role retained&quot;)\nPY_ASSETS\n</code></pre></div></div></div></section><section class=\"card-section\" data-card-section=\"results\"><h3 tabindex=\"-1\">Λήψη και αποθήκευση αποτελεσμάτων</h3><h4>Ailoot Ultra · 3D</h4><p class=\"note-s\">Κατεβάστε κάθε εικόνα που επιστρέφεται ή αποθηκεύστε το περιεχόμενο Base64</p><ul class=\"card-result-paths\"><li><code>GET /v1/3d/generations/{request_id}</code></li><li><code>GET /v1/media/assets</code></li><li><code>GET /v1/media/assets/{asset_id}</code></li></ul><div class=\"card-result-process\" data-all-results><h5>Διατηρήστε όλα τα ολοκληρωμένα αποτελέσματα</h5><p class=\"note-s\">Διατηρήστε κάθε πλήρη απάντηση, αρχείο και τμήμα περιεχομένου που επιστρέφεται.</p><p class=\"note-s\">Διατηρήστε ολόκληρη την απόκριση και τις κεφαλίδες, τα αρχικά αναγνωριστικά, κάθε πραγματική έξοδο και όλα τα πεδία χρήσης και λογιστικής καταγραφής. Αποθηκεύστε κάθε μοναδικό αρχείο πολυμέσων που σας ανήκει και διατηρήστε κάθε ρόλο που παραπέμπει σε αυτό.</p></div><div class=\"card-result-process\" data-unknown-recovery><h5>Αν χρειάζεται έλεγχος της αρχικής απάντησης</h5><p class=\"note-s\">Διατηρήστε το δημόσιο id εργασίας ή λειτουργίας που επιστρέφεται και όλες τις κεφαλίδες. Διαβάστε μόνο την αρχική εργασία· τα unknown ή result_pending_check δεν επιτρέπουν άλλη δημιουργία.</p></div><details class=\"card-about\" data-output-fields><summary>Πεδία απάντησης</summary><div class=\"tw\" data-card-table=\"output\"><table><thead><tr><th>Πεδίο</th><th>Τύπος</th></tr></thead><tbody><tr><th data-cell-label=\"Πεδίο\" scope=\"row\"><span class=\"card-cell-label\">Πεδίο</span><code class=\"card-field-name\">id</code></th><td data-cell-label=\"Τύπος\" data-field-type><span class=\"card-cell-label\">Τύπος</span>string</td></tr><tr><th data-cell-label=\"Πεδίο\" scope=\"row\"><span class=\"card-cell-label\">Πεδίο</span><code class=\"card-field-name\">polling_url</code></th><td data-cell-label=\"Τύπος\" data-field-type><span class=\"card-cell-label\">Τύπος</span>string</td></tr><tr><th data-cell-label=\"Πεδίο\" scope=\"row\"><span class=\"card-cell-label\">Πεδίο</span><code class=\"card-field-name\">provider_task_id</code></th><td data-cell-label=\"Τύπος\" data-field-type><span class=\"card-cell-label\">Τύπος</span>string</td></tr><tr><th data-cell-label=\"Πεδίο\" scope=\"row\"><span class=\"card-cell-label\">Πεδίο</span><code class=\"card-field-name\">code</code></th><td data-cell-label=\"Τύπος\" data-field-type><span class=\"card-cell-label\">Τύπος</span>integer</td></tr><tr><th data-cell-label=\"Πεδίο\" scope=\"row\"><span class=\"card-cell-label\">Πεδίο</span><code class=\"card-field-name\">data.task_id</code></th><td data-cell-label=\"Τύπος\" data-field-type><span class=\"card-cell-label\">Τύπος</span>string</td></tr><tr><th data-cell-label=\"Πεδίο\" scope=\"row\"><span class=\"card-cell-label\">Πεδίο</span><code class=\"card-field-name\">data.status</code></th><td data-cell-label=\"Τύπος\" data-field-type><span class=\"card-cell-label\">Τύπος</span>string</td></tr><tr><th data-cell-label=\"Πεδίο\" scope=\"row\"><span class=\"card-cell-label\">Πεδίο</span><code class=\"card-field-name\">data.progress</code></th><td data-cell-label=\"Τύπος\" data-field-type><span class=\"card-cell-label\">Τύπος</span>integer</td></tr><tr><th data-cell-label=\"Πεδίο\" scope=\"row\"><span class=\"card-cell-label\">Πεδίο</span><code class=\"card-field-name\">data.output.*</code></th><td data-cell-label=\"Τύπος\" data-field-type><span class=\"card-cell-label\">Τύπος</span>string</td></tr><tr><th data-cell-label=\"Πεδίο\" scope=\"row\"><span class=\"card-cell-label\">Πεδίο</span><code class=\"card-field-name\">data.result.*.url</code></th><td data-cell-label=\"Τύπος\" data-field-type><span class=\"card-cell-label\">Τύπος</span>string</td></tr><tr><th data-cell-label=\"Πεδίο\" scope=\"row\"><span class=\"card-cell-label\">Πεδίο</span><code class=\"card-field-name\">data.result.*.type</code></th><td data-cell-label=\"Τύπος\" data-field-type><span class=\"card-cell-label\">Τύπος</span>string</td></tr><tr><th data-cell-label=\"Πεδίο\" scope=\"row\"><span class=\"card-cell-label\">Πεδίο</span><code class=\"card-field-name\">data.thumbnail</code></th><td data-cell-label=\"Τύπος\" data-field-type><span class=\"card-cell-label\">Τύπος</span>string</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=tripo3d&amp;route=Ultra&amp;caller=tripo3d&amp;fmt=3d\"><code>tripo3d</code></a></span></p><h4>Εναλλακτικές διαδρομές μεθόδων</h4><p class=\"note-s\">Χρησιμοποιήστε τις διαδρομές μεθόδων που εμφανίζονται παραπάνω.</p><h4>Σχετικά ID μοντέλων</h4><p class=\"note-s\"><a href=\"#m=tripo3d&amp;route=Ultra&amp;caller=tripo3d&amp;fmt=3d\"><code>tripo3d</code></a></p></section></div>",
      "method_identity": {
        "effective_request_model_id": "tripo3d",
        "fmt": "3d",
        "http": "POST",
        "path": "/v1/3d/generations",
        "request_model_id": "tripo3d",
        "route_label": "Ultra"
      },
      "method_key": "Ultra|3d|/v1/3d/generations|tripo3d",
      "ordinal": 0,
      "rawMethod": {
        "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, original identifiers, every actual output and all usage/accounting fields. Save each unique owned asset and retain every role pointing to it.",
            "lifecycle": {
              "assets": [
                {
                  "http": "GET",
                  "path": "/v1/media/assets"
                },
                {
                  "http": "GET",
                  "path": "/v1/media/assets/{asset_id}"
                }
              ],
              "cancel_endpoint": null,
              "completed_states": [
                "success"
              ],
              "content": [],
              "create": {
                "http": "POST",
                "path": "/v1/3d/generations"
              },
              "failed_states": [
                "failed",
                "banned",
                "expired",
                "cancelled"
              ],
              "id_source": "Use returned polling_url and id. Keep provider_task_id and X-Ailoot-Task-Id as separate original identifiers.",
              "mode": "submit_once_poll_original",
              "owned_content": {
                "http": "GET",
                "path": "/v1/media/assets/{asset_id}/content",
                "url_source": "Use the exact returned signed URL; never construct a token."
              },
              "pending_states": [
                "queued",
                "running"
              ],
              "state_field": "data.status",
              "status": [
                {
                  "http": "GET",
                  "path": "/v1/3d/generations/{request_id}"
                }
              ],
              "unknown": "Διατηρήστε το δημόσιο id εργασίας ή λειτουργίας που επιστρέφεται και όλες τις κεφαλίδες. Διαβάστε μόνο την αρχική εργασία· τα unknown ή result_pending_check δεν επιτρέπουν άλλη δημιουργία.",
              "unknown_no_replay": true
            },
            "outputs": {
              "all_results": "Διατηρήστε ολόκληρη την απόκριση και τις κεφαλίδες, τα αρχικά αναγνωριστικά, κάθε πραγματική έξοδο και όλα τα πεδία χρήσης και λογιστικής καταγραφής. Αποθηκεύστε κάθε μοναδικό αρχείο πολυμέσων που σας ανήκει και διατηρήστε κάθε ρόλο που παραπέμπει σε αυτό.",
              "every_actual_output": true,
              "family": "3d",
              "fields": [
                {
                  "name": "id",
                  "type": "string"
                },
                {
                  "name": "polling_url",
                  "type": "string"
                },
                {
                  "name": "provider_task_id",
                  "type": "string"
                },
                {
                  "name": "code",
                  "type": "integer"
                },
                {
                  "name": "data.task_id",
                  "type": "string"
                },
                {
                  "name": "data.status",
                  "type": "string"
                },
                {
                  "name": "data.progress",
                  "type": "integer"
                },
                {
                  "name": "data.output.*",
                  "type": "string"
                },
                {
                  "name": "data.result.*.url",
                  "type": "string"
                },
                {
                  "name": "data.result.*.type",
                  "type": "string"
                },
                {
                  "name": "data.thumbnail",
                  "type": "string"
                }
              ],
              "formats": "Inspect actual asset bytes and preserve declared metadata; preview type labels do not determine file extensions.",
              "maximum_outputs": null
            },
            "parameters": [
              {
                "conditions": "Χρησιμοποιήστε τον επιλογέα μοντέλου Ailoot.",
                "default_known": false,
                "enum": [
                  "tripo3d"
                ],
                "enum_known": true,
                "maximum_length": null,
                "name": "model",
                "required": true,
                "type": "string"
              },
              {
                "conditions": "Το πλήρες παράδειγμα χρησιμοποιεί text_to_model· οι άλλοι τύποι εργασίας απαιτούν τις τεκμηριωμένες εισόδους που αντιστοιχούν στον τύπο τους.",
                "default_known": false,
                "enum": [
                  "text_to_model",
                  "image_to_model",
                  "multiview_to_model",
                  "texture_model",
                  "animate_prerigcheck",
                  "animate_rig",
                  "animate_retarget",
                  "stylize_model",
                  "convert_model"
                ],
                "enum_known": true,
                "maximum_length": null,
                "name": "type",
                "required": true,
                "type": "string"
              },
              {
                "conditions": "Επιλέξτε μια ρητά τεκμηριωμένη έκδοση· αυτό το παράδειγμα χρησιμοποιεί την v3.0-20250812.",
                "default_known": false,
                "enum": [
                  "v2.0-20240919",
                  "v1.4-20240625",
                  "v2.5-20250123",
                  "v3.0-20250812",
                  "Turbo-v1.0-20250506"
                ],
                "enum_known": true,
                "maximum_length": null,
                "name": "model_version",
                "required": true,
                "type": "string"
              },
              {
                "conditions": "Περιγράψτε το αντικείμενο που θα δημιουργηθεί.",
                "default_known": false,
                "enum_known": false,
                "maximum_length": null,
                "name": "prompt",
                "required": true,
                "type": "string"
              }
            ],
            "request_schema": {
              "additionalProperties": true,
              "properties": {
                "model": {
                  "enum": [
                    "tripo3d"
                  ],
                  "type": "string"
                },
                "model_version": {
                  "enum": [
                    "v2.0-20240919",
                    "v1.4-20240625",
                    "v2.5-20250123",
                    "v3.0-20250812",
                    "Turbo-v1.0-20250506"
                  ],
                  "type": "string"
                },
                "prompt": {
                  "type": "string"
                },
                "type": {
                  "enum": [
                    "text_to_model",
                    "image_to_model",
                    "multiview_to_model",
                    "texture_model",
                    "animate_prerigcheck",
                    "animate_rig",
                    "animate_retarget",
                    "stylize_model",
                    "convert_model"
                  ],
                  "type": "string"
                }
              },
              "required": [
                "model",
                "type",
                "model_version",
                "prompt"
              ],
              "type": "object"
            },
            "schema_template": {
              "actual_file_preparation_required": false,
              "body": {
                "model": "tripo3d",
                "model_version": "v3.0-20250812",
                "prompt": "a cute pig",
                "type": "text_to_model"
              },
              "content_type": "application/json"
            }
          },
          "input": {
            "conditions": [
              "Χρησιμοποιήστε τον επιλογέα μοντέλου Ailoot.",
              "Το πλήρες παράδειγμα χρησιμοποιεί text_to_model· οι άλλοι τύποι εργασίας απαιτούν τις τεκμηριωμένες εισόδους που αντιστοιχούν στον τύπο τους.",
              "Επιλέξτε μια ρητά τεκμηριωμένη έκδοση· αυτό το παράδειγμα χρησιμοποιεί την v3.0-20250812.",
              "Περιγράψτε το αντικείμενο που θα δημιουργηθεί."
            ],
            "content_type": "application/json",
            "material_types": [
              "text"
            ],
            "optional": [],
            "required": [
              "model",
              "type",
              "model_version",
              "prompt"
            ]
          },
          "lifecycle": {
            "assets": [
              {
                "http": "GET",
                "path": "/v1/media/assets"
              },
              {
                "http": "GET",
                "path": "/v1/media/assets/{asset_id}"
              }
            ],
            "cancel_endpoint": null,
            "completed_states": [
              "success"
            ],
            "content": [],
            "create": {
              "http": "POST",
              "path": "/v1/3d/generations"
            },
            "failed_states": [
              "failed",
              "banned",
              "expired",
              "cancelled"
            ],
            "id_source": "Use returned polling_url and id. Keep provider_task_id and X-Ailoot-Task-Id as separate original identifiers.",
            "mode": "submit_once_poll_original",
            "owned_content": {
              "http": "GET",
              "path": "/v1/media/assets/{asset_id}/content",
              "url_source": "Use the exact returned signed URL; never construct a token."
            },
            "pending_states": [
              "queued",
              "running"
            ],
            "state_field": "data.status",
            "status": [
              {
                "http": "GET",
                "path": "/v1/3d/generations/{request_id}"
              }
            ],
            "unknown": "Keep the returned public task or operation id and all headers. Read only the original task; unknown or result_pending_check does not authorize another creation.",
            "unknown_no_replay": true
          },
          "method": {
            "http": "POST",
            "path": "/v1/3d/generations"
          },
          "method_aliases": [],
          "output": {
            "all_results": "Retain the complete response and headers, original identifiers, every actual output and all usage/accounting fields. Save each unique owned asset and retain every role pointing to it.",
            "every_actual_output": true,
            "family": "3d",
            "fields": [
              {
                "name": "id",
                "type": "string"
              },
              {
                "name": "polling_url",
                "type": "string"
              },
              {
                "name": "provider_task_id",
                "type": "string"
              },
              {
                "name": "code",
                "type": "integer"
              },
              {
                "name": "data.task_id",
                "type": "string"
              },
              {
                "name": "data.status",
                "type": "string"
              },
              {
                "name": "data.progress",
                "type": "integer"
              },
              {
                "name": "data.output.*",
                "type": "string"
              },
              {
                "name": "data.result.*.url",
                "type": "string"
              },
              {
                "name": "data.result.*.type",
                "type": "string"
              },
              {
                "name": "data.thumbnail",
                "type": "string"
              }
            ],
            "formats": "Inspect actual asset bytes and preserve declared metadata; preview type labels do not determine file extensions.",
            "maximum_outputs": null
          }
        },
        "ctx": null,
        "declared_pricing_profiles": [
          {
            "dimensions": {
              "regime": "base"
            },
            "label": "Base token rates",
            "units": [
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "input_price",
                "label": "Input tokens",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "output_price",
                "label": "Output tokens",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "output_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "output_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "cache_read_price",
                "label": "Cache read",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "cached_input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "cached_input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "cache_write_price",
                "label": "Cache write",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "generic_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "generic_cache_creation_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "cache_write_1h_price",
                "label": "Cache write, 1 hour",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "one_hour_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "one_hour_cache_creation_token"
              }
            ]
          },
          {
            "basis": "Αυτή η εκτίμηση δεν αποτελεί πρόσθετη χρέωση ούτε σταθερή τιμή για την ολοκληρωμένη παραγωγή.",
            "dimensions": {
              "forecast_quantity": "one generation estimate"
            },
            "label": "Εκτιμώμενο κόστος δημιουργίας",
            "units": [
              {
                "amount": "1.35",
                "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": "1.35",
                "native_quantity": 1,
                "public_unit_label": "estimate before generation",
                "quantity": 1,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "request_estimate"
              }
            ]
          }
        ],
        "examples": [
          {
            "code": "set -eu\n: \"${AILOOT_API_KEY:?Set your Ailoot API key}\"\ncat > request.json <<'JSON'\n{\n  \"model\": \"tripo3d\",\n  \"type\": \"text_to_model\",\n  \"prompt\": \"a cute pig\",\n  \"model_version\": \"v3.0-20250812\"\n}\nJSON\ncurl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/3d/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\n# Create once; retain id, polling_url, original task identifiers and every header.\n",
            "label": "curl · create once and retain receipt",
            "language": "bash"
          },
          {
            "code": "set -eu\n: \"${AILOOT_API_KEY:?Set your Ailoot API key}\"\nexport AILOOT_API_KEY\npython3 - <<'PY_STATUS'\nimport json,os,subprocess\nfrom pathlib import Path\nfrom urllib.parse import urljoin,urlsplit\nr=json.loads(Path(\"result.json\").read_text())\nu=urljoin(\"https://api.ailoot.ai\",r[\"polling_url\"])\np=urlsplit(u)\nif p.scheme!=\"https\" or p.netloc!=\"api.ailoot.ai\" or p.username or p.password:\n    raise SystemExit(\"Unexpected returned polling URL; preserve the response\")\nsubprocess.run([\"curl\",\"--fail-with-body\",\"--silent\",\"--show-error\",u,\"-H\",\"Authorization: Bearer \"+os.environ[\"AILOOT_API_KEY\"],\"-D\",\"status-headers.txt\",\"-o\",\"status.json\"],check=True)\n# Read this same original polling_url again while pending.\n# Preserve unknown/result_pending_check; do not repeat creation.\nPY_STATUS\n",
            "label": "Read the original task",
            "language": "bash"
          },
          {
            "code": "set -eu\n: \"${AILOOT_API_KEY:?Set your Ailoot API key}\"\nexport AILOOT_API_KEY\npython3 - <<'PY_ASSETS'\nimport json,os,subprocess\nfrom pathlib import Path\nfrom urllib.parse import urljoin,urlsplit\nr=json.loads(Path(\"status.json\").read_text())\nroles={}\ndef visit(v,path=\"\"):\n    if isinstance(v,dict):\n        for k,x in v.items(): visit(x,path+\"/\"+k)\n    elif isinstance(v,list):\n        for i,x in enumerate(v): visit(x,path+\"/\"+str(i))\n    elif isinstance(v,str):\n        u=urljoin(\"https://api.ailoot.ai\",v); p=urlsplit(u)\n        if p.scheme==\"https\" and p.netloc==\"api.ailoot.ai\" and not p.username and not p.password and p.path.startswith(\"/v1/media/assets/\") and p.path.endswith(\"/content\"):\n            roles.setdefault(u,[]).append(path)\nvisit(r)\nif not roles: raise SystemExit(\"No completed owned assets; retain the original status\")\nmanifest=[]\nfor i,(u,paths) in enumerate(roles.items()):\n    target=Path(f\"asset-{i}.bin\")\n    subprocess.run([\"curl\",\"--fail-with-body\",\"--silent\",\"--show-error\",u,\"-H\",\"Authorization: Bearer \"+os.environ[\"AILOOT_API_KEY\"],\"-o\",str(target)],check=True)\n    raw=target.read_bytes()\n    if not raw: raise SystemExit(\"Empty asset; retain original status and metadata\")\n    ext=\"glb\" if raw[:4]==b\"glTF\" else \"png\" if raw[:8]==b\"\\x89PNG\\r\\n\\x1a\\n\" else \"jpg\" if raw[:3]==b\"\\xff\\xd8\\xff\" else \"webp\" if raw[:4]==b\"RIFF\" and raw[8:12]==b\"WEBP\" else \"mp4\" if raw[4:8]==b\"ftyp\" else \"bin\"\n    name=f\"asset-{i}.{ext}\"\n    if target.name!=name: target.rename(name)\n    manifest.append({\"file\":name,\"response_paths\":paths,\"bytes\":len(raw)})\nPath(\"asset-manifest.json\").write_text(json.dumps(manifest,indent=2))\nprint(\"Saved\",len(manifest),\"unique owned assets; every response role retained\")\nPY_ASSETS\n",
            "label": "Save every completed owned asset",
            "language": "bash"
          }
        ],
        "family": "openai",
        "fast_multiplier": null,
        "flex_multiplier": null,
        "fmt": "3d",
        "http": "POST",
        "in": null,
        "input": [
          "text"
        ],
        "label": "3D",
        "max_out": null,
        "max_reasoning_effort_multiplier": null,
        "out": null,
        "output": [
          "model_3d",
          "image"
        ],
        "path": "/v1/3d/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": "1.35",
                "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": "1.35",
                "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": "tripo3d",
        "route_label": "Ultra",
        "status_reads": [
          "GET /v1/3d/generations/{request_id}"
        ],
        "tiers": [],
        "units": [
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": false,
            "estimate_only": true,
            "key": "input_price",
            "label": "Input tokens",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "input_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "input_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": false,
            "estimate_only": true,
            "key": "output_price",
            "label": "Output tokens",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "output_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "out",
            "unit": "output_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": false,
            "estimate_only": true,
            "key": "cache_read_price",
            "label": "Cache read",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "cached_input_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "cached_input_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": false,
            "estimate_only": true,
            "key": "cache_write_price",
            "label": "Cache write",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "generic_cache_creation_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "generic_cache_creation_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": false,
            "estimate_only": true,
            "key": "cache_write_1h_price",
            "label": "Cache write, 1 hour",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "one_hour_cache_creation_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "one_hour_cache_creation_token"
          },
          {
            "amount": "1.35",
            "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": "1.35",
            "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": "tripo3d",
  "nativeProvenance": {
    "input_facts_canonical_sha256": "1e9ad3e5ba0c37cd16af483338294235b68e6a5772d0f5eaf2b550d865c0113e",
    "input_html_sha256": "d7de95e9256980b3209034b902233294935dd62195798ba2e5096eaa324b5762",
    "private_audit_sha256": "be0d0ee9e62cbce487c34ec970134c00ce72104b77ee9a031c841d6facaed03b",
    "role": "historical-normalized-input-audit-hashes",
    "schema": "ailoot-native-model-provenance-v2"
  },
  "page": {
    "canonical": "https://ailoot.ai/models/el/tripo3d/",
    "description": "Το Tripo δημιουργεί ένα μοντέλο 3D από γραπτή περιγραφή ενός αντικειμένου. Οι ευρύτερες ροές εργασίας του κατασκευαστή διακρίνουν τη γεωμετρία, την εφαρμογή υφών και τη μεταγενέστερη επεξεργασία του μοντέλου· εξετάστε το ολοκληρωμένο πλέγμα από διάφορες οπτικές γωνίες και διατηρήστε τα πραγματικά αρχεία για τη σκηνή ή τον επεξεργαστή προορισμού.",
    "locale": "el",
    "md_url": "https://ailoot.ai/models/el/tripo3d/index.md",
    "title": "Tripo: 3D Generation — Ailoot",
    "url": "https://ailoot.ai/models/el/tripo3d/"
  },
  "rawModel": {
    "about": "Το Tripo δημιουργεί μοντέλα 3D από περιγραφή ή οπτική αναφορά. Οι ροές εργασίας του διαχωρίζουν τη δημιουργία ενός αντικειμένου από μεταγενέστερα βήματα, όπως η εφαρμογή υφών, η δημιουργία σκελετού και η μετατροπή. Ξεκινήστε προσδιορίζοντας το επιθυμητό στοιχείο και τη λειτουργία που το παράγει: ένα στατικό πλέγμα για μια σκηνή, ένα αντικείμενο με υφές για απόδοση ή ένα μοντέλο που θα προετοιμαστεί περαιτέρω σε επεξεργαστή 3D.\n\nΓια μια περιγραφή δημιουργίας μοντέλου από κείμενο, περιγράψτε το σχήμα του αντικειμένου και τα σημαντικά μέρη του. Ένα μικρό φανάρι μπορεί να προσδιοριστεί μέσω του σώματος, της λαβής, των ανοιγμάτων και των αναλογιών του· ένα πλάσμα μέσω του περιγράμματος, των άκρων και της στάσης του. Δηλώστε το υλικό ή το οπτικό ύφος όταν επηρεάζουν το αποτέλεσμα. Κρατήστε την περιγραφή εστιασμένη στο ίδιο το αντικείμενο, ώστε η παραγόμενη γεωμετρία να μπορεί να αξιολογηθεί ως προς ένα σαφές σχέδιο.\n\nΓια μια ροή εργασίας του κατασκευαστή που βασίζεται σε αναφορές, προετοιμάστε εικόνες που δείχνουν το περίγραμμα του θέματος και τα διακριτά χαρακτηριστικά του. Οι διαφορετικές όψεις πρέπει να περιγράφουν το ίδιο αντικείμενο με συνεπείς αναλογίες και εξαρτήματα. Μετά τη δημιουργία, ελέγξτε τα μέρη που είναι κρυμμένα στην αναφορά, επειδή μια πειστική εμπρόσθια όψη δεν αποδεικνύει ότι η πίσω ή η κάτω πλευρά και οι συνδέσεις μεταξύ των μερών αντιστοιχούν στο επιθυμητό σχέδιο.\n\nΔιατηρήστε την επιλεγμένη έκδοση του μοντέλου μαζί με το αίτημα. Η διεπαφή δημιουργίας του Tripo προσδιορίζει τη λειτουργία χωριστά από τη ρύθμιση της έκδοσης του μοντέλου, και το τεκμηριωμένο παράδειγμα δημιουργίας μοντέλου από κείμενο επιλέγει συγκεκριμένη έκδοση. Διατηρήστε την ακριβή έκδοση και τις παραμέτρους ελέγχου κατά τη σύγκριση στοιχείων, ώστε μια αλλαγή στην περιγραφή του αντικειμένου να μη συγχέεται με αλλαγή στη διαμόρφωση της δημιουργίας.\n\nΗ γεωμετρία και η εμφάνιση της επιφάνειας αποτελούν ξεχωριστές αποφάσεις παραγωγής. Η βασική ροή εργασίας του κατασκευαστή διακρίνει ένα μοντέλο χωρίς υφές από ένα αποτέλεσμα με υφές και υλικά για απόδοση με βάση τη φυσική. Επιλέξτε τη μορφή του στοιχείου που χρειάζεται το επόμενο βήμα και εξετάστε τόσο το πλέγμα όσο και τυχόν συνοδευτικά αρχεία υλικών. Μια εικόνα προεπισκόπησης βοηθά στον προσανατολισμό, ενώ το πραγματικό μοντέλο είναι το στοιχείο που απαιτείται για τη συναρμολόγηση της σκηνής και την περαιτέρω επεξεργασία.\n\nΕξετάστε το ολοκληρωμένο αντικείμενο από διάφορες γωνίες. Ελέγξτε το περίγραμμα, τον διαχωρισμό των μερών, τα λεπτά χαρακτηριστικά, τα ανοίγματα και τις επιφάνειες όπου συναντώνται τα μέρη. Για ένα στυλιζαρισμένο αντικείμενο σκηνής, συγκρίνετε τις αναλογίες με την περιγραφή του σχεδίου. Για ένα αντικείμενο που μοιάζει με προϊόν, ελέγξτε ποιες λεπτομέρειες αποδίδονται με γεωμετρία και ποιες εμφανίζονται μόνο στην επεξεργασία της επιφάνειας. Προσδιορίστε το χαρακτηριστικό που χρειάζεται αναθεώρηση πριν αλλάξετε την προτροπή ή την αναφορά.\n\nΗ δημιουργία εκτελείται ως ασύγχρονη εργασία. Διατηρήστε την ταυτότητα της αρχικής εργασίας σε όλη τη διάρκεια του ελέγχου της κατάστασής της και κρατήστε μαζί το ολοκληρωμένο μοντέλο, την προεπισκόπηση και τυχόν άλλα αρχεία που επιστρέφονται. Το τεκμηριωμένο αποτέλεσμα περιλαμβάνει πεδία εξόδου σχετικά με το μοντέλο και αποδοσμένες εικόνες. Αποθηκεύστε τα ίδια τα αρχεία για το επόμενο βήμα παραγωγής, αντί να βασίζεστε σε προσωρινό σύνδεσμο αποτελέσματος ή να αντιμετωπίζετε την προεπισκόπηση ως το ολοκληρωμένο παραδοτέο 3D.\n\nΕισαγάγετε το μοντέλο στον προβλεπόμενο επεξεργαστή ή στο περιβάλλον προβολής και εξετάστε εκεί τον προσανατολισμό, την κλίμακα, τα υλικά και τη γεωμετρία του. Ένα αντικείμενο σκηνής, μια κοντινή απόδοση και ένας χαρακτήρας έτοιμος για κίνηση έχουν διαφορετικές ανάγκες ολοκλήρωσης. Κρατήστε ένα αντίγραφο εργασίας για τις αλλαγές και διατηρήστε το αρχικό παραγόμενο στοιχείο μαζί με την περιγραφή και τις αναφορές του. Όταν απαιτείται άλλη λειτουργία, όπως εργασία στις υφές ή δημιουργία σκελετού, επιλέξτε τη συνειδητά και ελέγξτε το στοιχείο που προκύπτει ως ξεχωριστό στάδιο.",
    "about_sha256": "3d88be548916d6dfe1ba3f7f45529658d642c81e978ab85ab1e500c4038154fc",
    "alias_of": null,
    "aliases": [],
    "author": "Tripo",
    "capabilities": {
      "context_length": 0,
      "manufacturer_input": [
        "text",
        "image"
      ],
      "manufacturer_output": [
        "3d"
      ]
    },
    "card_routes": [
      {
        "label": "Ultra",
        "rates": [
          {
            "amount": "1.35",
            "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": "1.35",
            "native_quantity": 1,
            "public_unit_label": "estimate before generation",
            "quantity": 1,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "out",
            "unit": "request_estimate"
          }
        ],
        "summary": "Πλήρης τιμολόγηση της διαμόρφωσης στις λεπτομέρειες."
      }
    ],
    "ctx": null,
    "display_name": "Tripo: 3D Generation",
    "formats": [
      "3d"
    ],
    "id": "tripo3d",
    "input": [
      "text"
    ],
    "kind": "3d",
    "locale": "en",
    "max_out": null,
    "methods": [
      {
        "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, original identifiers, every actual output and all usage/accounting fields. Save each unique owned asset and retain every role pointing to it.",
            "lifecycle": {
              "assets": [
                {
                  "http": "GET",
                  "path": "/v1/media/assets"
                },
                {
                  "http": "GET",
                  "path": "/v1/media/assets/{asset_id}"
                }
              ],
              "cancel_endpoint": null,
              "completed_states": [
                "success"
              ],
              "content": [],
              "create": {
                "http": "POST",
                "path": "/v1/3d/generations"
              },
              "failed_states": [
                "failed",
                "banned",
                "expired",
                "cancelled"
              ],
              "id_source": "Use returned polling_url and id. Keep provider_task_id and X-Ailoot-Task-Id as separate original identifiers.",
              "mode": "submit_once_poll_original",
              "owned_content": {
                "http": "GET",
                "path": "/v1/media/assets/{asset_id}/content",
                "url_source": "Use the exact returned signed URL; never construct a token."
              },
              "pending_states": [
                "queued",
                "running"
              ],
              "state_field": "data.status",
              "status": [
                {
                  "http": "GET",
                  "path": "/v1/3d/generations/{request_id}"
                }
              ],
              "unknown": "Διατηρήστε το δημόσιο id εργασίας ή λειτουργίας που επιστρέφεται και όλες τις κεφαλίδες. Διαβάστε μόνο την αρχική εργασία· τα unknown ή result_pending_check δεν επιτρέπουν άλλη δημιουργία.",
              "unknown_no_replay": true
            },
            "outputs": {
              "all_results": "Διατηρήστε ολόκληρη την απόκριση και τις κεφαλίδες, τα αρχικά αναγνωριστικά, κάθε πραγματική έξοδο και όλα τα πεδία χρήσης και λογιστικής καταγραφής. Αποθηκεύστε κάθε μοναδικό αρχείο πολυμέσων που σας ανήκει και διατηρήστε κάθε ρόλο που παραπέμπει σε αυτό.",
              "every_actual_output": true,
              "family": "3d",
              "fields": [
                {
                  "name": "id",
                  "type": "string"
                },
                {
                  "name": "polling_url",
                  "type": "string"
                },
                {
                  "name": "provider_task_id",
                  "type": "string"
                },
                {
                  "name": "code",
                  "type": "integer"
                },
                {
                  "name": "data.task_id",
                  "type": "string"
                },
                {
                  "name": "data.status",
                  "type": "string"
                },
                {
                  "name": "data.progress",
                  "type": "integer"
                },
                {
                  "name": "data.output.*",
                  "type": "string"
                },
                {
                  "name": "data.result.*.url",
                  "type": "string"
                },
                {
                  "name": "data.result.*.type",
                  "type": "string"
                },
                {
                  "name": "data.thumbnail",
                  "type": "string"
                }
              ],
              "formats": "Inspect actual asset bytes and preserve declared metadata; preview type labels do not determine file extensions.",
              "maximum_outputs": null
            },
            "parameters": [
              {
                "conditions": "Χρησιμοποιήστε τον επιλογέα μοντέλου Ailoot.",
                "default_known": false,
                "enum": [
                  "tripo3d"
                ],
                "enum_known": true,
                "maximum_length": null,
                "name": "model",
                "required": true,
                "type": "string"
              },
              {
                "conditions": "Το πλήρες παράδειγμα χρησιμοποιεί text_to_model· οι άλλοι τύποι εργασίας απαιτούν τις τεκμηριωμένες εισόδους που αντιστοιχούν στον τύπο τους.",
                "default_known": false,
                "enum": [
                  "text_to_model",
                  "image_to_model",
                  "multiview_to_model",
                  "texture_model",
                  "animate_prerigcheck",
                  "animate_rig",
                  "animate_retarget",
                  "stylize_model",
                  "convert_model"
                ],
                "enum_known": true,
                "maximum_length": null,
                "name": "type",
                "required": true,
                "type": "string"
              },
              {
                "conditions": "Επιλέξτε μια ρητά τεκμηριωμένη έκδοση· αυτό το παράδειγμα χρησιμοποιεί την v3.0-20250812.",
                "default_known": false,
                "enum": [
                  "v2.0-20240919",
                  "v1.4-20240625",
                  "v2.5-20250123",
                  "v3.0-20250812",
                  "Turbo-v1.0-20250506"
                ],
                "enum_known": true,
                "maximum_length": null,
                "name": "model_version",
                "required": true,
                "type": "string"
              },
              {
                "conditions": "Περιγράψτε το αντικείμενο που θα δημιουργηθεί.",
                "default_known": false,
                "enum_known": false,
                "maximum_length": null,
                "name": "prompt",
                "required": true,
                "type": "string"
              }
            ],
            "request_schema": {
              "additionalProperties": true,
              "properties": {
                "model": {
                  "enum": [
                    "tripo3d"
                  ],
                  "type": "string"
                },
                "model_version": {
                  "enum": [
                    "v2.0-20240919",
                    "v1.4-20240625",
                    "v2.5-20250123",
                    "v3.0-20250812",
                    "Turbo-v1.0-20250506"
                  ],
                  "type": "string"
                },
                "prompt": {
                  "type": "string"
                },
                "type": {
                  "enum": [
                    "text_to_model",
                    "image_to_model",
                    "multiview_to_model",
                    "texture_model",
                    "animate_prerigcheck",
                    "animate_rig",
                    "animate_retarget",
                    "stylize_model",
                    "convert_model"
                  ],
                  "type": "string"
                }
              },
              "required": [
                "model",
                "type",
                "model_version",
                "prompt"
              ],
              "type": "object"
            },
            "schema_template": {
              "actual_file_preparation_required": false,
              "body": {
                "model": "tripo3d",
                "model_version": "v3.0-20250812",
                "prompt": "a cute pig",
                "type": "text_to_model"
              },
              "content_type": "application/json"
            }
          },
          "input": {
            "conditions": [
              "Χρησιμοποιήστε τον επιλογέα μοντέλου Ailoot.",
              "Το πλήρες παράδειγμα χρησιμοποιεί text_to_model· οι άλλοι τύποι εργασίας απαιτούν τις τεκμηριωμένες εισόδους που αντιστοιχούν στον τύπο τους.",
              "Επιλέξτε μια ρητά τεκμηριωμένη έκδοση· αυτό το παράδειγμα χρησιμοποιεί την v3.0-20250812.",
              "Περιγράψτε το αντικείμενο που θα δημιουργηθεί."
            ],
            "content_type": "application/json",
            "material_types": [
              "text"
            ],
            "optional": [],
            "required": [
              "model",
              "type",
              "model_version",
              "prompt"
            ]
          },
          "lifecycle": {
            "assets": [
              {
                "http": "GET",
                "path": "/v1/media/assets"
              },
              {
                "http": "GET",
                "path": "/v1/media/assets/{asset_id}"
              }
            ],
            "cancel_endpoint": null,
            "completed_states": [
              "success"
            ],
            "content": [],
            "create": {
              "http": "POST",
              "path": "/v1/3d/generations"
            },
            "failed_states": [
              "failed",
              "banned",
              "expired",
              "cancelled"
            ],
            "id_source": "Use returned polling_url and id. Keep provider_task_id and X-Ailoot-Task-Id as separate original identifiers.",
            "mode": "submit_once_poll_original",
            "owned_content": {
              "http": "GET",
              "path": "/v1/media/assets/{asset_id}/content",
              "url_source": "Use the exact returned signed URL; never construct a token."
            },
            "pending_states": [
              "queued",
              "running"
            ],
            "state_field": "data.status",
            "status": [
              {
                "http": "GET",
                "path": "/v1/3d/generations/{request_id}"
              }
            ],
            "unknown": "Keep the returned public task or operation id and all headers. Read only the original task; unknown or result_pending_check does not authorize another creation.",
            "unknown_no_replay": true
          },
          "method": {
            "http": "POST",
            "path": "/v1/3d/generations"
          },
          "method_aliases": [],
          "output": {
            "all_results": "Retain the complete response and headers, original identifiers, every actual output and all usage/accounting fields. Save each unique owned asset and retain every role pointing to it.",
            "every_actual_output": true,
            "family": "3d",
            "fields": [
              {
                "name": "id",
                "type": "string"
              },
              {
                "name": "polling_url",
                "type": "string"
              },
              {
                "name": "provider_task_id",
                "type": "string"
              },
              {
                "name": "code",
                "type": "integer"
              },
              {
                "name": "data.task_id",
                "type": "string"
              },
              {
                "name": "data.status",
                "type": "string"
              },
              {
                "name": "data.progress",
                "type": "integer"
              },
              {
                "name": "data.output.*",
                "type": "string"
              },
              {
                "name": "data.result.*.url",
                "type": "string"
              },
              {
                "name": "data.result.*.type",
                "type": "string"
              },
              {
                "name": "data.thumbnail",
                "type": "string"
              }
            ],
            "formats": "Inspect actual asset bytes and preserve declared metadata; preview type labels do not determine file extensions.",
            "maximum_outputs": null
          }
        },
        "ctx": null,
        "declared_pricing_profiles": [
          {
            "dimensions": {
              "regime": "base"
            },
            "label": "Base token rates",
            "units": [
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "input_price",
                "label": "Input tokens",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "output_price",
                "label": "Output tokens",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "output_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "output_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "cache_read_price",
                "label": "Cache read",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "cached_input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "cached_input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "cache_write_price",
                "label": "Cache write",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "generic_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "generic_cache_creation_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "cache_write_1h_price",
                "label": "Cache write, 1 hour",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "one_hour_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "one_hour_cache_creation_token"
              }
            ]
          },
          {
            "basis": "Αυτή η εκτίμηση δεν αποτελεί πρόσθετη χρέωση ούτε σταθερή τιμή για την ολοκληρωμένη παραγωγή.",
            "dimensions": {
              "forecast_quantity": "one generation estimate"
            },
            "label": "Εκτιμώμενο κόστος δημιουργίας",
            "units": [
              {
                "amount": "1.35",
                "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": "1.35",
                "native_quantity": 1,
                "public_unit_label": "estimate before generation",
                "quantity": 1,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "request_estimate"
              }
            ]
          }
        ],
        "examples": [
          {
            "code": "set -eu\n: \"${AILOOT_API_KEY:?Set your Ailoot API key}\"\ncat > request.json <<'JSON'\n{\n  \"model\": \"tripo3d\",\n  \"type\": \"text_to_model\",\n  \"prompt\": \"a cute pig\",\n  \"model_version\": \"v3.0-20250812\"\n}\nJSON\ncurl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/3d/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\n# Create once; retain id, polling_url, original task identifiers and every header.\n",
            "label": "curl · create once and retain receipt",
            "language": "bash"
          },
          {
            "code": "set -eu\n: \"${AILOOT_API_KEY:?Set your Ailoot API key}\"\nexport AILOOT_API_KEY\npython3 - <<'PY_STATUS'\nimport json,os,subprocess\nfrom pathlib import Path\nfrom urllib.parse import urljoin,urlsplit\nr=json.loads(Path(\"result.json\").read_text())\nu=urljoin(\"https://api.ailoot.ai\",r[\"polling_url\"])\np=urlsplit(u)\nif p.scheme!=\"https\" or p.netloc!=\"api.ailoot.ai\" or p.username or p.password:\n    raise SystemExit(\"Unexpected returned polling URL; preserve the response\")\nsubprocess.run([\"curl\",\"--fail-with-body\",\"--silent\",\"--show-error\",u,\"-H\",\"Authorization: Bearer \"+os.environ[\"AILOOT_API_KEY\"],\"-D\",\"status-headers.txt\",\"-o\",\"status.json\"],check=True)\n# Read this same original polling_url again while pending.\n# Preserve unknown/result_pending_check; do not repeat creation.\nPY_STATUS\n",
            "label": "Read the original task",
            "language": "bash"
          },
          {
            "code": "set -eu\n: \"${AILOOT_API_KEY:?Set your Ailoot API key}\"\nexport AILOOT_API_KEY\npython3 - <<'PY_ASSETS'\nimport json,os,subprocess\nfrom pathlib import Path\nfrom urllib.parse import urljoin,urlsplit\nr=json.loads(Path(\"status.json\").read_text())\nroles={}\ndef visit(v,path=\"\"):\n    if isinstance(v,dict):\n        for k,x in v.items(): visit(x,path+\"/\"+k)\n    elif isinstance(v,list):\n        for i,x in enumerate(v): visit(x,path+\"/\"+str(i))\n    elif isinstance(v,str):\n        u=urljoin(\"https://api.ailoot.ai\",v); p=urlsplit(u)\n        if p.scheme==\"https\" and p.netloc==\"api.ailoot.ai\" and not p.username and not p.password and p.path.startswith(\"/v1/media/assets/\") and p.path.endswith(\"/content\"):\n            roles.setdefault(u,[]).append(path)\nvisit(r)\nif not roles: raise SystemExit(\"No completed owned assets; retain the original status\")\nmanifest=[]\nfor i,(u,paths) in enumerate(roles.items()):\n    target=Path(f\"asset-{i}.bin\")\n    subprocess.run([\"curl\",\"--fail-with-body\",\"--silent\",\"--show-error\",u,\"-H\",\"Authorization: Bearer \"+os.environ[\"AILOOT_API_KEY\"],\"-o\",str(target)],check=True)\n    raw=target.read_bytes()\n    if not raw: raise SystemExit(\"Empty asset; retain original status and metadata\")\n    ext=\"glb\" if raw[:4]==b\"glTF\" else \"png\" if raw[:8]==b\"\\x89PNG\\r\\n\\x1a\\n\" else \"jpg\" if raw[:3]==b\"\\xff\\xd8\\xff\" else \"webp\" if raw[:4]==b\"RIFF\" and raw[8:12]==b\"WEBP\" else \"mp4\" if raw[4:8]==b\"ftyp\" else \"bin\"\n    name=f\"asset-{i}.{ext}\"\n    if target.name!=name: target.rename(name)\n    manifest.append({\"file\":name,\"response_paths\":paths,\"bytes\":len(raw)})\nPath(\"asset-manifest.json\").write_text(json.dumps(manifest,indent=2))\nprint(\"Saved\",len(manifest),\"unique owned assets; every response role retained\")\nPY_ASSETS\n",
            "label": "Save every completed owned asset",
            "language": "bash"
          }
        ],
        "family": "openai",
        "fast_multiplier": null,
        "flex_multiplier": null,
        "fmt": "3d",
        "http": "POST",
        "in": null,
        "input": [
          "text"
        ],
        "label": "3D",
        "max_out": null,
        "max_reasoning_effort_multiplier": null,
        "out": null,
        "output": [
          "model_3d",
          "image"
        ],
        "path": "/v1/3d/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": "1.35",
                "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": "1.35",
                "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": "tripo3d",
        "route_label": "Ultra",
        "status_reads": [
          "GET /v1/3d/generations/{request_id}"
        ],
        "tiers": [],
        "units": [
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": false,
            "estimate_only": true,
            "key": "input_price",
            "label": "Input tokens",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "input_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "input_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": false,
            "estimate_only": true,
            "key": "output_price",
            "label": "Output tokens",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "output_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "out",
            "unit": "output_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": false,
            "estimate_only": true,
            "key": "cache_read_price",
            "label": "Cache read",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "cached_input_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "cached_input_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": false,
            "estimate_only": true,
            "key": "cache_write_price",
            "label": "Cache write",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "generic_cache_creation_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "generic_cache_creation_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": false,
            "estimate_only": true,
            "key": "cache_write_1h_price",
            "label": "Cache write, 1 hour",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "one_hour_cache_creation_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "one_hour_cache_creation_token"
          },
          {
            "amount": "1.35",
            "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": "1.35",
            "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": "tripo3d",
        "request_model_id": "tripo3d",
        "route_label": "Ultra"
      }
    ],
    "name": "Tripo: 3D Generation",
    "price": {
      "estimate_only": true,
      "in": null,
      "in_label": null,
      "out": 1.35,
      "out_label": "estimate before generation",
      "scope_label": "Estimated generation cost",
      "sort_in": null,
      "sort_out": 1.35,
      "varies": false
    },
    "short": "Το Tripo δημιουργεί ένα μοντέλο 3D από γραπτή περιγραφή ενός αντικειμένου. Οι ευρύτερες ροές εργασίας του κατασκευαστή διακρίνουν τη γεωμετρία, την εφαρμογή υφών και τη μεταγενέστερη επεξεργασία του μοντέλου· εξετάστε το ολοκληρωμένο πλέγμα από διάφορες οπτικές γωνίες και διατηρήστε τα πραγματικά αρχεία για τη σκηνή ή τον επεξεργαστή προορισμού.",
    "short_sha256": "0e9752112cce15b72a6c69cb4fa8f88d6c7680bd4fa7b5979e885dd64f1ebe71"
  },
  "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": "Το Tripo δημιουργεί ένα μοντέλο 3D από γραπτή περιγραφή ενός αντικειμένου. Οι ευρύτερες ροές εργασίας του κατασκευαστή διακρίνουν τη γεωμετρία, την εφαρμογή υφών και τη μεταγενέστερη επεξεργασία του μοντέλου· εξετάστε το ολοκληρωμένο πλέγμα από διάφορες οπτικές γωνίες και διατηρήστε τα πραγματικά αρχεία για τη σκηνή ή τον επεξεργαστή προορισμού.",
  "source": {
    "audit_sha256": "2e00086bcbfc28e64d0cebe97aa47c17d8d5618963027f8ffb9dc6123d7d25b1",
    "bridge_map_sha256": "1125275768b9636fc8461bc7da5061239a81ddfe508e2557843ca42c58ab0036",
    "raw_model_json_sha256": "709906c40a460b654b1138d432e25e910ed25e7cb6d03256465eab7ec0a3f0dd",
    "renderer_sha256": "3ed36f7af4f78822bafbd174fdcaed7b698a18a86efe254253d37f1b098a7566"
  },
  "sourceRevision": "f8f7f8cd8c0664c4cca67022d37f60ead245ca55a39a3d9fd5a1d0b5e1763ba3"
}
