FastPaste API

FastPaste REST API v1

البدء

تتيح لك FastPaste API إنشاء وعرض وحذف الـ paste برمجياً.

مطلوب مفتاح API لاستخدام الـ API. تواصل مع المسؤول للحصول عليه.

المصادقة

تتطلب جميع طلبات API الرأس X-API-Key:

X-API-Key: lq_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

Base URL

https://fastpaste.xyz/api/v1

تنسيق الاستجابة

جميع الردود بتنسيق JSON:

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

POST /api/v1/paste

ينشئ paste جديداً.

Paste نصي (JSON)

المعاملالنوعمطلوبالوصف
contentstringنعممحتوى الـ paste (الحد الأدنى 3، الحد الأقصى 4.00 MB)
titlestringلاعنوان الـ paste
descriptionstringلاالوصف (الحد الأقصى 500 حرف)
expirystringلاالمدة: 10m, 30m, 1h, 3h, 6h, 12h, 1d, 2d, 3d, 1w, 2w, 1m, never (الافتراضي: 1d)
passwordstringلاحماية بكلمة مرور
burnbooleanلاعرض لمرة واحدة ثم حذف. إذا كانت القيمة true، يُحذف الـ paste تلقائيًا بعد أول عرض (الافتراضي: false).
encryptbooleanلاتشفير طرفي. إذا كانت القيمة true، يجب أن يكون المحتوى نصًا مشفّرًا من جهة العميل بصيغة "fpe1:..." (انظر قسم E2E). الافتراضي: false.
keystringلامفتاح فك التشفير بصيغة base64url. اختياري؛ يُستخدم فقط لإلحاق #المفتاح بالرابط المُعاد ولا يُخزَّن على الخادم أبدًا. اتركه فارغًا للإبقاء على المفتاح بالكامل من جهة العميل.
downloadablebooleanلايجعل الـ paste المشفّر طرفيًا قابلًا للتنزيل (الافتراضي: false). يُستخدم مع encrypt=true؛ في الـ paste غير المشفّر لا تأثير له وتتضمن الاستجابة تحذيرًا (الـ paste غير المشفّر قابل للتنزيل دائمًا على أي حال).
languagestringلالغة إبراز الصياغة (مثل python أو javascript). تُكتشف تلقائيًا إذا أُغفلت؛ في التشفير الطرفي تُخزَّن للإبراز بعد فك التشفير.
publicbooleanلاإذا كانت true، يُدرَج الـ paste في الأرشيف العام وخريطة الموقع. القيمة الافتراضية false. يُتجاهَل عند استخدام كلمة مرور أو الحذف بعد القراءة أو التشفير.
slugstringلاعنوان قصير مخصّص (مثل «ملاحظاتي» ← /view/ملاحظاتي). إذا كان مُستخدَمًا، يُخصَّص عنوان مشابه.
مثال على الطلب (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 }'
الاستجابة (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 } }

رفع ملف (multipart/form-data)

المعاملالنوعمطلوبالوصف
filefileنعمالملف المراد رفعه (الحد الأقصى 10.00 MB)
descriptionstringلاوصف الملف
expirystringلامدة الصلاحية
passwordstringلاحماية بكلمة مرور
burnbooleanلاعرض لمرة واحدة ثم حذف. إذا كانت القيمة true، يُحذف الـ paste تلقائيًا بعد أول عرض (الافتراضي: false).
encryptbooleanلاتشفير طرفي. إذا كانت القيمة true، يجب أن يكون المحتوى نصًا مشفّرًا من جهة العميل بصيغة "fpe1:..." (انظر قسم E2E). الافتراضي: false.
keystringلامفتاح فك التشفير بصيغة base64url. اختياري؛ يُستخدم فقط لإلحاق #المفتاح بالرابط المُعاد ولا يُخزَّن على الخادم أبدًا. اتركه فارغًا للإبقاء على المفتاح بالكامل من جهة العميل.
downloadablebooleanلايجعل الـ paste المشفّر طرفيًا قابلًا للتنزيل (الافتراضي: false). يُستخدم مع encrypt=true؛ في الـ paste غير المشفّر لا تأثير له وتتضمن الاستجابة تحذيرًا (الـ paste غير المشفّر قابل للتنزيل دائمًا على أي حال).
مثال (ملف عبر cURL)
curl -X POST https://fastpaste.xyz/api/v1/paste \ -H "X-API-Key: lq_your_api_key_here" \ -F "[email protected]" \ -F "expiry=1w"

التشفير الطرفي (E2E)

شفّر المحتوى من جانبك باستخدام AES-GCM (256 بت)، ثم أرسل النص المشفّر بوصفه content. يخزّن الخادم البيانات المشفّرة فقط ولا يرى النص الصريح أبدًا. تُستخدم الصيغة نفسها المستخدمة في واجهة الويب.

صيغة النص المشفّر: fpe1:<base64(iv)>:<base64(النص المشفّر)> — حيث iv قيمة عشوائية بطول 12 بايت ويتضمن النص المشفّر وسم GCM.

