# Read API yanıt formatı, alan alan

> Read API yanıt formatı: markdown ve word_count'tan final_url ve rendered'a kadar bir sayfa için döndürülen her alan ve iş sonuçları.

- URL: https://webreaderapi.com/tr/docs/response/
- Son güncelleme: 2026-10-22
- Yayıncı: WebReaderAPI (https://webreaderapi.com)

Her `/read` çağrısı tek bir JSON nesnesi döndürür: istediğiniz formatta sayfanın içeriği, meta verileri ve ne olduğunu ve ne kadar tuttuğunu söyleyen üç alan. İş sonuçları aynı nesneyi yeniden kullanır.

**Hızlı yanıt — WebReaderAPI read yanıtı ne içerir?**

Bir **WebReaderAPI** `/read` yanıtı, sayfa içeriğini `markdown` (veya `text` veya `html`) içinde, meta verilerini (`title`, `description`, `author`, `published_at`, `language`, `site_name`, `word_count`) ve getirmenin olgularını (`final_url`, `status_code`, `rendered` ve `credits_used`) içerir. Basit bir sayfa 1 kredi kullanır, Ekim 2026 itibarıyla $0,07/1K sayfa. KYC yok; kripto ile ödeme yapın.

## Hangi alanlar getirmeyi tanımlar?

Bu alanlar başarılı bir yanıtta her zaman bulunur.

| Alan | Tür | Anlamı |
| --- | --- | --- |
| `url` | string | Gönderdiğiniz adres |
| `final_url` | string | Yönlendirmelerden sonra (en fazla 5) gerçekten okunan adres |
| `status_code` | integer (tam sayı) | Sitenin son adres için döndürdüğü HTTP durumu, normalde 200 |
| `fetched_at` | string | Getirme zamanı, UTC olarak ISO 8601 |
| `rendered` | boolean (mantıksal değer) | Sayfayı bir headless tarayıcı oluşturduğunda `true` |
| `credits_used` | integer (tam sayı) | Bu sayfa için faturalanan kredi: 1, tarayıcıyla 2, `country` ile 10; PDF'lerde başlayan her 10 sayfa için 1 |

## Hangi alanlar sayfayı tanımlar?

Metadata sayfanın kendisinden gelir: title etiketi, meta etiketleri, yapılandırılmış verileri ve görünen byline'ı. Sayfanın sağlamadığı bir alan yer almaz, bu yüzden kullanmadan önce olup olmadığını test edin.

| Alan | Tür | Anlamı |
| --- | --- | --- |
| `title` | string | Sayfanın veya makalenin başlığı |
| `description` | string | Sayfanın kendisi hakkında verdiği özet |
| `language` | string | İçeriğin dil kodu, örneğin `en` veya `de` |
| `author` | string | Sayfada belirtilen yazar |
| `published_at` | string | Sayfanın belirttiği yayın tarihi |
| `site_name` | string | Sitenin kendi adı |
| `word_count` | integer (tam sayı) | Döndürülen içerikteki kelimeler, ana içeriği çıkarma sonrasında ve `max_chars` öncesinde |

## İçeriğin kendisi nerede?

Seçtiğiniz `format` adına göre adlandırılmış tek bir içerik alanı döndürülür.

| Alan | Zaman | İçerik |
| --- | --- | --- |
| `markdown` | `format=markdown` (varsayılan) | Markdown içinde başlıklar, paragraflar, listeler, tablolar ve bağlantılar; `include_images=true` ile görseller de dahil |
| `text` | `format=text` | Düz metin, paragraflar boş satırlarla ayrılmış |
| `html` | `format=html` | Ana içeriğin temizlenmiş HTML'i, script, stil veya reklam olmadan |
| `links` | `include_links=true` | Sayfada bulunan bağlantılar için `{url, text}` listesi, mutlak URL'ler |

*Eksiksiz bir yanıt (değerler örnektir)*

```json
{
  "url": "https://example.com/guides/compost",
  "final_url": "https://example.com/guides/compost-at-home",
  "status_code": 200,
  "fetched_at": "2026-10-22T10:02:44Z",
  "rendered": false,
  "credits_used": 1,
  "title": "Compost at home: a beginner's guide",
  "description": "What to put in a compost bin, and what to leave out.",
  "language": "en",
  "author": "Sam Rivera",
  "published_at": "2026-09-14",
  "site_name": "Example Garden",
  "markdown": "# Compost at home: a beginner's guide\n\nA compost bin turns kitchen scraps into soil...\n\n## What goes in\n\n- Fruit and vegetable peels\n- Coffee grounds\n\nSee also [Choosing a bin](https://example.com/guides/bins).",
  "word_count": 1184,
  "links": [
    { "url": "https://example.com/guides/bins", "text": "Choosing a bin" }
  ]
}
```

## İşlenmiş bir sayfayı düz olandan nasıl ayırt ederim?

`rendered` seçeneğine bakın. `render=auto` ile API önce ham HTML'i okur; yalnızca bu HTML çok az metin içerdiğinde bir tarayıcı başlatır ve ardından `rendered` değerini `true`, `credits_used` değerini de 2 olarak ayarlar. Sık sık okuduğunuz bir site her zaman işlenmiş olarak dönüyorsa, baştan `render=true` gönderin: maliyet aynıdır ve boşa giden ilk adımı atlarsınız.

Bir sayfa işlenmemiş ama içerik bakımından zayıf dönüyorsa, `word_count` değerini tarayıcıda gördüğünüzle karşılaştırın. Düşük bir sayı genellikle içeriğin JavaScript gerektirdiği anlamına gelir; `render=true` ile bir kez yeniden deneyin.

## final_url neden url'den farklı olabilir?

Çünkü siteler yönlendirme yapar. Kısa bir bağlantı, eski bir adres, eksik bir son eğik çizgi ya da bir dil geçişi sizi başka bir yere gönderir. API en fazla 5 yönlendirmeyi izler ve en son okuduğu adresi `final_url` içinde bildirir.

Bir RAG dizininde bir belgenin kanonik kaynağı olarak `final_url` saklayın. Aynı `final_url` ile sonuçlanan iki farklı `url` değeri aynı sayfadır, bu yüzden gömme işleminden önce kopyayı çıkarabilirsiniz.

## Bir job sonucu nasıl görünür?

`GET https://webreaderapi.com/api/v1/jobs/{job_id}`, `job_id`, `status` (`queued`, `running` veya `done`), `results`, `next_cursor` ve job'ın çalışma sırasındaki `credits_used` döndürür. `results` içindeki her öğe şu iki biçimden biridir:

- okunan bir sayfa için, yukarıda açıklandığı gibi eksiksiz bir `/read` yanıtı;
- okunmayan bir sayfa için `{url, error}`, burada `error` bir [API hatası](https://webreaderapi.com/tr/docs/errors/) ile aynı `code` ve `message` değerlerine sahiptir.

Daha fazla sonuç hazır olduğunda `next_cursor` bulunur; bunları almak için `cursor` olarak geri gönderin. [Toplu iş ve tarama sayfası](https://webreaderapi.com/tr/docs/crawl/) eksiksiz bir yoklama döngüsü içerir.

*Bir job sonucu sayfası (değerler örnektir)*

```json
{
  "job_id": "job_5c1e8a90d2",
  "status": "done",
  "results": [
    { "url": "https://example.com/blog/post-1", "final_url": "https://example.com/blog/post-1", "status_code": 200, "rendered": false, "credits_used": 1, "title": "Post one", "markdown": "# Post one\n\n...", "word_count": 802 },
    { "url": "https://example.org/members/area", "error": { "code": "target_refused", "message": "The site refused the request.", "target_status": 403 } }
  ],
  "credits_used": 1
}
```

## Bir hata yanıtı nasıl görünür?

Bir hata, 400 veya üzeri bir HTTP durum kodu ve `{"error": {"code", "message"}}` biçiminde bir JSON gövdesiyle döner. Site isteğin kendisini reddettiğinde, `target_status` sitenin gönderdiği durum kodunu verir. Hiçbir hata faturalandırılmaz. [Hatalar sayfası](https://webreaderapi.com/tr/docs/errors/) her kodu nedeniyle ve yeniden denemenin yardımcı olup olamayacağıyla birlikte listeler.

## Yanıt biçimi: sık sorulan sorular

### max_chars ayarını yaptığımda Markdown kesiliyor mu?

Evet. content alanı belirtilen karakter sayısında durur. `word_count` yine de çıkarılan içeriğin tamamını tanımlar, böylece ne kadarının dışarıda bırakıldığını görebilirsiniz.

### author veya published_at neden eksik?

Çünkü sayfa bunu okunabilecek bir biçimde belirtmez. Birçok sayfa yazar veya tarih vermez. Eksik alanlar boş döndürülmek yerine atlanır.

### Markdown içindeki bağlantılar mutlak mı?

`links` listesindeki bağlantılar mutlaktır. Kodunuzu Markdown gövdesinde her iki biçimi de kabul edecek şekilde yazın ve göreli olanları `final_url` temelinde çözümleyin.

### Tüm sayfanın ham HTML'ini alabilir miyim?

En yakın seçenek, `main_content=false` ile birlikte `format=html` kullanmaktır; bu, tüm sayfayı script ve stillerden temizlenmiş olarak döndürür. Orijinal bayt bayt HTML v1'in bir parçası değildir.

---

WebReaderAPI: WebReaderAPI, AI ajanları için bir web reader API'sidir; herkese açık herhangi bir web sayfasını temiz Markdown'a dönüştürür ve kimlik yüklemeden kripto ile ödenir. $0,07/1K sayfa başlangıçlı ön ödemeli kreditler asla süresi dolmaz ve robots.txt'e uyulur. KYC yok — kimlik yok, selfie yok, belge yok. Kripto ile ödeme yapın.
