# Format respons: setiap field pencarian, dijelaskan

> Format respons Search API: setiap field /search dan /extract, delapan nilai content_status dan target_status, dengan contoh lengkap. Tanpa KYC, bayar kripto.

- URL: https://llmwebsearch.com/id/docs/response/
- Terakhir diperbarui: 2026-10-22
- Penerbit: LLMWebSearch (https://llmwebsearch.com)

Jawaban pencarian adalah satu objek JSON: beberapa field tentang pemanggilan, lalu array `results` yang diperingkat. Setiap hasil menyatakan apakah halamannya dibaca, dan jika ya membawa kontennya. Berikut setiap field, dengan status yang harus ditangani agen.

**Jawaban singkat — Apa yang dikembalikan LLMWebSearch API untuk sebuah pencarian?**

**LLMWebSearch** mengembalikan JSON dengan `query`, `created_at`, `credits_used` dan array `results` yang diperingkat. Setiap hasil memiliki posisi, judul, URL, host dan snippet, serta `content_status`; ketika `ok`, konten utama halaman ada di `content` dengan `word_count`. Satu pencarian dengan hingga 3 halaman dibaca berbiaya 1 kredit, mulai dari US$1,20/1K pencarian per Oktober 2026. Tanpa KYC; bayar dengan kripto.

## Field mana yang mendeskripsikan pemanggilan?

Tingkat teratas dari respons `/search`.

| Field | Tipe | Arti |
| --- | --- | --- |
| `query` | string | Kueri seperti yang kami jalankan, setelah spasi dirapikan |
| `created_at` | string | Kapan pencarian dijalankan, ISO 8601 dalam UTC |
| `credits_used` | integer | Berapa biaya pemanggilan: 1, atau 2 ketika `read` bernilai 4 hingga 10 |
| `results` | array | Hasil yang diperingkat, terbaik lebih dulu, maksimal `max_results` item |

## Field apa saja yang dibawa setiap hasil?

Field yang tidak disediakan oleh halaman atau hasil pencarian akan dihilangkan, bukan dikirim kosong.

| Field | Tipe | Saat ada | Arti |
| --- | --- | --- | --- |
| `position` | integer | Selalu | Peringkat dalam pencarian, dimulai dari 1 |
| `title` | string | Selalu | Judul hasil |
| `url` | string | Selalu | Alamat halaman |
| `host` | string | Selalu | Nama host halaman, berguna untuk pengelompokan atau sitasi |
| `snippet` | string | Selalu | Kutipan singkat yang ditampilkan oleh pencarian |
| `published_at` | string | Ketika tanggal diketahui | Tanggal publikasi dari halaman atau hasil pencarian |
| `content_status` | string | Selalu | Apakah halaman dibaca, dan jika tidak, mengapa |
| `content` | string | Ketika `content_status` adalah `ok` | Konten utama sebagai Markdown atau teks biasa, dipotong pada `max_chars` |
| `word_count` | integer | Ketika `content_status` adalah `ok` | Kata-kata dalam seluruh teks yang diekstrak, dihitung sebelum pemotongan |
| `target_status` | integer | Dengan `target_refused` | Status HTTP yang dijawab situs, seperti 403 atau 429 |

## Apa arti setiap content_status?

Tidak satu pun dari ini mengubah harga pencarian. Ini menjelaskan satu halaman, bukan seluruh panggilan.

| `content_status` | Arti | Apa yang harus dilakukan agen |
| --- | --- | --- |
| `ok` | Halaman telah dibaca; `content` berisi teks utamanya | Gunakan dan kutip `url` |
| `not_requested` | Hasilnya melebihi jumlah `read` | Naikkan `read`, atau baca melalui `/extract` jika perlu |
| `blocked_by_robots` | robots.txt situs tidak mengizinkan pembaca kami pada halaman ini | Andalkan snippet atau sumber lain |
| `blocked_by_site_policy` | Situs mendeklarasikan `Content-Signal: ai-input=no` | Andalkan snippet atau sumber lain |
| `target_refused` | Situs menolak permintaan; lihat `target_status` | Jangan coba ulang halaman; gunakan sumber lain |
| `fetch_failed` | Kesalahan DNS, TLS atau koneksi, atau halaman sudah tidak ada | Coba hasil lain; percobaan ulang nanti mungkin berhasil |
| `fetch_timeout` | Halaman tidak menjawab dalam 15 detik | Coba hasil lain; percobaan ulang nanti mungkin berhasil |
| `unsupported_content` | Tautan adalah file yang tidak dapat kami ubah menjadi teks | Gunakan snippet atau hasil lain |

## Seperti apa respons lengkapnya?

Contoh di bawah meminta 5 hasil dengan 4 hasil pertama dibaca, sehingga memakan 2 kredit. Hasil 1 dan 3 dibaca. Hasil 2 milik situs yang robots.txt-nya menghalangi pembaca kami, hasil 4 menolak permintaan, dan hasil 5 berada di luar `read`. Judul, URL dan nilai hanya sebagai ilustrasi.

*Respons POST /search (ilustrasi)*

```json
{
  "query": "how to rotate api keys without downtime",
  "created_at": "2026-10-22T10:15:04Z",
  "credits_used": 2,
  "results": [
    {
      "position": 1,
      "title": "Rotating API keys",
      "url": "https://docs.example.com/security/key-rotation",
      "host": "docs.example.com",
      "snippet": "Create a second key, deploy it everywhere, then revoke the first one.",
      "published_at": "2026-09-30",
      "content_status": "ok",
      "content": "# Rotating API keys\n\n## Zero-downtime rotation\n\n1. Create a second key.\n2. Deploy it to every service.\n3. Revoke the old key.",
      "word_count": 948
    },
    {
      "position": 2,
      "title": "Key rotation checklist",
      "url": "https://blog.example.org/key-rotation-checklist",
      "host": "blog.example.org",
      "snippet": "Keep two keys active during the switch and alert on the old one.",
      "content_status": "blocked_by_robots"
    },
    {
      "position": 3,
      "title": "Secrets management basics",
      "url": "https://security.example.net/secrets-basics",
      "host": "security.example.net",
      "snippet": "Never commit keys to a repository.",
      "content_status": "ok",
      "content": "# Secrets management basics\n\n**Never** commit keys to a repository.",
      "word_count": 1310
    },
    {
      "position": 4,
      "title": "Key management service guide",
      "url": "https://cloud.example.com/kms-guide",
      "host": "cloud.example.com",
      "snippet": "Store keys in a managed vault and rotate them on a schedule.",
      "content_status": "target_refused",
      "target_status": 403
    },
    {
      "position": 5,
      "title": "API key best practices",
      "url": "https://dev.example.com/api-key-best-practices",
      "host": "dev.example.com",
      "snippet": "Scope each key to one service and one environment.",
      "content_status": "not_requested"
    }
  ]
}
```

## Hasil mana yang mendapat status halaman selain not_requested?

Hanya `read` hasil pertama, dan setiap item dari panggilan `/extract`. Itulah halaman yang benar-benar dicoba oleh reader kami. Semua yang setelah jumlah `read` tetap `not_requested`, apa pun yang seharusnya dijawab oleh situs tersebut.

Urutannya tidak pernah berubah: reader memproses posisi 1, 2, 3, dan seterusnya, tidak pernah memproses hasil yang lebih belakang sebagai ganti hasil sebelumnya yang gagal. Jika sebuah agent membutuhkan pengganti untuk halaman yang ditolak, ia dapat membaca hasil berikutnya melalui `/extract`.

## Seperti apa respons extract?

`/extract` mengembalikan `credits_used` dan array `results` sesuai urutan URL yang Anda kirim. Setiap item memiliki `url` dan `content_status`; dengan `ok` ditambahkan `title`, `content`, dan `word_count`, dan dengan `target_refused` ditambahkan `target_status`. Tidak ada `position`, `host`, atau `snippet`, karena tidak ada pencarian yang dijalankan.

[Referensi extract](https://llmwebsearch.com/id/docs/extract/) menampilkan contoh lengkap dan menjelaskan cara kreditnya dihitung.

## Bagaimana cara mengubah hasil menjadi konteks untuk model?

Beri nomor pada sumber, simpan URL di samping masing-masing, dan berikan hanya yang dibutuhkan model. Tata letak yang ringkas berfungsi baik: `[1] title — url`, lalu konten halaman tersebut, lalu sumber berikutnya. Minta model mengutip dengan nomor yang sama.

Jika suatu hasil tidak memiliki konten, berikan snippet-nya kepada model dan nyatakan bahwa itu hanya snippet. Ini menghindari jawaban yang dibangun dari halaman yang tidak pernah dilihat model. [Halaman Python](https://llmwebsearch.com/id/docs/python/) memiliki loop singkat yang melakukan semua ini dalam batas token.

## Format respons: pertanyaan umum

### Apakah konten selalu Markdown?

Markdown secara default. Kirim `format: "text"` untuk mendapatkan teks biasa tanpa markup, misalnya saat Anda hanya menghitung kata atau mengklasifikasikan halaman. Nama field tetap `content`.

### Mengapa published_at tidak ada pada sebagian hasil?

Banyak halaman tidak mencantumkan tanggal, dan sebagian hasil pencarian juga tidak menampilkannya. Dalam kasus tersebut, field ini dihilangkan, jadi periksa keberadaannya sebelum menggunakannya.

### Bisakah field baru muncul nanti?

Ya. Pada versi 1, field dapat ditambahkan tetapi tidak pernah diganti nama atau dihapus. Buat parser Anda mengabaikan field yang tidak dikenalnya.

### Apakah konten disimpan di sisi Anda?

Tidak. Kami tidak melatih model apa pun dengan kueri Anda atau dengan apa yang dikembalikan API, dan kami tidak menambahkan aturan kami sendiri yang melarang penyimpanan hasil; hak situs yang halaman-halamannya Anda baca tetap berlaku. Log permintaan kami hanya menyimpan jejak singkat setiap panggilan, yang dijelaskan di [halaman privasi](https://llmwebsearch.com/id/privacy/).

---

LLMWebSearch: LLMWebSearch adalah API pencarian web untuk agen AI yang mengembalikan hasil berperingkat beserta konten halaman teratas dalam Markdown, dibayar dengan kripto tanpa unggah ID. Kredit prabayar mulai dari US$1,20/1K pencarian tidak pernah kedaluwarsa. Tanpa KYC — tanpa ID, tanpa selfie, tanpa dokumen. Bayar dengan kripto.