لا يُخزَّن مفتاح فك التشفير على الخادم أبدًا. إذا أرسلت المعامل الاختياري key، فإن الـ url المُعاد يتضمنه بصيغة #المفتاح ويكون الرابط قابلًا للاستخدام مباشرة؛ يُستخدم المفتاح لبناء الرابط فقط ولا يُخزَّن. للحصول على E2E أكثر صرامة، احذف key وألحق جزء #المفتاح بالرابط بنفسك.
التنزيل: الـ paste المشفّر طرفيًا غير قابل للتنزيل افتراضيًا (تعيد /download الرمز 403 وتكون download_url بقيمة null في الاستجابة). إذا أُنشئ بـ downloadable=true فإن /download يقدّم المحتوى المشفّر "fpe1:..." (فك تشفيره بنفسك بمفتاحك)؛ أما زر التنزيل في صفحة العرض فيفك تشفير المحتوى في المتصفح باستخدام #المفتاح ويُنزّله نصًا صريحًا.
إذا أُرسل downloadable=true مع paste غير مشفّر (encrypt=false)، يُقبل الطلب مع ذلك، لكن الاستجابة تتضمن حقل "warning".
مثال على الطلب (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" }'
الاستجابة (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}

يجلب تفاصيل ومحتوى الـ paste.

لا يمكن استرداد الـ paste المحمية بكلمة مرور عبر API.
تُحذف الـ paste ذات العرض لمرة واحدة نهائيًا مباشرة بعد أول استرداد ناجح، سواء عبر هذه الواجهة أو عبر /raw.
مثال على الطلب (cURL)
curl https://fastpaste.xyz/api/v1/paste/aB3cD4eF5g \ -H "X-API-Key: lq_your_api_key_here"
الاستجابة (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}

يحدّث paste موجودًا (فقط ما يخص مفتاح API هذا). أرسل الحقول التي تريد تغييرها فقط: content (نص فقط) وtitle وdescription وexpiry وburn وpassword وlanguage وdownloadable. إذا كان المحتوى "fpe1:..." فأضف encrypt وkey.

مثال على الطلب (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" }'
الاستجابة (200 OK)
{ "error": false, "message": "Paste updated successfully.", "data": { "paste_id": "aB3cD4eF5g", "url": "https://fastpaste.xyz/view/aB3cD4eF5g", "encrypted": false } }

GET /api/v1/pastes

يسرد ملفات paste المُنشأة بمفتاح API هذا (الأحدث أولًا). ترقيم الصفحات: page وlimit (1–100).

مثال على الطلب (cURL)
curl "https://fastpaste.xyz/api/v1/pastes?page=1&limit=20" \ -H "X-API-Key: lq_your_api_key_here"
الاستجابة (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 كنص عادي. مناسب للسكريبتات والأتمتة.

مثال
curl https://fastpaste.xyz/api/v1/paste/aB3cD4eF5g/raw \ -H "X-API-Key: lq_your_api_key_here"

الاستجابة: Content-Type: text/plain

DELETE /api/v1/paste/{id}

يحذف الـ paste. يمكن حذف الـ paste التي أنشئت بنفس مفتاح API فقط.

مثال
curl -X DELETE https://fastpaste.xyz/api/v1/paste/aB3cD4eF5g \ -H "X-API-Key: lq_your_api_key_here"
الاستجابة (200 OK)
{"error": false, "message": "Paste deleted."}

POST /api/v1/cli

أنشئ paste بسرعة من سطر الأوامر (curl). أرسل المحتوى كجسم طلب خام من stdin أو كحقل نموذج (content/paste/f:1). الاستجابة الافتراضية هي رابط بنص عادي.

مفتاح API اختياري: يعمل بدون مفتاح بشكل مجهول (حد معدل حسب IP + فحص المحتوى). عند تقديم مفتاح يُنسب الاستخدام إليه. يمكن تعطيل الوصول المجهول من لوحة الإدارة.

المعامل

المعاملالنوعمطلوبالوصف
(gövde)raw / formنعممحتوى paste. للجسم الخام يُنصح باستخدام text/plain (للحفاظ على = و&).
expirystringلاالمدة: 10m, 30m, 1h, 3h, 6h, 12h, 1d, 2d, 3d, 1w, 2w, 1m, never (الافتراضي: 1d)
titlestringلاعنوان الـ paste
langstringلالغة إبراز الصياغة (مثل python أو javascript). تُكتشف تلقائيًا إذا أُغفلت؛ في التشفير الطرفي تُخزَّن للإبراز بعد فك التشفير.
burnbooleanلاعرض لمرة واحدة ثم حذف. إذا كانت القيمة true، يُحذف الـ paste تلقائيًا بعد أول عرض (الافتراضي: false).
مثال على الطلب (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
الاستجابة
https://fastpaste.xyz/view/aB3cD4eF5g

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

امتدادات الملفات المسموح بها

.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

تخضع الملفات للتحقق من الامتداد ونوع MIME. تُقبل ملفات النص والكود فقط.

حدود المعدل

يمكن تحديد حدود معدل منفصلة لكل مفتاح API:

نوع الحدالوصف
الحد الساعيالحد الأقصى للطلبات في الساعة (0 = غير محدود)
الحد اليوميالحد الأقصى للطلبات في اليوم
الحد الشهريالحد الأقصى للطلبات في الشهر

عند تجاوز الحد، يُعاد الرد 429 Too Many Requests.

رموز الخطأ

الرمزالمعنى
400طلب غير صالح (معامل مفقود أو خاطئ)
401مفتاح API مفقود
403مفتاح API غير صالح/غير نشط أو تم رفض الوصول
404الـ paste غير موجود أو منتهي الصلاحية
405طريقة HTTP غير مسموح بها
413حجم الملف كبير جداً
429تجاوز حد المعدل
500خطأ في الخادم
503API معطّل

إشعارات Webhook

يمكن تهيئة URL webhook منفصل لكل مفتاح API. يُرسَل طلب POST عند إنشاء paste جديد:

{ "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

تواصل مع المسؤول للحصول على مفتاح API أو زيادة حدك.

تواصل مع المسؤول