μοντέλα

Recraft: Recraft V3

Markdown · JSON

Recraft: Recraft V3

Το Recraft V3 δημιουργεί φωτογραφίες, εικονογραφήσεις και γραφιστικές διατάξεις με σύνθεση που λαμβάνει υπόψη το κείμενο και ελέγχους ύφους. Οι διακριτές παραλλαγές raster και SVG ταιριάζουν σε αφίσες, επώνυμα σύνολα εικόνων, εικονίδια και σχέδια όπου διατύπωση και οπτική δομή πρέπει να συνεργάζονται.

Σχετικά με το μοντέλο

Αυτή η περιγραφή καλύπτει τις δυνατότητες του μοντέλου. Οι είσοδοι, έξοδοι και επιλογές που διατίθενται στο Ailoot παρατίθενται παρακάτω για την επιλεγμένη μέθοδο.

Το Recraft V3 είναι μοντέλο δημιουργίας εικόνων φτιαγμένο για γραφιστικό σχεδιασμό, καθώς και φωτογραφικές και εικονογραφημένες σκηνές. Μια γραπτή περιγραφή ορίζει θέμα, περιβάλλον και σύνθεση· το αποτέλεσμα είναι εικόνα. Το V3 αναπτύσσει την απόδοση κειμένου και τον φωτορεαλισμό της Recraft, διατηρώντας συνέπεια ύφους από εικόνες παραδείγματος χωρίς επανεκπαίδευση.

Το κείμενο ως μέρος της σύνθεσης

Το V3 δουλεύει με κείμενο μέσα στην εικόνα, μαζί με μεγαλύτερα κείμενα και γράμματα μεσαίου μεγέθους. Η Recraft περιγράφει στάδιο διάταξης που καθορίζει λέξεις και θέσεις τους πριν τη δημιουργία εικόνας. Η διάταξη μπορεί να παράγεται αυτόματα από την περιγραφή ή να οργανώνεται χειροκίνητα στο σχεδιαστικό περιβάλλον της Recraft. Αυτό βοηθά στη σύνδεση τίτλου, εικονογράφησης και υποστηρικτικού κειμένου σε μία σύνθεση. Ο κατασκευαστής τεκμηριώνει επίσης ρητές συντεταγμένες διάταξης κειμένου, εκφρασμένες ως προς την εικόνα αντί για σταθερό πλέγμα pixel. Κάθε στοιχείο κειμένου περιέχει μία λέξη και τέσσερα γωνιακά σημεία σε κανονικοποιημένες συντεταγμένες: το (0, 0) είναι επάνω αριστερά και το (1, 1) κάτω δεξιά. Οι συντεταγμένες μπορεί να εκτείνονται εκτός αυτού του εύρους, οπότε το σχήμα περικόπτεται. Οι ρητές λέξεις διάταξης κειμένου πρέπει να ακολουθούν τους τεκμηριωμένους περιορισμούς χαρακτήρων.

Για αφίσα ή εξώφυλλο, δώστε την ακριβή διατύπωση και περιγράψτε την ιεραρχία: ποια γραμμή προηγείται, πού βρίσκεται και πώς την υποστηρίζει η εικόνα. Ελέγξτε την αποδοσμένη ορθογραφία και τις αποστάσεις όταν επιλέγετε αποτέλεσμα.

Ύφος, παλέτα και καλλιτεχνική κατεύθυνση

Το V3 περιλαμβάνει επιμελημένα ύφη φωτογραφίας, εικονογράφησης και εμβλημάτων, μαζί με χωριστή βιβλιοθήκη διανυσματικών υφών. Το Recraft V3 Raw είναι το προεπιλεγμένο ύφος μοντέλου raster· το Vector art είναι προεπιλογή για τη διανυσματική παραλλαγή. Το Photorealism στοχεύει σε φωτογραφική εμφάνιση, ενώ το Illustration υποστηρίζει στυλιζαρισμένες υφές, σκίαση και πιο σύνθετες χρωματικές μεταβάσεις. Τα διανυσματικά ύφη ευνοούν σχήματα, περιορισμένες παλέτες και επίπεδα γεμίσματα ή απλές διαβαθμίσεις.

