# Resep curl dan jq untuk web search API

> Web search API dengan curl dan jq: cari, daftar sumber, simpan halaman jadi Markdown, filter berita dan domain. Tanpa KYC, bayar dengan kripto.

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

Setiap fitur API berfungsi dari terminal. Resep ini menggunakan `curl` untuk memanggilnya dan `jq` untuk membentuk JSON: berguna untuk menguji kueri sebelum dikodekan, untuk shell script dan untuk cron job.

**Jawaban singkat — Bagaimana cara menggunakan web search API dari command line?**

Kirim body JSON dengan `curl -d` ke `https://llmwebsearch.com/api/v1/search`, kunci Anda di header `Authorization: Bearer`, lalu pipe jawabannya ke `jq`. **LLMWebSearch** mengembalikan hasil berperingkat dengan 3 halaman teratas sebagai Markdown, sehingga satu baris dapat mendaftar sumber atau menyimpan halaman ke file. Satu pencarian berbiaya 1 kredit, mulai dari US$1,20/1K pencarian per Oktober 2026. Tanpa KYC; bayar dengan kripto.

## Bagaimana cara menyiapkan terminal sekali saja?

Export kunci Anda di shell, agar tidak muncul di perintah yang Anda ketik dan di history Anda. Resep di bawah membacanya sebagai `$LLMWEBSEARCH_API_KEY`. Anda juga perlu `jq`, yang dipasang sebagian besar package manager dengan nama tersebut.

Semua resep mengasumsikan shell POSIX seperti bash atau zsh. Di Windows, Git Bash atau WSL menjalankannya tanpa perubahan.

*Atur kunci dan cek saldo Anda (gratis)*

```bash
export LLMWEBSEARCH_API_KEY="your-key"

curl -s "https://llmwebsearch.com/api/v1/credits" \
  -H "Authorization: Bearer $LLMWEBSEARCH_API_KEY" | jq .
```

## Bagaimana cara mendaftar sumber dari sebuah pencarian?

Jalankan pencarian dengan `read` diatur ke `0` dan cetak satu baris per hasil: posisi, host dan URL. Itu berbiaya 1 kredit dan menunjukkan kepada Anda, dalam satu detik, sumber apa saja yang muncul dari sebuah pertanyaan. Ini cara yang baik untuk menyetel susunan kata kueri sebelum agent menggunakannya.

*Satu baris per hasil*

```bash
curl -s "https://llmwebsearch.com/api/v1/search" \
  -H "Authorization: Bearer $LLMWEBSEARCH_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"q": "postgres connection pool size", "max_results": 10, "read": 0}' \
  | jq -r '.results[] | "\(.position)\t\(.host)\t\(.url)"'
```

## Bagaimana cara menyimpan halaman yang telah dibaca?

Pertahankan hasil yang `content_status`-nya bernilai `ok` dan tulis setiap `content` ke file-nya sendiri. Resep di bawah menyimpan `01.md`, `02.md` dan seterusnya, masing-masing dimulai dengan URL sumbernya. jq memilih hasil dan loop shell menulis file-nya.

*Simpan setiap halaman sebagai Markdown*

```bash
curl -s "https://llmwebsearch.com/api/v1/search" \
  -H "Authorization: Bearer $LLMWEBSEARCH_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"q": "postgres connection pool size", "read": 3}' > search.json

jq -r '.results[] | select(.content_status == "ok") | .position' search.json | while read -r pos; do
  jq -r --argjson p "$pos" '.results[] | select(.position == $p) | "Source: " + .url + "\n\n" + .content' \
    search.json > "$(printf '%02d' "$pos").md"
done
ls -1 ./*.md
```

## Bagaimana cara mencari berita dari beberapa situs?

Tambahkan `topic`, `time_range` dan `include_domains` ke body. Resep ini menyimpan berita dari minggu lalu di dua domain dan mencetak tanggal di samping setiap judul, cukup untuk memantau sebuah topik dari cron job.

*Berita minggu lalu dari dua domain*

```bash
curl -s "https://llmwebsearch.com/api/v1/search" \
  -H "Authorization: Bearer $LLMWEBSEARCH_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"q": "database security release", "topic": "news", "time_range": "week", "include_domains": ["news.example.com", "example.org"], "read": 0}' \
  | jq -r '.results[] | "\(.published_at // "no date")  \(.title)  \(.url)"'
```

## Bagaimana cara menggunakan bentuk GET?

Gunakan `curl -G` dengan `--data-urlencode` untuk kueri, sehingga spasi dan simbol dikodekan untuk Anda. Daftar seperti `include_domains` menjadi satu nilai yang dipisahkan koma. GET berguna untuk uji cepat; script yang berkembang sebaiknya beralih ke POST.

*GET /search*

```bash
curl -sG "https://llmwebsearch.com/api/v1/search" \
  -H "Authorization: Bearer $LLMWEBSEARCH_API_KEY" \
  --data-urlencode "q=pgbouncer transaction mode" \
  -d read=1 -d max_chars=3000 -d include_domains=example.com,example.org \
  | jq -r '.results[0].content // .results[0].snippet'
```

## Bagaimana cara membaca URL yang sudah saya punya?

Post ke `/extract` sebagai array JSON berisi 1 hingga 20 alamat. Membaca halaman yang URL-nya sudah Anda miliki dikenakan 1 kredit untuk setiap grup 3 halaman yang mulai dikembalikan beserta kontennya, hingga 20 URL per panggilan; URL yang ditolak atau gagal tidak dihitung. Resep ini mencetak setiap URL dengan status dan jumlah katanya, yang sekilas menunjukkan halaman mana yang diizinkan situs untuk kami baca.

*POST /extract*

```bash
curl -s "https://llmwebsearch.com/api/v1/extract" \
  -H "Authorization: Bearer $LLMWEBSEARCH_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"urls": ["https://docs.example.com/security/key-rotation", "https://example.com/changelog"]}' \
  | jq -r '"credits: \(.credits_used)", (.results[] | "\(.content_status)\t\(.word_count // 0)\t\(.url)")'
```

## Bagaimana cara melihat error saat panggilan gagal?

Cetak status HTTP dengan `-w` dan pertahankan body: error dikembalikan sebagai JSON dengan `code` dan `message`. Skrip kemudian dapat bercabang berdasarkan status, misalnya menunggu dan mencoba ulang hanya pada `429`, `502`, atau `504`. Tidak ada error ini yang memakai kredit.

*Status code dan body error*

```bash
status=$(curl -s -o body.json -w '%{http_code}' "https://llmwebsearch.com/api/v1/search" \
  -H "Authorization: Bearer $LLMWEBSEARCH_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"q": "test query"}')
if [ "$status" != "200" ]; then
  echo "HTTP $status: $(jq -r '.error.code + " - " + .error.message' body.json)"
fi
```

## curl: pertanyaan umum

### Mengapa body JSON saya gagal dengan invalid_parameter?

Biasanya masalah quoting. Bungkus body dengan tanda kutip tunggal di bash agar tanda kutip ganda di dalamnya tetap utuh, dan periksa dengan `echo '…' | jq .` sebelum mengirim.

### Bisakah saya meneruskan API key di URL?

Bisa, dengan `-d api_key=…` pada form GET. Header lebih aman, karena riwayat shell dan log proxy mencatat URL.

### Apakah panggilan curl yang gagal memakan kredit?

Tidak. Error HTTP tidak pernah memakai kredit. Hanya pencarian yang mengembalikan hasil yang ditagih, seperti ditunjukkan `credits_used`.

---

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.
