Tekrar Hoş Geldiniz

Belgelerinize ve imzalarınıza erişmek için giriş yapın

veya e-posta ile devam edin
Şifrenizi mi unuttunuz?
API v1 · Kararlı

WHAT A PDF! Geliştirici API

Uygulamanızdan büyük ölçekte PDF işleyin. Bearer token kimlik doğrulaması ve plan başına hız sınırlarıyla temiz bir REST arayüzü üzerinden sıkıştırın, birleştirin, bölün ve OCR yapın.

Hızlı başlangıç

İlk API çağrınıza üç adım.

  1. API anahtarınızı şuradan oluşturun: Hesap › API Anahtarları
  2. v1 uç noktalarından birine Authorization: Bearer başlığı ile multipart/form-data POST gönderin.
  3. JSON yanıtını inceleyin — başarılı çağrılar 15 dakika geçerli imzalı bir indirme URL'si döndürür.

Temel URL

https://whatapdf.com/api/v1

Kimlik doğrulama

Her istek, API anahtarınızı Bearer token olarak içeren bir Authorization başlığına sahip olmalıdır.

Authorization: Bearer pdn_live_a1b2c3d4e5f6...
Canlı anahtarlarınızı gizli tutun. Onlara şifre gibi davranın. Kaynak kontrolüne asla göndermeyin ve istemci tarafı kodda ifşa etmeyin.

Anahtar biçimleri

  • pdn_live_<32 hex> — Üretim anahtarı. Planınızın hız sınırına dahildir.
  • pdn_test_<32 hex> — Test anahtarı. Aynı hız sınırı; loglarda ortamları ayırt etmek için yararlıdır.

Hız sınırları

Hız sınırları, kullanıcı başına, 1 saatlik yuvarlanan pencere üzerinden hesaplanır. Her yanıt, yeniden denemeleri planlayabilmeniz için X-RateLimit-* başlıklarını içerir.

Planİstek / saat
Free10
Premium1,000
Business5,000
EnterpriseSınırsız

Yanıt başlıkları

  • X-RateLimit-Limit — Planınızın saatlik üst sınırı.
  • X-RateLimit-Remaining — Geçerli penceredeki kalan çağrılar.
  • X-RateLimit-Reset — Pencerenin sıfırlanacağı Unix zaman damgası.
  • Retry-After — Beklenmesi gereken saniye; yalnızca 429 yanıtlarında gönderilir.

Hatalar

Tüm hatalar, kararlı bir kod ve okunabilir mesajla JSON olarak döndürülür.

{
  "error": {
    "code": "rate_limited",
    "message": "Rate limit exceeded for your plan (free: 10/hour)."
  },
  "meta": { "request_id": "8f9a2b3c1d4e5f6a" }
}

Hata kodları

CodeHTTPAnlam
unauthorized401Eksik, geçersiz veya iptal edilmiş API anahtarı.
rate_limited429Planınız için saatlik hız sınırı aşıldı.
invalid_input400İstek gövdesi veya parametreleri doğrulamadan geçemedi.
payload_too_large413Dosya veya birleşik yük planınızın boyut sınırını aşıyor.
internal_error500Beklenmedik sunucu hatası. Backoff ile yeniden denemek güvenli.

POST /compress

Mümkün olduğunda Ghostscript, aksi halde FPDI geri dönüşüyle bir PDF'i sıkıştırır. İmzalı bir indirme URL'si döndürür.

POSThttps://whatapdf.com/api/v1/compress

Parametreler (multipart/form-data)

AdTürAçıklama
file *fileSıkıştırılacak PDF dosyası.
levelstringSıkıştırma ön ayarı. low, medium, high

Kod örnekleri

curl -X POST https://whatapdf.com/api/v1/compress \
  -H "Authorization: Bearer pdn_live_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" \
  -F "[email protected]" \
  -F "level=medium"
const form = new FormData();
form.append('file', fileInput.files[0]);
form.append('level', 'medium');

const res = await fetch('https://whatapdf.com/api/v1/compress', {
  method: 'POST',
  headers: { 'Authorization': 'Bearer pdn_live_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx' },
  body: form,
});
const json = await res.json();
console.log(json.data.download.url);
import requests

with open('input.pdf', 'rb') as f:
    r = requests.post(
        'https://whatapdf.com/api/v1/compress',
        headers={'Authorization': 'Bearer pdn_live_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'},
        files={'file': f},
        data={'level': 'medium'},
    )
print(r.json())
<?php
$ch = curl_init('https://whatapdf.com/api/v1/compress');
curl_setopt_array($ch, [
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_POST           => true,
    CURLOPT_HTTPHEADER     => ['Authorization: Bearer pdn_live_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'],
    CURLOPT_POSTFIELDS     => [
        'file'  => new CURLFile('input.pdf', 'application/pdf'),
        'level' => 'medium',
    ],
]);
$res = json_decode(curl_exec($ch), true);
curl_close($ch);
print_r($res);

Örnek yanıt

{
  "data": {
    "filename": "report_compressed.pdf",
    "original_size": 5242880,
    "compressed_size": 2621440,
    "savings_percent": 50.0,
    "method": "ghostscript",
    "download": {
      "url": "/api/get-pdf.php?file=...&exp=...&sig=...",
      "expires_in": 900
    }
  },
  "meta": { "request_id": "8f9a2b3c1d4e5f6a" }
}

POST /merge

2–20 PDF'i yükleme sırasıyla tek bir belgede birleştirir.

POSThttps://whatapdf.com/api/v1/merge

Parametreler