Τα προσαρμοσμένα ύφη μπορούν να δημιουργούνται από εικόνες αναφοράς, υπάρχοντα συμβατά ύφη ή συνδυασμό. Παρέχουν επαναχρησιμοποιήσιμη οπτική κατεύθυνση σε σειρά εικόνων. Οι τεκμηριωμένοι έλεγχοι μίξης επιτρέπουν χωριστά βάρη για αναφορές και αρχικά ύφη· το πλήθος βαρών αντιστοιχεί στις πηγές. Τα PaletteMatch και MaxWeight είναι οι δύο αναφερόμενες πολιτικές μίξης. Ο κατασκευαστής επιτρέπει έως 10 εικόνες αναφοράς ύφους και χρησιμοποιεί την κανονική λειτουργία αντιστοίχισης ύφους για V3. Αποθηκευμένο προσαρμοσμένο ύφος και απευθείας αναφορές ύφους είναι εναλλακτικές είσοδοι και το προσαρμοσμένο ύφος πρέπει να ταιριάζει με το μοντέλο δημιουργίας.

Προτιμώμενα χρώματα και χρώμα φόντου καθοδηγούν την παλέτα. Τεκμηριώνονται έως 10 χρώματα RGB, με κάθε συνιστώσα από 0 έως 255. Προαιρετικά σχετικά βάρη κυμαίνονται από 0 έως 1· πρέπει να παρέχονται για κάθε χρώμα ή για κανένα και το άθροισμά τους δεν μπορεί να υπερβαίνει το 1. Το καλλιτεχνικό επίπεδο κυμαίνεται από 0 για στατική, καθαρή απόδοση έως 5 για πιο δυναμικές, εκκεντρικές συνθέσεις. Μια αρνητική προτροπή περιγράφει ανεπιθύμητα στοιχεία· χωριστός έλεγχος χωρίς κείμενο απενεργοποιεί τις ενσωματωμένες διατάξεις κειμένου. Διατίθεται τυχαίο seed για αναπαραγωγιμότητα. Αυτοί οι έλεγχοι δίνουν διαφορετικούς μοχλούς για τη σκηνή, το ύφος της και την οπτική διάταξη.

Εικόνες raster και χωριστή παραλλαγή SVG

Η Recraft τεκμηριώνει δύο παραλλαγές V3. Το μοντέλο raster παράγει WebP χωρίς απώλειες ή PNG και είναι κατάλληλο για φωτογραφική λεπτομέρεια, σκίαση και εικονογράφηση με υφές. Το Recraft V3 Vector παράγει SVG: διαδρομές και σχήματα που μπορούν να κλιμακώνονται χωρίς σταθερή ανάλυση pixel. Ταιριάζει σε εικονογράμματα, ιδέες λογοτύπων, σήματα και λεπτομερή διανυσματικά εικαστικά. Η μετατροπή raster σε vector είναι χωριστή λειτουργία από την απευθείας δημιουργία διανυσματικού εικαστικού.

Και οι δύο παραλλαγές έχουν δική τους ταυτότητα. Μια εικόνα με διανυσματική εμφάνιση και μια πραγματική έξοδος SVG είναι διαφορετικές επιλογές. Επιλέξτε την επιθυμητή έξοδο όταν προετοιμάζετε σχεδιαστική ροή, αντί να αντιμετωπίζετε το κοινό όνομα V3 ως απόδειξη ότι κάθε λειτουργία επιστρέφει ίδιο τύπο αρχείου.

Επεξεργασία και ολοκλήρωση υπάρχοντος εικαστικού

Η τεκμηρίωση V3 της Recraft αναφέρει δημιουργία εικόνας προς εικόνα, inpainting, outpainting και αντικατάσταση ή δημιουργία φόντου. Η εργασία εικόνας προς εικόνα συνδυάζει υπάρχουσα εικόνα με νέα περιγραφή. Το inpainting αναδημιουργεί την επιλεγμένη περιοχή χρησιμοποιώντας εικόνα και αντίστοιχη μάσκα· το outpainting προσθέτει περιεχόμενο πέρα από το αρχικό κάδρο. Οι λειτουργίες φόντου αφορούν το περιβάλλον θέματος.

