Referensi API · Beta terbuka
Bangun dengan konteks.
Panduan klien yang praktis untuk gambar, teks, pekerjaan, dan berkas tinjauan.
API pemeriksa publik
Pemeriksa situs gratis memanggil endpoint yang aman untuk browser tanpa kunci API tenant. Gambar dan teks tidak memiliki kuota pemindaian harian atau bulanan. Batas ukuran media, piksel terdekode, jumlah bingkai, dan validasi tetap berlaku. Permintaan memerlukan izin tepat berupa Origin.
POST /v1/public/image-checkMultipart JPEG/PNG, maksimal 4 MB dan 25 juta piksel terdekode.GET /v1/public/jobs/{job_id}Polling pekerjaan gambar dengan header tertutup X-Job-Token.POST /v1/public/feedbackKirim umpan balik hasil gambar seminimal mungkin memakai token hasil yang telah ditandatangani.curl --fail-with-body -sS https://api.isthisaigenerated.app/v1/public/image-check \
-H 'Origin: https://isthisaigenerated.app' \
-F 'file=@./photo.jpg'
# A fresh image queues. The reply then carries job_id and job_token; poll with the
# token in the header until status is "completed", starting about a second later.
curl --fail-with-body -sS https://api.isthisaigenerated.app/v1/public/jobs/JOB_ID \
-H 'Origin: https://isthisaigenerated.app' \
-H 'X-Job-Token: JOB_TOKEN'Hasilnya adalah sinyal peringatan, bukan bukti asal-usul. Lihat referensi Swagger langsung, atau unduh OpenAPI JSON untuk skema permintaan dan respons, header, serta kode kesalahan.
Pemeriksaan gambar
POST /v1/assets/check menerima JSON dengan JPEG base64 atau multipart dengan berkas JPEG/PNG.
curl "$BASE_URL/assets/check" \
-H "Authorization: Bearer $API_KEY" \
-F "file=@./sample.jpg" \
-F "client_asset_id=asset-001" \{
"client_asset_id": "asset-001",
"thumb_jpeg_base64": "<base64 omitted>",
}Kolom permintaan
| Kolom | Tipe | Wajib / arti |
|---|---|---|
file | JPEG/PNG | Gambar multipart kecuali sidik jarinya cocok |
thumb_jpeg_base64 | string | JPEG resolusi rendah dalam JSON kecuali sidik jarinya cocok |
client_asset_id | string | Referensi pemanggil / penanda idempotensi, opsional |
frame_sha256 / frame_phash | string | Sidik jari persis / perseptual, opsional |
| boolean | Opsional; true secara bawaan, false mengantrekan inferensi baru |
Contoh respons
{
"asset_id": "asset_example", "job_id": null, "status": "known",
"label": "possible_synthetic_indicators", "score": 0,84,
"confidence": null, "thresholds": {"possible_synthetic_indicators": 0,8},
"source": "model", "model": "active-model-version",
"cached": false, "ttl_seconds": 86400
}Penanda dan angka di sini menggambarkan skemanya; itu bukan hasil tolok ukur dan bukan keluaran yang dijamin.
Pekerjaan dan aset tersimpan
Inferensi gambar berjalan asinkron: respons awalnya berisi status: processing dan sebuah job_id. Tidak ada mode sinkron — dulu ada kolom sync yang didokumentasikan di sini, tetapi tidak pernah ada yang membacanya.
GET /v1/jobs/{job_id}Polling processing, completed atau failed. Pekerjaan yang selesai memuat result.GET /v1/assets/{asset_id}Ambil hasil lengkap dalam cakupan tenant.{"job_id":"job_example","status":"completed","result":{"asset_id":"asset_example","status":"known","label":"possible_synthetic_indicators"}}Kebijakan klien yang dianjurkan: polling setelah 1, 2, 4, 8 lalu 10 detik; batasi setiap jeda berikutnya pada 10 detik dan berhenti setelah 60 detik atau saat completed/failed. Saat ini server tidak menjamin batas waktu itu dan tidak menyediakan webhook atau kontrak Retry-After .
Siklus peninjauan manusia
POST /v1/reviewsMultipart file, wajib declared_ai_use, pemasok dan catatan bersifat opsional.GET /v1/reviewsMenampilkan berkas tenant; belum ada kontrak paginasi selama beta.GET /v1/reviews/{review_id}Ambil satu berkas.POST /v1/reviews/{review_id}/decisionCatat disclose, no_disclosure, reject, atau recheck.GET /v1/reviews/{review_id}/exportEkspor JSON.DELETE /v1/reviews/{review_id}Hapus; berhasil berarti 204.curl "$BASE_URL/reviews" \
-H "Authorization: Bearer $API_KEY" \
-F "file=@./sample.jpg" \
-F "declared_ai_use=unknown" \
-F "supplier=Example supplier"{"decision":"disclose","reviewer":"reviewer@example.invalid","rationale":"Disclosure selected after source and detector review."}Respons tinjauan memuat review_id, status pending/completed, hash konten, nama berkas, pernyataan, asal-usul, detektor, keputusan opsional, kebijakan, serta cap waktu dibuat/diperbarui. Ia tidak pernah menolak atau menerbitkan konten secara otomatis.
Status HTTP
| Status | Arti |
|---|---|
| 200 / 204 | Selesai atau dihapus |
| 400 | Masukan tidak sah atau tidak didukung |
| 401 / 403 | Kunci hilang, kunci tidak sah, atau cakupan tidak memadai |
| 404 | Sumber daya tenant tidak ditemukan |
| 413 | Unggahan melebihi batas maksimum yang disetel |
| 422 | Validasi JSON bertipe gagal |
| 429 | Batas laju per kunci terlampaui |
| 503 | Ketergantungan produksi atau worker belum siap |
Kesalahan memakai {"detail":"error_code"}; misalnya {"detail":"invalid_api_key"}. Setiap respons memuat X-Request-ID. Pengiriman gambar asinkron saat ini tetap mengembalikan respons endpoint biasa dengan status: processing; jangan berasumsi HTTP 202.