AdTürAçıklama
files[] *file[]İki veya daha fazla PDF dosyası (multipart dizisi).

Kod örnekleri

curl -X POST https://whatapdf.com/api/v1/merge \
  -H "Authorization: Bearer pdn_live_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" \
  -F "files[][email protected]" \
  -F "files[][email protected]" \
  -F "files[][email protected]"
const form = new FormData();
for (const f of fileInput.files) form.append('files[]', f);

const res = await fetch('https://whatapdf.com/api/v1/merge', {
  method: 'POST',
  headers: { 'Authorization': 'Bearer pdn_live_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx' },
  body: form,
});
console.log(await res.json());
import requests

files = [
    ('files[]', open('a.pdf', 'rb')),
    ('files[]', open('b.pdf', 'rb')),
    ('files[]', open('c.pdf', 'rb')),
]
r = requests.post(
    'https://whatapdf.com/api/v1/merge',
    headers={'Authorization': 'Bearer pdn_live_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'},
    files=files,
)
print(r.json())
<?php
$ch = curl_init('https://whatapdf.com/api/v1/merge');
curl_setopt_array($ch, [
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_POST           => true,
    CURLOPT_HTTPHEADER     => ['Authorization: Bearer pdn_live_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'],
    CURLOPT_POSTFIELDS     => [
        'files[0]' => new CURLFile('a.pdf', 'application/pdf'),
        'files[1]' => new CURLFile('b.pdf', 'application/pdf'),
        'files[2]' => new CURLFile('c.pdf', 'application/pdf'),
    ],
]);
echo curl_exec($ch);
curl_close($ch);

POST /split

Bir PDF'i sayfa aralıklarına göre bir veya daha fazla parçaya böler. Her parça kendi imzalı indirme URL'si ile döner.

POSThttps://whatapdf.com/api/v1/split

Parametreler

AdTürAçıklama
file *fileKaynak PDF.
ranges *stringVirgülle ayrılmış sayfa aralıkları. Bir aralık = bir çıktı parçası. e.g. 1-3,5,7-9

Kod örnekleri

curl -X POST https://whatapdf.com/api/v1/split \
  -H "Authorization: Bearer pdn_live_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" \
  -F "[email protected]" \
  -F "ranges=1-3,5,7-9"
const form = new FormData();
form.append('file', fileInput.files[0]);
form.append('ranges', '1-3,5,7-9');

const res = await fetch('https://whatapdf.com/api/v1/split', {
  method: 'POST',
  headers: { 'Authorization': 'Bearer pdn_live_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx' },
  body: form,
});
console.log(await res.json());
import requests

with open('input.pdf', 'rb') as f:
    r = requests.post(
        'https://whatapdf.com/api/v1/split',
        headers={'Authorization': 'Bearer pdn_live_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'},
        files={'file': f},
        data={'ranges': '1-3,5,7-9'},
    )
for part in r.json()['data']['parts']:
    print(part['pages'], part['download']['url'])
<?php
$ch = curl_init('https://whatapdf.com/api/v1/split');
curl_setopt_array($ch, [
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_POST           => true,
    CURLOPT_HTTPHEADER     => ['Authorization: Bearer pdn_live_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'],
    CURLOPT_POSTFIELDS     => [
        'file'   => new CURLFile('input.pdf', 'application/pdf'),
        'ranges' => '1-3,5,7-9',
    ],
]);
print_r(json_decode(curl_exec($ch), true));
curl_close($ch);

POST /ocr

Tesseract OCR ile bir görüntüden metin çıkarır. 20'den fazla dili destekler.

POSThttps://whatapdf.com/api/v1/ocr

Parametreler

AdTürAçıklama
image *fileOCR yapılacak görüntü (PNG, JPEG, TIFF, WebP veya BMP).
languagestringTesseract dil kodu. Varsayılan eng

Kod örnekleri

curl -X POST https://whatapdf.com/api/v1/ocr \
  -H "Authorization: Bearer pdn_live_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" \
  -F "[email protected]" \
  -F "language=eng"
const form = new FormData();
form.append('image', imageInput.files[0]);
form.append('language', 'eng');

const res = await fetch('https://whatapdf.com/api/v1/ocr', {
  method: 'POST',
  headers: { 'Authorization': 'Bearer pdn_live_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx' },
  body: form,
});
const { data } = await res.json();
console.log(data.text);
import requests

with open('scan.png', 'rb') as f:
    r = requests.post(
        'https://whatapdf.com/api/v1/ocr',
        headers={'Authorization': 'Bearer pdn_live_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'},
        files={'image': f},
        data={'language': 'eng'},
    )
print(r.json()['data']['text'])
<?php
$ch = curl_init('https://whatapdf.com/api/v1/ocr');
curl_setopt_array($ch, [
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_POST           => true,
    CURLOPT_HTTPHEADER     => ['Authorization: Bearer pdn_live_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'],
    CURLOPT_POSTFIELDS     => [
        'image'    => new CURLFile('scan.png', 'image/png'),
        'language' => 'eng',
    ],
]);
$res = json_decode(curl_exec($ch), true);
echo $res['data']['text'];
curl_close($ch);
Gmail için WHAT A PDF! - Chrome Uzantısı

Gmail'deki PDF eklerini doğrudan WHAT A PDF!'da açın. PDF'lerinizi anında düzenleyin, imzalayın ve dönüştürün!

Ücretsiz Uzantıyı Yükle

Wait — don't miss out!

Subscribe for free PDF tips, new tools, and feature updates delivered to your inbox.

No spam ever. Unsubscribe anytime.