Το συνοδευτικό σύνολο εργαλείων περιλαμβάνει επίσης σβήσιμο, αφαίρεση φόντου, διανυσματοποίηση και δύο προσεγγίσεις αύξησης ανάλυσης. Η δημιουργική αύξηση ανάλυσης μπορεί να εισάγει νέα λεπτομέρεια· η crisp αύξηση ανάλυσης στοχεύει σε πιο ευκρινή μεγαλύτερη απόδοση υπάρχοντος περιεχομένου. Πρόκειται για διακριτές λειτουργίες με δικές τους εισόδους και αποτελέσματα, αντί για πρόσθετες σημασίες του ονόματος μοντέλου raster ή vector.

Όρια προτροπής, μεγέθους και αρχικής εικόνας

Η προδιαγραφή δημιουργίας V3 του κατασκευαστή δέχεται προτροπή έως 1000 χαρακτήρες και 1–6 εικόνες ανά αίτημα. Υποστηρίζει 14 αναλογίες: 1:1, 2:1, 1:2, 3:2, 2:3, 4:3, 3:4, 5:4, 4:5, 6:10, 14:10, 10:14, 16:9 και 9:16. Τα τεκμηριωμένα παραδείγματα raster περιλαμβάνουν 1024x1024, 1820x1024 και 1024x1820. Οι ακριβείς διαστάσεις raster πρέπει να προέρχονται από την υποστηριζόμενη λίστα· το SVG χρησιμοποιεί αναλογίες χωρίς σταθερό μέγεθος pixel. Όταν παραλείπεται το μέγεθος, το σύστημα κατασκευαστή το επιλέγει από την προτροπή.

Για λειτουργίες εισόδου εικόνας, ο κατασκευαστής αναφέρει PNG, JPG και WebP, με SVG όπου το επιτρέπει η συγκεκριμένη λειτουργία. Τα αρχεία πρέπει να είναι κάτω από 20 MB, έως 16 MP, με μεγαλύτερη πλευρά έως 4096 pixel. Η μικρότερη πλευρά είναι τουλάχιστον 256 pixel, με εξαίρεση 32 pixel για crisp αύξηση ανάλυσης. Οι μάσκες αντιστοιχούν στο μέγεθος εικόνας και χρησιμοποιούν καθαρό μαύρο και λευκό· οι αναφορές ύφους έχουν συνολικό όριο 64 MB.

Για έργο Ailoot API, μετατρέψτε την εργασία σε εστιασμένη περιγραφή εικόνας: ακριβές κείμενο, διάταξη αντικειμένων, οπτικό ύφος και επιθυμητή σύνθεση. Αφίσα, σκηνή προϊόντος και σειρά εικονιδίων χρειάζονται διαφορετικές περιγραφές· διατηρήστε τις σχετικές διακρίσεις παραλλαγής και λειτουργίας V3 όταν αποφασίζετε πώς θα χρησιμοποιηθεί κάθε αποτέλεσμα.

Ailoot Ultra · Εικόνες POST /v1/images/generations recraft/recraft-v3

recraft/recraft-v3

Recraft /recraft/recraft-v3

Εισαγωγή

Το Recraft V3 δημιουργεί φωτογραφίες, εικονογραφήσεις και γραφιστικές διατάξεις με σύνθεση που λαμβάνει υπόψη το κείμενο και ελέγχους ύφους. Οι διακριτές παραλλαγές raster και SVG ταιριάζουν σε αφίσες, επώνυμα σύνολα εικόνων, εικονίδια και σχέδια όπου διατύπωση και οπτική δομή πρέπει να συνεργάζονται.

Αποδεκτές είσοδοι
Κείμενο · Εικόνες
Αποτελέσματα
Εικόνες

Διαθέσιμα στο Ailoot · είσοδοι και μέθοδοι

