NUapakah ini dibuat AI?

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.
Contoh gambar publik
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.

Multipart
curl "$BASE_URL/assets/check" \
  -H "Authorization: Bearer $API_KEY" \
  -F "file=@./sample.jpg" \
  -F "client_asset_id=asset-001" \

Bentuk JSON
{
  "client_asset_id": "asset-001",
  "thumb_jpeg_base64": "<base64 omitted>",

}

Kolom permintaan

KolomTipeWajib / arti
fileJPEG/PNGGambar multipart kecuali sidik jarinya cocok
thumb_jpeg_base64stringJPEG resolusi rendah dalam JSON kecuali sidik jarinya cocok
client_asset_idstringReferensi pemanggil / penanda idempotensi, opsional
frame_sha256 / frame_phashstringSidik jari persis / perseptual, opsional
booleanOpsional; true secara bawaan, false mengantrekan inferensi baru

Contoh respons

200 JSON
{
  "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.
Pekerjaan selesai
{"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.
Buat tinjauan
curl "$BASE_URL/reviews" \
  -H "Authorization: Bearer $API_KEY" \
  -F "file=@./sample.jpg" \
  -F "declared_ai_use=unknown" \
  -F "supplier=Example supplier"

JSON keputusan
{"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

StatusArti
200 / 204Selesai atau dihapus
400Masukan tidak sah atau tidak didukung
401 / 403Kunci hilang, kunci tidak sah, atau cakupan tidak memadai
404Sumber daya tenant tidak ditemukan
413Unggahan melebihi batas maksimum yang disetel
422Validasi JSON bertipe gagal
429Batas laju per kunci terlampaui
503Ketergantungan 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.