Felo API PlatformFelo API Platform

Panduan

Ralat, had dan cubaan semula

Baca respons ralat dan pengepala had kadar, cuba semula dengan selamat dan diagnosis kegagalan biasa.

Setiap Felo API mengembalikan badan ralat JSON dengan kod ralat yang stabil dan ID permintaan. Baca status HTTP dahulu, kemudian kod, kemudian mesej.

Sampul ralat

Respons pengeluaran semasa menggunakan status HTTP sebagai status:

{
  "status": 401,
  "code": "UNAUTHORIZED",
  "message": "Invalid API Key",
  "request_id": "202610221444486982113280416060637185"
}
MedanMaksud
statusKod status HTTP, diulang dalam badan
codeKod ralat boleh dibaca mesin
messagePenjelasan boleh dibaca manusia
request_idPengecam legap untuk permintaan ini; sertakannya dalam permintaan sokongan

Beberapa contoh endpoint lama menggunakan status: "error" dan rentetan kod yang berbeza. Cabang berdasarkan status HTTP dan code, bukan pada perkataan tepat message.

Kod biasa

HTTPKodMaksudnyaApa yang perlu dilakukan
400Kod pengesahan khusus endpointParameter hilang atau tidak sahBetulkan permintaan; jangan cuba semula tanpa perubahan
401UNAUTHORIZEDKunci API hilang, tidak sah, tamat tempoh, atau dibatalkanHantar Authorization: Bearer $FELO_API_KEY; putar kunci jika dibatalkan
402INSUFFICIENT_CREDITSKredit perkhidmatan tidak mencukupiTambah nilai dalam Console Billing, kemudian cuba semula
404Khusus endpointModel, tugasan, atau laluan tidak diketahuiSemak ID model atau ID tugasan dan laluan endpoint
429RATE_LIMITEDHad kadar telah dilampauiTunggu Retry-After, kemudian cuba semula
5xxCHAT_FAILED, *_FAILED, SERVICE_UNAVAILABLEKegagalan huluan atau perkhidmatanCuba semula dengan backoff; hubungi sokongan jika berterusan

Rujukan endpoint menyenaraikan kod khusus untuk endpoint tersebut. Mulakan dengan ralat Chat API atau rujukan untuk endpoint yang anda panggil.

Endpoint penjanaan model

POST /api/v1/images/generations dan POST /api/v1/videos/generations mengembalikan ralat peringkat endpoint dalam sampul OpenAI dan bukannya sampul di atas:

{
  "error": {
    "message": "Model kind does not match this generation endpoint",
    "type": "invalid_request_error",
    "param": null,
    "code": "model_kind_mismatch"
  }
}

ID permintaan berada dalam pengepala respons X-Request-Id, bukan dalam badan. Permintaan yang ditolak tidak mencipta tugasan. Sebaik sahaja tugasan wujud, kebanyakan kegagalan tiba sebagai status tugasan terminal dalam respons 200 dan bukannya ralat HTTP: semak status untuk failed atau interrupted, kemudian baca error.message. Lihat Penjanaan Imej dan Tugasan Tak Segerak.

ID permintaan

Badan ralat Felo termasuk request_id. Log ia bersama endpoint, status HTTP, kod ralat, ID model, dan ID tugasan. Jangan sekali-kali log kunci API penuh.

Model API juga menerima pengepala permintaan X-Request-Id pilihan. Apabila anda menghantarnya, ia dipantulkan semula untuk diagnostik, yang membolehkan anda mengaitkan log anda sendiri dengan permintaan. Jika anda tidak menghantarnya, gunakan request_id yang dikembalikan.

Had kadar

/v2/chat ialah satu-satunya endpoint Felo dengan had kadar dikuatkuasakan yang didokumentasikan:

  • Setiap kunci API, tetingkap 1 minit.
  • Setiap pengguna, tetingkap 1 minit.
  • Setiap pengguna, tetingkap 1 jam.

Pengguna dengan langganan Felo berbayar yang berkesan, termasuk langganan perusahaan, dikecualikan dan tidak menerima pengepala X-RateLimit-*. Jika status langganan tidak dapat disahkan, had masih terpakai.

PengepalaMaksud
X-RateLimit-LimitHad dimensi paling ketat yang sedang berkuat kuasa
X-RateLimit-RemainingKuota baki minimum merentas tiga dimensi
X-RateLimit-ResetCap masa Unix dalam saat apabila tetingkap semasa ditetapkan semula
Retry-AfterPada 429, kelewatan yang disyorkan dalam saat

Endpoint /v2/** lain pada masa ini tiada had kadar yang dikuatkuasakan. Permintaan Model API masih boleh dihadkan oleh penyedia huluan, yang boleh muncul sebagai 429.

Jangan hardcode had berangka. Baca pengepala pada setiap respons.

Dasar cubaan semula

KeadaanCuba semula?
400, 401, 402, 404Tidak. Betulkan permintaan, kunci, atau baki terlebih dahulu.
429Ya, selepas Retry-After atau X-RateLimit-Reset.
5xx, tamat masa, set semula sambunganYa, dengan backoff eksponen dan jitter.
Sambungan penstriman terputus di tengah responsCuba semula hanya jika aplikasi anda boleh menerima penjanaan pendua.

Gelung yang disyorkan:

  1. Cuba semula hanya permintaan idempoten atau selamat diulang.
  2. Gunakan backoff eksponen: mulakan sekitar 1 saat, gandakan, hadkan pada 30 saat.
  3. Tambahkan jitter rawak supaya klien tidak mencuba semula serentak.
  4. Berhenti selepas bilangan percubaan yang kecil dan dedahkan ralat.
  5. Pada 429, hormati Retry-After dan bukannya jadual anda sendiri.

Urutan nyahpepijat

  1. Semak bahawa kunci wujud dan tidak dibatalkan.
  2. Panggil GET /api/v1/models dengan kunci yang sama untuk mengesahkan pengesahan.
  3. Hantar permintaan sah terkecil ke endpoint sasaran.
  4. Tambahkan penstriman, alat, atau input besar satu demi satu.
  5. Untuk kerja tak segerak, semak status tugasan sebelum menghantar semula.

Berkaitan