Ailoot Ultra · Εικόνες POST /v1/images/generations
Είσοδος
text, image
Έξοδος
image
Μορφή εξόδου
Αρχείο εικόνας
ΠεδίοΤύποςΑπαίτησηΤιμές και όριαΠροεπιλογή
ΠεδίοmodelΤύποςstringΑπαίτησηΥποχρεωτικόΤιμές και όρια
recraft/recraft-v3
Προεπιλογή—
ΠεδίοpromptΤύποςstringΑπαίτησηΥποχρεωτικόΤιμές και όρια
Ελάχιστο μήκος: 1
Προεπιλογή—
ΠεδίοnΤύποςintegerΑπαίτησηΠροαιρετικόΤιμές και όρια
Ελάχιστο: 1
Μέγιστο: 6
Προεπιλογή—
Πεδίοaspect_ratioΤύποςstringΑπαίτησηΠροαιρετικόΤιμές και όρια
1:1, 4:3, 3:4, 16:9, 9:16, auto
Προεπιλογή—
Πεδίοinput_referencesΤύποςarrayΑπαίτησηΠροαιρετικόΤιμές και όρια
Ελάχιστο πλήθος στοιχείων: 0
Μέγιστο πλήθος στοιχείων: 1
Προεπιλογή—
Συνδυασμοί υλικών εισόδου

Κείμενο σε εικόνα · Υποχρεωτικό: prompt

Παράμετροι και κύκλος ζωής μεθόδου
ΠαράμετροςΣύμβαση
Παράμετροςcontent_typeΣύμβασηapplication/json
ΠαράμετροςrequiredΣύμβασηmodel, prompt
Παράμετροςmaterial_typesΣύμβασηtext, image
Παράμετροςoptional_controlsΣύμβασηaspect_ratio, n, input_references
Παράμετροςexact_supported_parametersΣύμβαση{"aspect_ratio":{"type":"enum","values":["1:1","4:3","3:4","16:9","9:16","auto"]},"n":{"type":"range","min":1,"max":6},"input_references":{"type":"range","min":0,"max":1}}
Παράμετροςreference_material_ruleΣύμβασηΜόνο πραγματικές εικόνες αναφοράς του πελάτη· διέπονται από τις προϋποθέσεις του τελικού σημείου του παρόχου.

Εναλλακτικά ονόματα μεθόδου: /v1/images

Κύκλος ζωής: synchronous_result_then_owned_library

GET /v1/media/tasks/{task_id} · Το πραγματικό task_id που επιστράφηκε ή μια εγγραφή στη βιβλιοθήκη πολυμέσων

GET /v1/media/assets/{asset_id}/content

GET /v1/media/assets

GET /v1/media/assets/{asset_id}

Χρησιμοποιήστε το ακριβές μοντέλο και τα τεκμηριωμένα πεδία εισόδου.

Διατηρήστε ολόκληρη την απόκριση, κάθε πραγματική έξοδο και τα αρχικά ID που επιστρέφονται.

Τιμολόγηση

Πώς υπολογίζεται η τελική χρέωση

Οι εμφανιζόμενες τιμές χρησιμοποιούνται για την εκτίμηση του κόστους πριν από την παραγωγή. Η τελική χρέωση υπολογίζεται από το κόστος που καταγράφηκε για την αρχική παραγωγή. Η μετρημένη διάρκεια της εξόδου και οι προβλεπόμενες ποσότητες δεν αποτελούν την τελική χρεώσιμη ποσότητα.

Οι τιμολογιακές αναφορές δεν προσθέτουν επιλογές αιτήματος. Οι υποστηριζόμενες παράμετροι αναφέρονται στην επιλεγμένη μέθοδο.

Γρήγορη λειτουργία
Δεν έχει οριστεί Όταν επιλέγεται η γρήγορη λειτουργία
Λειτουργία flex
Δεν έχει οριστεί Όταν επιλέγεται η λειτουργία flex
Μέγιστη προσπάθεια συλλογισμού
Δεν έχει οριστεί Όταν η μέγιστη προσπάθεια συλλογισμού χρησιμοποιεί την προσαρμογή default

