ID formulir

Error

Setiap kode error yang dikembalikan Ikiform, beserta status HTTP, penyebab, dan solusinya.

Kiriman formulir dan REST API memakai satu envelope error yang sama. Request JSON mendapatkannya dengan status HTTP yang sesuai; kiriman formulir dari browser mendapat halaman error hosted dengan pesan dan status yang sama.

Envelope error

Error
{
  "ok": false,
  "error": {
    "code": "rate_limited",
    "message": "Too many requests. Please slow down."
  },
  "request_id": "req_01k7v2c9t3e8m5q4x6z0a1b2c3"
}
  • error.code stabil; jadikan acuan percabangan. error.message berupa bahasa Inggris biasa untuk manusia dan bisa berubah.
  • error.fields ada pada error validasi, diberi key berdasarkan ID field, masing-masing dengan daftar pesan. Error tentang seluruh body memakai key _form.
  • error.challenge_url ada pada challenge_required.
  • request_id sama dengan header X-Request-Id yang dibawa setiap respons.
  • Respons yang terkena rate limit membawa Retry-After dalam detik. Kedua header bisa dibaca dari kode browser.

Kode

400 invalid_body

PesanThe request body could not be read.
PenyebabJSON atau multipart yang rusak, array atau string JSON alih-alih objek, atau idempotency key lebih dari 255 karakter.
SolusiKirim satu objek JSON, atau biarkan browser atau FormData yang menyusun body.

400 invalid_request

PesanThe request is invalid.
Penyebablimit, status, form_id, atau cursor tidak valid. Pesannya menyebut parameternya.
SolusiGunakan limit 1 sampai 100, status received atau spam, ID frm_ yang nyata, dan cursor persis seperti yang dikembalikan.

401 unauthorized

PesanA valid API key is required.
PenyebabTidak ada header Authorization, bukan Bearer token, atau key yang tidak dikenal, dicabut, atau kedaluwarsa.
SolusiKirim Authorization: Bearer ik_sk_... dengan secret key yang aktif.

402 plan_required

PesanThis form isn't accepting submissions right now.
PenyebabWorkspace tidak punya paket aktif. Ini hanya bisa terjadi setelah penagihan diaktifkan.
SolusiPilih paket di dashboard pada Settings.

403 forbidden

PesanYou do not have access to this resource.
PenyebabKunci API salah format, milik workspace lain, berupa publishable key di REST API, atau tidak punya scope yang dibutuhkan.
SolusiGunakan secret key dari workspace ini dengan scope yang disebut di pesan.

403 origin_not_allowed

PesanThis form does not accept submissions from this site.
PenyebabKiriman berasal dari situs di luar domain yang diizinkan formulir dan formulir menolak ketidakcocokan, atau publishable key dipakai dari domain yang tidak tercantum di key.
SolusiTambahkan situs ke Allowed domains atau ke domain key. Untuk kiriman dari server, gunakan secret key.

403 form_paused

PesanThis form is not accepting submissions right now.
PenyebabFormulir dijeda di dashboard.
SolusiLanjutkan formulir.

403 captcha_failed

PesanThe captcha check failed. Please try again.
PenyebabToken Turnstile tidak ada, kedaluwarsa, sudah dipakai, atau gagal diverifikasi.
SolusiAmbil token baru untuk setiap kiriman. Dengan key Anda sendiri, pastikan site key cocok dengan secret-nya.

403 challenge_required

PesanComplete the human check, then send the form again.
PenyebabFormulir memakai pemeriksaan manusia Ikiform dan kiriman JSON tiba tanpa token.
SolusiPanggil challenge(formId) dari SDK dan berikan tokennya, atau gunakan error.challenge_url. Kiriman dari server bisa mengirim secret key sebagai gantinya.

404 not_found

PesanNot found.
PenyebabFormulir tidak ada, sudah dihapus atau dinonaktifkan, atau ID atau route-nya salah. Juga dikembalikan untuk GET ke /f/<formId>.
SolusiSalin endpoint dari ringkasan formulir, dan kirim POST alih-alih membukanya di tab.

405 method_not_allowed

PesanThis method is not allowed here.
PenyebabPreflight browser pada REST API, yang hanya untuk server ke server.
SolusiPanggil /api/v1 dari backend Anda.

409 idempotency_in_progress

PesanA request with this idempotency key is still being processed.
PenyebabRequest dengan idempotency key ini masih diproses.
SolusiTunggu sebentar dan coba ulang dengan key yang sama; Anda akan mendapat respons pertama.

413 payload_too_large

PesanThe submission is too large.
PenyebabBody, nama field, nilai, atau jumlah field melewati batasnya. Pesannya menyebut yang mana.
SolusiLihat Batas. Pecah teks panjang ke beberapa field atau simpan file di tempat lain dan kirim tautannya.

415 unsupported_media_type

PesanSend the form as urlencoded, multipart or JSON.
PenyebabContent-Type bukan urlencoded, multipart, atau JSON, atau tidak ada.
SolusiAtur Content-Type: application/json saat mengirim JSON.

415 unsupported_charset

PesanOnly UTF-8 is supported.
PenyebabBody bukan UTF-8, atau mendeklarasikan charset lain.
SolusiEncode sebagai UTF-8. Tambahkan accept-charset="utf-8" ke formulir HTML lama.

422 validation_failed

PesanSome fields are invalid.
PenyebabField gagal validasi. error.fields memetakan ID field ke pesan.
SolusiTampilkan pesan di samping field. Lihat Field.

422 files_not_supported

PesanFile uploads are not supported yet.
PenyebabKiriman berisi file. Unggah file belum tersedia.
SolusiHapus input file, atau unggah file di tempat lain dan kirim tautannya.

422 too_deep

PesanThe JSON body is nested too deeply.
PenyebabBody JSON bertingkat lebih dari 3 level, termasuk objek teratas.
SolusiRatakan datanya, misalnya { "address_city": "London" }.

422 idempotency_mismatch

PesanThis idempotency key was already used with a different payload.
PenyebabIdempotency key ini sudah dipakai untuk formulir ini dalam 24 jam terakhir dengan field yang berbeda.
SolusiGunakan key baru untuk data baru. Pakai key yang sama hanya untuk percobaan ulang yang persis sama.

429 rate_limited

PesanToo many requests. Please slow down.
PenyebabMelewati rate limit. Retry-After menyebut berapa detik harus menunggu.
SolusiTunggu dan coba ulang. Jika pengunjung sungguhan mengalaminya, ubah rate limit formulir.

429 quota_exceeded

PesanThis form isn't accepting submissions right now.
PenyebabWorkspace menerima 2 kali batas kiriman bulanannya bulan ini.
SolusiUpgrade, atau tunggu bulan berikutnya. Lihat Pemakaian bulanan.

500 server_error

PesanSomething went wrong on our side.
PenyebabAda yang gagal di pihak Ikiform.
SolusiCoba ulang dengan backoff dan idempotency key. Jika terus terjadi, sertakan request_id.

Bukan error

  • Spam mendapat 201 atau redirect yang sama seperti kiriman asli. Cari di filter spam di dashboard.
  • _redirect yang tidak diizinkan akan diabaikan, dan browser mendarat di halaman terima kasih hosted.
  • _replyto yang bukan satu alamat email valid akan diabaikan.

Mencoba ulang

  • Coba ulang 429 setelah Retry-After, dan 500, 409, atau error jaringan dengan backoff. Kirim idempotency key agar percobaan ulang tidak pernah membuat duplikat.
  • Jangan coba ulang error 4xx lain tanpa perubahan. Perbaiki request-nya terlebih dahulu.