FastPaste API

FastPaste REST API v1

Başlangıç

FastPaste API, programatik olarak paste oluşturma, görüntüleme ve silme işlemleri yapmanızı sağlar.

API kullanmak için bir API anahtarı gereklidir. Anahtar almak için yönetici ile iletişime geçin.

Kimlik Doğrulama

Tüm API isteklerinde X-API-Key başlığı gereklidir:

X-API-Key: lq_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

Base URL

https://fastpaste.xyz/api/v1

Yanıt Formatı

Tüm yanıtlar JSON formatındadır:

{ "error": false, "message": "...", "data": { ... } }

POST /api/v1/paste

Yeni bir paste oluşturur.

Metin Paste (JSON)

ParametreTürZorunluAçıklama
contentstringEvetPaste içeriği (min 3, max 4.00 MB)
titlestringHayırPaste başlığı
descriptionstringHayırAçıklama (max 500 karakter)
expirystringHayırSüre: 10m, 30m, 1h, 3h, 6h, 12h, 1d, 2d, 3d, 1w, 2w, 1m, never (varsayılan: 1d)
passwordstringHayırŞifre koruması
burnbooleanHayırBir kez görüntüle ve sil. true ise paste ilk görüntülemeden sonra otomatik silinir (varsayılan: false).
encryptbooleanHayırUçtan uca şifreleme. true ise içerik istemci tarafında şifrelenmiş "fpe1:..." metni olmalıdır (bkz. E2E bölümü). Varsayılan: false.
keystringHayırBase64url çözme anahtarı. İsteğe bağlı; yalnızca dönen linke #anahtar eklemek için kullanılır ve sunucuya hiç kaydedilmez. Anahtarı tamamen istemcide tutmak için boş bırakın.
downloadablebooleanHayırE2E şifreli paste'in indirilebilir olması (varsayılan: false). E2E aktifken (encrypt=true) kullanılmalıdır; şifresiz paste'lerde etkisi yoktur ve yanıtta uyarı döner (şifresiz paste'ler zaten her zaman indirilebilir).
languagestringHayırSözdizimi vurgulama dili (örn. python, javascript). Verilmezse otomatik algılanır; E2E'de çözüldükten sonra vurgulamak için saklanır.
publicbooleanHayırtrue ise paste herkese açık arşivde ve site haritasında listelenir. Varsayılan false. Parola, burn veya şifreleme kullanılırsa yok sayılır.
slugstringHayırÖzel kısa adres (örn. "notlarim" → /view/notlarim). Doluysa benzeri önerilir.
Örnek İstek (cURL)
curl -X POST https://fastpaste.xyz/api/v1/paste \ -H "Content-Type: application/json" \ -H "X-API-Key: lq_your_api_key_here" \ -d '{ "content": "print(\"Hello, World!\")", "title": "Test Paste", "expiry": "1d", "burn": true }'
Yanıt (201 Created)
{ "error": false, "message": "Paste created successfully.", "data": { "paste_id": "aB3cD4eF5g", "url": "https://fastpaste.xyz/view/aB3cD4eF5g", "raw_url": "https://fastpaste.xyz/raw/aB3cD4eF5g", "download_url": "https://fastpaste.xyz/download/aB3cD4eF5g", "expires_at": "2025-01-02 15:30:00", "sha256": "abc123...", "burn_after_read": true, "encrypted": false, "downloadable": false } }

Dosya Yükleme (multipart/form-data)

ParametreTürZorunluAçıklama
filefileEvetYüklenecek dosya (max 10.00 MB)
descriptionstringHayırDosya açıklaması
expirystringHayırSüre
passwordstringHayırŞifre koruması
burnbooleanHayırBir kez görüntüle ve sil. true ise paste ilk görüntülemeden sonra otomatik silinir (varsayılan: false).
encryptbooleanHayırUçtan uca şifreleme. true ise içerik istemci tarafında şifrelenmiş "fpe1:..." metni olmalıdır (bkz. E2E bölümü). Varsayılan: false.
keystringHayırBase64url çözme anahtarı. İsteğe bağlı; yalnızca dönen linke #anahtar eklemek için kullanılır ve sunucuya hiç kaydedilmez. Anahtarı tamamen istemcide tutmak için boş bırakın.
downloadablebooleanHayırE2E şifreli paste'in indirilebilir olması (varsayılan: false). E2E aktifken (encrypt=true) kullanılmalıdır; şifresiz paste'lerde etkisi yoktur ve yanıtta uyarı döner (şifresiz paste'ler zaten her zaman indirilebilir).
Örnek (cURL ile dosya)
curl -X POST https://fastpaste.xyz/api/v1/paste \ -H "X-API-Key: lq_your_api_key_here" \ -F "[email protected]" \ -F "expiry=1w"

Uçtan Uca Şifreleme (E2E)

İçeriği kendi tarafınızda AES-GCM (256-bit) ile şifreleyin, ardından şifreli metni content olarak gönderin. Sunucu yalnızca şifreli veriyi saklar; düz metni asla göremez. Web arayüzüyle aynı biçim kullanılır.

Şifreli metin biçimi: fpe1:<base64(iv)>:<base64(şifreli veri)> — burada iv 12 baytlık rastgele bir değer, şifreli veri ise GCM etiketini içerir.

Çözme anahtarı sunucuya kaydedilmez. İsteğe bağlı key parametresini gönderirseniz, dönen url anahtarı #anahtar olarak içerir ve link doğrudan kullanılabilir; anahtar yalnızca link oluşturmak için kullanılır, saklanmaz. Daha katı E2E için key göndermeyin ve #anahtar kısmını linke kendiniz ekleyin.
İndirme: E2E paste'ler varsayılan olarak İNDİRİLEMEZ (/download 403 döner ve yanıttaki download_url null olur). downloadable=true ile oluşturulursa /download şifreli "fpe1:..." içeriğini verir (anahtarınızla kendiniz çözersiniz); görüntüleme sayfasındaki İndir düğmesi ise içeriği tarayıcıda #anahtar ile çözüp düz metin olarak indirir.
downloadable=true şifresiz (encrypt=false) bir paste ile gönderilirse istek yine kabul edilir, ancak yanıtta bir "warning" alanı döner.
Örnek İstek (cURL)
curl -X POST https://fastpaste.xyz/api/v1/paste \ -H "Content-Type: application/json" \ -H "X-API-Key: lq_your_api_key_here" \ -d '{ "content": "fpe1:<base64-iv>:<base64-ciphertext>", "encrypt": true, "key": "<base64url-key>", "downloadable": true, "expiry": "1d" }'
Yanıt (201 Created)
{ "error": false, "message": "Paste created successfully.", "data": { "paste_id": "aB3cD4eF5g", "url": "https://fastpaste.xyz/view/aB3cD4eF5g#<base64url-key>", "raw_url": "https://fastpaste.xyz/raw/aB3cD4eF5g", "download_url": "https://fastpaste.xyz/download/aB3cD4eF5g", "expires_at": "2025-01-02 15:30:00", "sha256": "abc123...", "burn_after_read": false, "encrypted": true, "downloadable": true } }

GET /api/v1/paste/{id}

Bir paste'in bilgilerini ve içeriğini getirir.

Şifre korumalı pasteler API üzerinden görüntülenemez.
Bir kez görüntülenir (burn) pasteler, ister bu uç nokta ister /raw üzerinden olsun, ilk başarılı görüntülemeden hemen sonra kalıcı olarak silinir.
Örnek İstek (cURL)
curl https://fastpaste.xyz/api/v1/paste/aB3cD4eF5g \ -H "X-API-Key: lq_your_api_key_here"
Yanıt (200 OK)
{ "error": false, "data": { "paste_id": "aB3cD4eF5g", "title": "Test Paste", "description": null, "content": "print(\"Hello, World!\")", "content_type": "text", "original_filename": null, "language": "python", "file_size": 22, "sha256": "abc123...", "created_at": "2025-01-01 15:30:00", "expires_at": "2025-01-02 15:30:00", "view_count": 5, "burn_after_read": false, "burned": false, "encrypted": false, "downloadable": false } }

PUT /api/v1/paste/{id}

Mevcut bir paste'i günceller (yalnızca bu API anahtarına ait olanlar). Gövdede yalnızca değiştirmek istediğiniz alanları gönderin: content (yalnızca metin), title, description, expiry, burn, password, language, downloadable. content "fpe1:..." ise encrypt ve key ekleyin.

Örnek İstek (cURL)
curl -X PUT https://fastpaste.xyz/api/v1/paste/aB3cD4eF5g \ -H "Content-Type: application/json" \ -H "X-API-Key: lq_your_api_key_here" \ -d '{ "title": "Updated title", "content": "new content", "expiry": "1w" }'
Yanıt (200 OK)
{ "error": false, "message": "Paste updated successfully.", "data": { "paste_id": "aB3cD4eF5g", "url": "https://fastpaste.xyz/view/aB3cD4eF5g", "encrypted": false } }

GET /api/v1/pastes

Bu API anahtarıyla oluşturulmuş paste'leri listeler (en yeni önce). Sayfalama: page ve limit (1–100).

Örnek İstek (cURL)
curl "https://fastpaste.xyz/api/v1/pastes?page=1&limit=20" \ -H "X-API-Key: lq_your_api_key_here"
Yanıt (200 OK)
{ "error": false, "data": [ { "paste_id": "aB3cD4eF5g", "url": "https://fastpaste.xyz/view/aB3cD4eF5g", "title": "Test Paste", "content_type": "text", "language": "python", "file_size": 22, "created_at": "2025-01-01 15:30:00", "expires_at": "2025-01-02 15:30:00", "view_count": 5, "encrypted": false, "downloadable": false } ], "pagination": { "page": 1, "limit": 20, "total": 1, "total_pages": 1 } }

GET /api/v1/paste/{id}/raw

Paste içeriğini düz metin olarak döndürür. Script ve otomasyon için uygundur.

Örnek
curl https://fastpaste.xyz/api/v1/paste/aB3cD4eF5g/raw \ -H "X-API-Key: lq_your_api_key_here"

Yanıt: Content-Type: text/plain

DELETE /api/v1/paste/{id}

Bir paste'i siler. Yalnızca aynı API key ile oluşturulan pasteler silinebilir.

Örnek
curl -X DELETE https://fastpaste.xyz/api/v1/paste/aB3cD4eF5g \ -H "X-API-Key: lq_your_api_key_here"
Yanıt (200 OK)
{"error": false, "message": "Paste deleted."}

POST /api/v1/cli

Komut satırından (curl) hızlı paste oluşturma. İçeriği standart girdiden ham gövde olarak ya da form alanı (content/paste/f:1) olarak gönderebilirsiniz. Varsayılan yanıt düz metin URL'dir.

API anahtarı opsiyoneldir: anahtarsız anonim olarak çalışır (IP rate-limit + içerik taraması). Anahtar verilirse kota o anahtara işlenir. Anonim erişim admin panelinden kapatılabilir.

Parametre

ParametreTürZorunluAçıklama
(gövde)raw / formEvetPaste içeriği. Ham gövde için text/plain önerilir (= ve & karakterleri korunur).
expirystringHayırSüre: 10m, 30m, 1h, 3h, 6h, 12h, 1d, 2d, 3d, 1w, 2w, 1m, never (varsayılan: 1d)
titlestringHayırPaste başlığı
langstringHayırSözdizimi vurgulama dili (örn. python, javascript). Verilmezse otomatik algılanır; E2E'de çözüldükten sonra vurgulamak için saklanır.
burnbooleanHayırBir kez görüntüle ve sil. true ise paste ilk görüntülemeden sonra otomatik silinir (varsayılan: false).
Örnek İstek (cURL)
# stdin → URL (text/plain önerilir) echo "merhaba" | curl -H "Content-Type: text/plain" --data-binary @- https://fastpaste.xyz/api/v1/cli # dosya yükle curl -H "Content-Type: text/plain" --data-binary @app.log https://fastpaste.xyz/api/v1/cli # sprunge/ix.io tarzı echo "merhaba" | curl -F 'f:1=<-' https://fastpaste.xyz/api/v1/cli # seçeneklerle cat x.py | curl -H "Content-Type: text/plain" --data-binary @- 'https://fastpaste.xyz/api/v1/cli?expiry=1w&lang=python' # API anahtarı ile (kota anahtara işlenir) cat x | curl -H "X-API-Key: lq_xxx" -H "Content-Type: text/plain" --data-binary @- https://fastpaste.xyz/api/v1/cli
Yanıt
https://fastpaste.xyz/view/aB3cD4eF5g

Accept: application/json veya ?json=1 ile JSON döner. GET /api/v1/cli kullanım örneklerini gösterir.

İzin Verilen Dosya Uzantıları

.txt .log .json .xml .yaml .yml .ini .cfg .conf .md .csv .sql .js .ts .html .htm .css .py .java .go .rs .c .cpp .h .hpp .lua .rb .jsx .tsx .vue .svelte .scss .sass .less .toml .gitignore .dockerfile .makefile .bat .ps1 .r .swift .kt .kts .scala .pl .pm .tcl .awk .sed .diff .patch .tf .hcl .proto .graphql .tex .bib .rst .adoc .org .wiki .properties .gradle .cmake .mak

Dosyalar hem uzantı hem de MIME tipi kontrolünden geçer. Yalnızca metin/kod dosyaları kabul edilir.

Hız Limitleri

Her API anahtarı için ayrı hız limitleri tanımlanabilir:

Limit TürüAçıklama
Saatlik LimitSaat başına maksimum istek (0 = sınırsız)
Günlük LimitGün başına maksimum istek
Aylık LimitAy başına maksimum istek

Limit aşıldığında 429 Too Many Requests yanıtı döner.

Hata Kodları

KodAnlam
400Geçersiz istek (eksik/hatalı parametre)
401API anahtarı eksik
403Geçersiz/pasif API anahtarı veya erişim reddedildi
404Paste bulunamadı veya süresi dolmuş
405İzin verilmeyen HTTP metodu
413Dosya boyutu çok büyük
429Hız limiti aşıldı
500Sunucu hatası
503API devre dışı

Webhook Bildirimleri

Her API anahtarı için ayrı webhook URL tanımlanabilir. Yeni paste oluşturulduğunda POST isteği gönderilir:

{ "event": "paste_created", "paste_id": "aB3cD4eF5g", "type": "text", "source": "api", "api_key_name": "My App", "url": "https://fastpaste.xyz/view/aB3cD4eF5g", "raw_url": "https://fastpaste.xyz/raw/aB3cD4eF5g", "download_url": "https://fastpaste.xyz/download/aB3cD4eF5g", "expires_at": "2025-01-02 15:30:00", "created_at": "2025-01-01 15:30:00", "ip": "1.2.3.4" }

API Anahtarı Almak İçin

API anahtarı almak veya limitinizi artırmak için yönetici ile iletişime geçin.

Yönetici ile İletişim