Εκτιμώμενες χρεώσεις για σύγκριση

Τιμές ανά διαμόρφωση

Αντιστοιχίστε κάθε χρέωση στις συνθήκες που εμφανίζονται. Χρησιμοποιήστε μία χρέωση ανά σύνολο εναλλακτικών διαμορφώσεων.

ΔιαμόρφωσηΠίνακας χρεώσεωνΠροβλεπόμενη ποσότηταΜονάδα τιμολόγησηςΧρέωση
ΔιαμόρφωσηΒασικές χρεώσεις tokenΠίνακας χρεώσεωνΒασική χρέωσηΠροβλεπόμενη ποσότητα—Μονάδα τιμολόγησης—Χρέωση
Είσοδος · Token εισόδου · Εκτίμηση μόνο για σύγκριση — / 1K token
Έξοδος · Token εξόδου · Εκτίμηση μόνο για σύγκριση — / 1K token
Είσοδος · Ανάγνωση από την κρυφή μνήμη · Εκτίμηση μόνο για σύγκριση — / 1K token
Είσοδος · Εγγραφή στην κρυφή μνήμη · Εκτίμηση μόνο για σύγκριση — / 1K token
Είσοδος · Εγγραφή στην κρυφή μνήμη, 1 ώρα · Εκτίμηση μόνο για σύγκριση — / 1K token
ΔιαμόρφωσηUltraΠίνακας χρεώσεων—Προβλεπόμενη ποσότητα—Μονάδα τιμολόγησηςανά εικόνα εξόδουΧρέωση
Έξοδος · έξοδος εικόνας · Εκτίμηση μόνο για σύγκριση $0.08 ανά εικόνα εξόδου
ΔιαμόρφωσηΕκτιμώμενο κόστος δημιουργίαςΠίνακας χρεώσεων—Προβλεπόμενη ποσότηταεκτίμηση για μία δημιουργίαΜονάδα τιμολόγησης—Χρέωση
Έξοδος · Εκτιμώμενο κόστος δημιουργίας · Εκτίμηση μόνο για σύγκριση $0.08 εκτίμηση πριν από τη δημιουργία

Αυτή η εκτίμηση δεν αποτελεί πρόσθετη χρέωση ούτε σταθερή τιμή για την ολοκληρωμένη παραγωγή.

Το Ailoot δεσμεύει ένα εκτιμώμενο ποσό πριν από το αίτημα. Μετά το αποτέλεσμα, εκκαθαρίζει την τελική χρέωση βάσει της μετρημένης χρήσης. Η εκκαθάριση ροής χρησιμοποιεί την τελική καταγραφή χρήσης. Πώς λειτουργούν η δέσμευση και η εκκαθάριση →

Στοιχεία τιμοκαταλόγου αναφοράς

Οι πίνακες αναφοράς του μοντέλου δεν αλλάζουν την επιλογή μεθόδου, τις εκτιμήσεις τιμής ή τις χρεώσεις. Οι εφαρμοζόμενες χρεώσεις χρησιμοποιούν τις τιμές της επιλεγμένης μεθόδου Ailoot.

Διαμορφώσεις τιμολόγησης εικόνων

Τιμές ανά διαμόρφωση

ΔιαμόρφωσηΣυνθήκες χρέωσηςΧρέωση
ΔιαμόρφωσηΕικόνα εξόδουΣυνθήκες χρέωσηςΔεν δηλώνεται παραλλαγή τιμολόγησης.Χρέωση
Έξοδος · Εικόνα εξόδου $0.08 ανά εικόνα

Οι ισοδύναμες καταχωρίσεις περιγράφουν την ίδια χρέωση· δεν προσθέτουν δεύτερη χρέωση.

Παραδείγματα αιτημάτων

Ailoot Ultra · Εικόνες

curlPython SDKNode.js SDK
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
export AILOOT_API_KEY
python3 - <<'PY_REQUEST'
import json,os
from pathlib import Path
p={'model': 'recraft/recraft-v3', 'prompt': 'a red panda astronaut floating in space, studio lighting'}

