Σφάλματα και όρια
MarkdownΚωδικοί απάντησης, η σημασία τους και τι να κάνετε. Όλα τα σφάλματα επιστρέφονται σε JSON και περιέχουν Request ID.
Πλήρης οδηγός
Μορφή σφάλματος
Το σφάλμα επιστρέφεται στη μορφή του API που καλέσατε: αντικείμενο error για OpenAI, {"type": "error", "error": {...}} για Anthropic και error με πεδία status και details για Gemini. Επομένως, τα SDK τα αναγνωρίζουν ως συνηθισμένα σφάλματα API.
error.codeκαιerror.reason— η κλάση σφάλματος από τον παρακάτω πίνακα· οι τιμές τους ταυτίζονται.error.type— η τυπική τιμή της μορφής (για παράδειγμα,invalid_request_errorήserver_error).error.request_id(στο Anthropic —request_idστο ανώτατο επίπεδο), η κεφαλίδαX-Request-IDκαι το τέλος του μηνύματος περιέχουν το αναγνωριστικό αιτήματος.- Στο Gemini, η κλάση βρίσκεται στο
error.details:ErrorInfo.reason— ο ίδιος κωδικός με κεφαλαία γράμματα (για παράδειγμα,MODEL_OVERLOADED),domain—ailoot.ai· το αναγνωριστικό αιτήματος βρίσκεται στοRequestInfo.requestId. - Στη μορφή Gemini, ένα σφάλμα 5xx που δεν πρέπει να επαναληφθεί αυτόματα και το
result_pending_checkεπιστρέφονται με κωδικό κατάστασης 409 καιstatusABORTED: έτσι τα Gemini SDK και CLI δεν τα επαναλαμβάνουν αυτόματα. Η κλάση σφάλματος βρίσκεται στοErrorInfo.reason(για παράδειγμα,MODEL_TIMEOUTήRESULT_PENDING_CHECK). - Η απάντηση στη μορφή OpenAI περιέχει επίσης τα πεδία ανώτατου επιπέδου
codeκαιmessage— για παλαιότερους πελάτες.
{
"code": "API_KEY_REQUIRED",
"error": {
"code": "invalid_api_key",
"message": "No API key was sent with the request. Nothing was charged. Please check that the full key is sent in the Authorization header as \"Bearer <key>\". Request ID: 3b28d3de-5b02-4d07-9f3c-4b9a7d0e68d6.",
"param": null,
"reason": "invalid_api_key",
"request_id": "3b28d3de-5b02-4d07-9f3c-4b9a7d0e68d6",
"type": "invalid_request_error"
},
"message": "No API key was sent with the request. Nothing was charged. …"
}{
"type": "error",
"error": {
"type": "authentication_error",
"code": "invalid_api_key",
"reason": "invalid_api_key",
"message": "… Nothing was charged. … Request ID: 94ed3e31-4373-41ce-bf8a-0d1ed3f7235e."
},
"request_id": "94ed3e31-4373-41ce-bf8a-0d1ed3f7235e"
}{
"error": {
"code": 401,
"status": "UNAUTHENTICATED",
"message": "The API key is not valid. Nothing was charged. … Request ID: e7aa743b-9d0d-4064-b206-2562609f545b.",
"details": [
{
"@type": "type.googleapis.com/google.rpc.ErrorInfo",
"reason": "INVALID_API_KEY",
"domain": "ailoot.ai",
"metadata": {
"code": "invalid_api_key",
"reason": "invalid_api_key",
"request_id": "e7aa743b-9d0d-4064-b206-2562609f545b"
}
},
{
"@type": "type.googleapis.com/google.rpc.RequestInfo",
"requestId": "e7aa743b-9d0d-4064-b206-2562609f545b"
}
]
}
}Κωδικοί σφαλμάτων
| HTTP | Κλάση (reason) | Τι συνέβη | Τι να κάνετε |
|---|---|---|---|
| 400 | invalid_request | Το αίτημα δεν είναι έγκυρο: λανθασμένο σώμα ή παράμετρος· το μοντέλο δεν υποστηρίζει πεδίο, συνημμένο ή εργαλείο του αιτήματος· το κλειδί δίνεται στη διεύθυνση | Διορθώστε το αίτημα σύμφωνα με το μήνυμα σφάλματος: αφαιρέστε το μη υποστηριζόμενο πεδίο, συνημμένο ή εργαλείο· στείλτε το κλειδί στην κεφαλίδα. Η απόρριψη λόγω μη υποστηριζόμενου πεδίου, συνημμένου ή εργαλείου γίνεται πριν από τη δέσμευση — δεν χρεώνεται τίποτα |
| 400 | context_length_exceeded | Το αίτημα υπερβαίνει το παράθυρο συμφραζομένων του μοντέλου | Συντομεύστε το ιστορικό ή επιλέξτε μοντέλο με μεγαλύτερο παράθυρο συμφραζομένων |
| 400 | content_policy_violation | Το αίτημα απορρίφθηκε βάσει των κανόνων του μοντέλου | Αναδιατυπώστε το αίτημα |
| 401 | invalid_api_key | Το κλειδί λείπει ή είναι λανθασμένο | Ελέγξτε ότι στέλνετε ολόκληρο το κλειδί |
| 401 | api_key_disabled | Το κλειδί είναι απενεργοποιημένο | Ενεργοποιήστε το κλειδί ή δημιουργήστε νέο |
| 402 | insufficient_balance, insufficient_quota | Το διαθέσιμο υπόλοιπο δεν επαρκεί ούτε για την ελάχιστη δέσμευση (insufficient_quota — η ίδια περίπτωση στη μορφή που χρησιμοποιεί το OpenAI SDK) | Ανανεώστε το υπόλοιπο ή μειώστε το max_tokens |
| 402 | api_key_quota_exhausted | Το συνολικό όριο δαπανών του κλειδιού εξαντλήθηκε | Αυξήστε το όριο του κλειδιού στον πίνακα ελέγχου |
| 402 | payment_disputed | Ο λογαριασμός έχει οφειλή από αμφισβητούμενη πληρωμή | Τα νέα αιτήματα έχουν ανασταλεί μέχρι την εξόφληση — επικοινωνήστε με την υποστήριξη |
| 403 | api_key_expired | Το κλειδί έχει λήξει | Δημιουργήστε νέο κλειδί |
| 403 | account_inactive | Ο λογαριασμός σας είναι απενεργοποιημένος | Επικοινωνήστε με την υποστήριξη |
| 403 | permission_denied | Το κλειδί δεν επιτρέπεται να εκτελέσει αυτό το αίτημα (για παράδειγμα, λόγω IP) | Ελέγξτε τους περιορισμούς του κλειδιού |
| 404 | model_not_found | Δεν υπάρχει τέτοιο μοντέλο | Ελέγξτε το ID στο /v1/models |
| 404 | unsupported_endpoint | Το μοντέλο δεν λειτουργεί σε αυτή τη μορφή | Επιλέξτε άλλη μορφή ή μοντέλο |
| 404 | not_found | Δεν υπάρχει τέτοια διαδρομή ή αντικείμενο (για παράδειγμα, εργασία) | Ελέγξτε τη διεύθυνση και το αναγνωριστικό |
| 409 | duplicate_request | Η λειτουργία με το ίδιο κλειδί ιδιοδυναμίας έχει ήδη γίνει δεκτή και ενδέχεται να έχει ολοκληρωθεί | Ελέγξτε το αποτέλεσμα της πρώτης λειτουργίας· μη στείλετε νέα |
| 409 | not_ready, video_not_ready | Το βίντεο ή άλλη εργασία δεν έχει ολοκληρωθεί ακόμη | Ζητήστε την κατάσταση αργότερα |
| 409, 503 | result_pending_check | Το αποτέλεσμα του αιτήματος βρίσκεται υπό έλεγχο. Σε εργασία βίντεο, αυτό δηλώνεται με τη σημαία result_pending_check: true στην απάντηση κατάστασης, ενώ η ίδια η εργασία παραμένει in_progress | Μη στείλετε ξανά το αίτημα — η κατάσταση θα εμφανιστεί στο ιστορικό (GET https://ailoot.ai/api/v1/usage). Μη δημιουργήσετε ξανά την εργασία βίντεο: ελέγξτε την αργότερα μέσω GET /v1/videos/{id} |
| 410 | model_retired | Το μοντέλο αποσύρθηκε από την υπηρεσία | Επιλέξτε νέα έκδοση στο GET /v1/models |
| 413 | request_too_large | Το σώμα του αιτήματος είναι υπερβολικά μεγάλο | Μειώστε τα αρχεία ή το ιστορικό |
| 429 | rate_limit_exceeded, gateway_concurrency_limit, gateway_queue_full | Πάρα πολλά αιτήματα ή ταυτόχρονα αιτήματα από τον λογαριασμό σας | Περιμένετε (κεφαλίδα Retry-After, συνήθως 10 δευτ.) και δοκιμάστε ξανά |
| 429 | usage_limit_reached | Το όριο δαπανών του χρονικού παραθύρου του κλειδιού εξαντλήθηκε (5 ώρες, 1 ημέρα ή 7 ημέρες) | Περιμένετε να ανανεωθεί το χρονικό παράθυρο ή αυξήστε το όριο του κλειδιού |
| 500 | internal_error | Σφάλμα Ailoot | Επικοινωνήστε με την υποστήριξη αναφέροντας το Request ID |
| 502 | invalid_model_response, empty_response, incomplete_response | Το μοντέλο επέστρεψε μη έγκυρη, κενή ή ελλιπή απάντηση | Βρείτε το Request ID στο ιστορικό του πίνακα ελέγχου. Αν υπάρχει εκεί αποτέλεσμα ή χρέωση, η επανάληψη θα δημιουργήσει δεύτερο χρεώσιμο αίτημα. Η απουσία καταχώρισης δεν επιβεβαιώνει ότι το αίτημα δεν έχει σταλεί ή εκτελεστεί: μην επαναλάβετε αποστολή με άγνωστη έκβαση· επικοινωνήστε με την υποστήριξη δίνοντας το Request ID. |
| 502 | result_not_delivered | Το αποτέλεσμα δεν παραδόθηκε με υπαιτιότητα του Ailoot· η δέσμευση ή η χρέωση επιστράφηκε | Μπορείτε να στείλετε ξανά το αίτημα |
| 503 | model_overloaded | Το μοντέλο είναι προσωρινά υπερφορτωμένο | Αν X-Should-Retry: true — δοκιμάστε ξανά μετά από Retry-After δευτερόλεπτα· αν false — ελέγξτε πρώτα το Request ID στο ιστορικό |
| 503 | model_unavailable | Το μοντέλο είναι προσωρινά μη διαθέσιμο | Επιλέξτε άλλο μοντέλο. Αν X-Should-Retry: true — δοκιμάστε ξανά μετά από Retry-After δευτερόλεπτα· αν false — ελέγξτε πρώτα το Request ID στο ιστορικό |
| 503 | service_unavailable | Προσωρινή αποτυχία στην πλευρά του Ailoot | Αν X-Should-Retry: true — δοκιμάστε ξανά μετά από Retry-After δευτερόλεπτα· αν false — ελέγξτε πρώτα το Request ID στο ιστορικό |
| 503 | charge_not_confirmed | Η απάντηση δεν παραδόθηκε: δεν ήταν δυνατή η επιβεβαίωση της χρέωσης· η δέσμευση επιστράφηκε και δεν χρεώθηκαν χρήματα | Αν X-Should-Retry: true — δοκιμάστε ξανά μετά από Retry-After δευτερόλεπτα· αν false — ελέγξτε πρώτα το Request ID στο ιστορικό |
| 504 | model_timeout | Το μοντέλο δεν απάντησε εγκαίρως· το αποτέλεσμα μπορεί ακόμη να εμφανιστεί | Μη στείλετε ξανά το αίτημα προτού ελέγξετε το Request ID στο ιστορικό |
Οι κωδικοί για τις απαντήσεις μοντέλου και τον έλεγχο αποτελέσματος (502, 503 και 504) αναφέρονται πλέον στο μοντέλο ή στο αίτημα: model_unavailable, model_timeout, invalid_model_response, incomplete_response, charge_not_confirmed και result_pending_check. Αν ο κώδικάς σας συγκρίνει το error.code με παλαιότερες τιμές, αντικαταστήστε τις με τους κωδικούς του πίνακα· για την αντιστοίχιση παλαιών και νέων κωδικών θα σας καθοδηγήσει η υποστήριξη.
Πότε να επαναλάβετε το αίτημα
- Ελέγξτε πρώτα το X-Should-Retry: όταν είναι
false,result_pending_checkήmodel_timeoutμην επαναλάβετε αυτόματα το αίτημα. Βρείτε το Request ID στο ιστορικό του πίνακα ελέγχου: εκεί εμφανίζονται το αποτέλεσμα και η χρέωση. - Η επανάληψη είναι ασφαλής όταν λάβετε X-Should-Retry: true: περιμένετε
Retry-Afterδευτερόλεπτα. Για τα 5xx δεν αρκεί μόνο ο κωδικός: το αποτέλεσμα μπορεί να έχει ήδη εμφανιστεί. Ελέγξτε πρώτα το ιστορικό στον πίνακα ελέγχου ή επικοινωνήστε με την υποστήριξη αναφέροντας το Request ID. Αυτό είναι ιδιαίτερα σημαντικό για εικόνες, βίντεο, μουσική και βήματα πρακτόρων που διαρκούν πολύ. - Η επανάληψη δεν βοηθά: 400, 401, 402, 403, 404 — διορθώστε πρώτα το αίτημα, το κλειδί ή το υπόλοιπο.
Όρια
Η συχνότητα και ο αριθμός ταυτόχρονων αιτημάτων περιορίζονται συνολικά για τον λογαριασμό σας, και όχι ανά κλειδί. Αν ξεπεραστούν, επιστρέφεται 429 rate_limit_exceeded με την κεφαλίδα Retry-After: 10. Αν είναι υπερφορτωμένο το ίδιο το μοντέλο — 503 model_overloaded με Retry-After: 30. Αν χρειάζεστε μεγαλύτερο φορτίο, επικοινωνήστε με την υποστήριξη.
Τα όρια δαπανών ορίζονται στο κλειδί: συνολικό όριο — 402 api_key_quota_exhausted, χρονικά παράθυρα 5 ωρών, 1 ημέρας και 7 ημερών — 429 usage_limit_reached. Περισσότερα — Κλειδιά και διεύθυνση API.
Μοντέλα NVIDIA: ουρά
Μπορείτε να ζητήσετε τη λίστα μοντέλων και με μηδενικό υπόλοιπο· για παραγωγή απαιτείται υπόλοιπο για τη δέσμευση. Τα μοντέλα NVIDIA (Nemotron και άλλα) λειτουργούν μέσω κοινής ουράς: σε υψηλό φορτίο, η απάντηση μπορεί να καθυστερήσει ή να επιστραφεί σφάλμα «το μοντέλο είναι προσωρινά υπερφορτωμένο» με κεφαλίδα Retry-After — δοκιμάστε ξανά μετά τον αναφερόμενο χρόνο. Οι τιμές βρίσκονται στον κατάλογο και η χρέωση γίνεται όπως στα άλλα μοντέλα.
Τα όρια μεγέθους καθορίζονται από το μοντέλο: παράθυρο συμφραζομένων (πόσα token μπορείτε να στείλετε) και μέγιστο μήκος απάντησης. Αναφέρονται στον κατάλογο.
Ιστορικό και δαπάνες
Ιστορικό και δαπάνες · GET https://ailoot.ai/api/v1/usage · JWT · Authorization: Bearer $TOKEN
JWT ≠ sk-… · Σύνδεση και συνεδρίες