Path("request.json").write_text(json.dumps(p,ensure_ascii=False))
PY_REQUEST
curl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/images/generations \
  -H "Authorization: Bearer $AILOOT_API_KEY" -H 'Content-Type: application/json' \
  --data-binary @request.json -D response-headers.txt -o result.json
python3 - <<'PY_RESULT'
import base64, json, os, subprocess
from pathlib import Path
from urllib.parse import urlsplit, urljoin

def save_images(items):
    if not items: raise SystemExit("No completed images; retain the full response")
    for index, item in enumerate(items):
        encoded=item.get("b64_json")
        uri=item.get("url", "")
        if not encoded and uri.startswith("data:image/"):
            header, separator, encoded=uri.partition(",")
            if not separator or ";base64" not in header: raise SystemExit("Unsupported image data URI")
        if encoded:
            raw=base64.b64decode(encoded,validate=True)
        elif uri:
            uri=urljoin("https://api.ailoot.ai",uri)
            parsed=urlsplit(uri)
            if parsed.scheme!="https" or not parsed.netloc or parsed.username or parsed.password:
                raise SystemExit("Invalid returned image URL")
            owned=parsed.netloc=="api.ailoot.ai" and parsed.path.startswith("/v1/media/assets/") and parsed.path.endswith("/content")
            args=["curl","--fail-with-body","--silent","--show-error",uri]
            if owned: args += ["-H","Authorization: Bearer "+os.environ["AILOOT_API_KEY"]]
            temporary=Path(f"image-{index}.bin")
            subprocess.run(args+["-o",str(temporary)],check=True)
            raw=temporary.read_bytes()
            temporary.unlink()
        else: raise SystemExit("Image has neither bytes nor URL")
        if not raw: raise SystemExit("Empty image result")
        ext="png" if raw.startswith(b"\x89PNG") else "jpg" if raw.startswith(b"\xff\xd8") else "webp" if raw[:4]==b"RIFF" and raw[8:12]==b"WEBP" else "svg" if raw.lstrip().startswith((b"<svg",b"<?xml")) else "bin"
        Path(f"image-{index}.{ext}").write_bytes(raw)
    print("Every returned image saved; complete response metadata retained")
save_images(json.loads(Path("result.json").read_text())["data"])
PY_RESULT
from openai import OpenAI
import base64, json, os, subprocess
from pathlib import Path
from urllib.parse import urlsplit, urljoin

def save_images(items):
    if not items: raise SystemExit("No completed images; retain the full response")
    for index, item in enumerate(items):
        encoded=item.get("b64_json")
        uri=item.get("url", "")
        if not encoded and uri.startswith("data:image/"):
            header, separator, encoded=uri.partition(",")
            if not separator or ";base64" not in header: raise SystemExit("Unsupported image data URI")
        if encoded:
            raw=base64.b64decode(encoded,validate=True)
        elif uri:
            uri=urljoin("https://api.ailoot.ai",uri)
            parsed=urlsplit(uri)
            if parsed.scheme!="https" or not parsed.netloc or parsed.username or parsed.password:
                raise SystemExit("Invalid returned image URL")
            owned=parsed.netloc=="api.ailoot.ai" and parsed.path.startswith("/v1/media/assets/") and parsed.path.endswith("/content")
            args=["curl","--fail-with-body","--silent","--show-error",uri]
            if owned: args += ["-H","Authorization: Bearer "+os.environ["AILOOT_API_KEY"]]
            temporary=Path(f"image-{index}.bin")
            subprocess.run(args+["-o",str(temporary)],check=True)
            raw=temporary.read_bytes()
            temporary.unlink()
        else: raise SystemExit("Image has neither bytes nor URL")
        if not raw: raise SystemExit("Empty image result")
        ext="png" if raw.startswith(b"\x89PNG") else "jpg" if raw.startswith(b"\xff\xd8") else "webp" if raw[:4]==b"RIFF" and raw[8:12]==b"WEBP" else "svg" if raw.lstrip().startswith((b"<svg",b"<?xml")) else "bin"
        Path(f"image-{index}.{ext}").write_bytes(raw)
    print("Every returned image saved; complete response metadata retained")

request={'model': 'recraft/recraft-v3', 'prompt': 'a red panda astronaut floating in space, studio lighting'}
client=OpenAI(base_url="https://api.ailoot.ai/v1",api_key=os.environ["AILOOT_API_KEY"],max_retries=0)
result=client.images.generate(**request)
Path("sdk-result.txt").write_text(str(result),encoding="utf-8")
save_images([{"b64_json":getattr(item,"b64_json",None),"url":getattr(item,"url",None)} for item in result.data])
import OpenAI from "openai";
import { readFileSync, writeFileSync } from "node:fs";
const key=process.env.AILOOT_API_KEY;
if(!key) throw new Error("Set your actual Ailoot API key");
const client=new OpenAI({baseURL:"https://api.ailoot.ai/v1",apiKey:key,maxRetries:0});
const request={"model": "recraft/recraft-v3", "prompt": "a red panda astronaut floating in space, studio lighting"};
const result=await client.images.generate(request);
writeFileSync("sdk-result.json",JSON.stringify(result,null,2));
if(!result.data?.length) throw new Error("No completed images");
for(let index=0;index<result.data.length;index++) {
  const item=result.data[index];let encoded=item.b64_json,uri=item.url||"",raw;
  if(!encoded && uri.startsWith("data:image/")) {
    const comma=uri.indexOf(",");if(comma<0 || !uri.slice(0,comma).includes(";base64")) throw new Error("Unsupported image data URI");
    encoded=uri.slice(comma+1);
  }
  if(encoded) {
    if(encoded.length%4!==0 || !/^[A-Za-z0-9+/]*={0,2}$/.test(encoded)) throw new Error("Invalid Base64");
    raw=Buffer.from(encoded,"base64");
  } else if(uri) {
    const u=new URL(uri,"https://api.ailoot.ai");
    if(u.protocol!=="https:" || u.username || u.password) throw new Error("Invalid returned URL");
    const owned=u.origin==="https://api.ailoot.ai" && u.pathname.startsWith("/v1/media/assets/") && u.pathname.endsWith("/content");
    const response=await fetch(u,{headers:owned?{Authorization:"Bearer "+key}:{},redirect:"manual"});
    if(!response.ok) throw new Error("Image content download failed: "+response.status);
    raw=Buffer.from(await response.arrayBuffer());
  } else throw new Error("Image has neither bytes nor URL");
  if(!raw.length) throw new Error("Empty image result");
  const ext=raw.subarray(0,4).equals(Buffer.from([137,80,78,71]))?"png":raw[0]===255&&raw[1]===216?"jpg":raw.toString("ascii",0,4)==="RIFF"&&raw.toString("ascii",8,12)==="WEBP"?"webp":raw.toString("utf8").trimStart().startsWith("<svg")||raw.toString("utf8").trimStart().startsWith("<?xml")?"svg":"bin";
  writeFileSync(`image-${index}.${ext}`,raw);
}
console.log("Every returned image saved; sdk-result.json retains complete metadata");

Λήψη και αποθήκευση αποτελεσμάτων

Ailoot Ultra · Εικόνες

Κατεβάστε κάθε εικόνα που επιστρέφεται ή αποθηκεύστε το περιεχόμενο Base64

  • GET /v1/media/tasks/{task_id}
  • GET /v1/media/assets/{asset_id}/content
  • GET /v1/media/assets
  • GET /v1/media/assets/{asset_id}
Διατηρήστε όλα τα ολοκληρωμένα αποτελέσματα

Αποθηκεύστε κάθε ολοκληρωμένη εικόνα· ανακτήστε κάθε URL που επιστρέφεται ή αποκωδικοποιήστε το περιεχόμενο Base64.

Διατηρήστε κάθε στοιχείο δεδομένων και ολόκληρη τη χρήση· εξασφαλίστε ότι όλες οι πραγματικές εικόνες που επιστρέφονται σας ανήκουν και αποθηκεύστε τις. Χωρίς επινοημένα URL ή ID.

Αν χρειάζεται έλεγχος της αρχικής απάντησης

Αν το αποτέλεσμα παραγωγής ή επεξεργασίας εικόνας χρειάζεται έλεγχο, διατηρήστε το αρχικό operation_id/X-Client-Request-ID και τις πληροφορίες αποτελέσματος που επιστράφηκαν. Ανακτήστε τα υπάρχοντα αποτελέσματα που σας ανήκουν μέσω της βιβλιοθήκης πολυμέσων χρησιμοποιώντας πραγματικές τιμές task_id ή asset_id. Μην υποβάλετε ξανά το αίτημα παραγωγής/επεξεργασίας και μην κατασκευάσετε URL περιοδικού ελέγχου από το operation_id.

Πεδία απάντησης
ΠεδίοΤύπος
ΠεδίοcreatedΤύποςinteger
Πεδίοdata[].urlΤύποςstring
Πεδίοdata[].b64_jsonΤύποςbase64 string
ΠεδίοusageΤύποςobject

Εναλλακτικά ονόματα

Εναλλακτικά ονόματα μοντέλου

Ailoot Ultra recraft/recraft-v3

Εναλλακτικές διαδρομές μεθόδων

/v1/images

Σχετικά ID μοντέλων

recraft/recraft-v3

FAQ · Recraft: Recraft V3
Ποιες είσοδοι και αποτελέσματα διατίθενται;

POST /v1/images/generations · recraft/recraft-v3: text, image → image

Ποια πεδία χρησιμοποιεί το αίτημα;

POST /v1/images/generations · recraft/recraft-v3: model, prompt, n, aspect_ratio, input_references

Ποια όρια ισχύουν;

POST /v1/images/generations · recraft/recraft-v3: n.minimum: 1; n.maximum: 6

Περισσότερες λεπτομέρειες

Συνδέστε το Ailoot με Claude Code, OpenCode, Hermes ή τη δική σας εφαρμογή.

Η εταιρεία και το χαρτοφυλάκιο έργων της

Η εταιρεία και το χαρτοφυλάκιο έργων της: εκατομμύρια πελάτες· μηνιαίες πωλήσεις δισεκατομμυρίων.

Αγοράστε token με έκπτωση.

Έκπτωση συνδρομής για τακτική χρήση. Προωθητικοί κωδικοί — έως 50% στην αγορά token.

Συνδρομή
Επιλέξτε πρόγραμμα με έκπτωση για τα τακτικά αιτήματά σας.
Προωθητικός κωδικός έως 50%
Εισαγάγετε τον κωδικό στην αγορά. Η τιμή επανυπολογίζεται σύμφωνα με την ενεργή προσφορά.
Δαπάνες στο ιστορικό
Μοντέλο, token και ποσό αποθηκεύονται για κάθε αίτημα.

Επιλέξτε συνδρομή · Δείτε τιμές μοντέλων

Συνδέστε το API με το προϊόν που πουλάτε.

SaaS, εφαρμογές και bot — σύμφωνα με τη δημόσια προσφορά και τη σύμβαση άδειας χρήσης Ailoot. Για μεταπώληση ζητήστε σχετική άδεια.

Εμπορική εφαρμογή
Ενσωματώστε δημιουργία κειμένου, εικόνων, βίντεο και ήχου στις πληρωμένες λειτουργίες της υπηρεσίας σας.
Άδεια για μεταπωλητή
Στείλτε περιγραφή έργου και τρόπο πρόσβασης. Ζητήστε γραπτούς όρους χρήσης και μεταπώλησης.
Έγγραφα στον ιστότοπο
Δημόσια προσφορά, σύμβαση άδειας χρήσης και πολιτική επεξεργασίας δεδομένων είναι διαθέσιμες πριν τη σύνδεση.

Ζητήστε άδεια μεταπώλησης · Δημόσια προσφορά και σύμβαση άδειας χρήσης