انتقل إلى المحتوى

توثيق واجهة Fileverity API

كشف النصوص

صنّف النص العادي بوصفه مكتوبًا بالذكاء الاصطناعي أو مختلطًا أو كتبه إنسان باستخدام POST /text/detections. حقول الطلب والاستجابة، وإزاحات المقاطع، والحدود، والفوترة.

عرض بصيغة Markdownآخر تحديث: 2026-11-04

يُجري POST /text/detections فحص نص واحد. يصنّف النص العادي بنموذج fvdoc-3-text ويعيد الفقرات المكتوبة بالذكاء الاصطناعي. وهو متزامن: النتيجة في الاستجابة نفسها.

تقرأ الأمثلة النص من ملف، لذا احفظ أي فقرة من 100 كلمة أو أكثر باسم essay.txt أولًا. ويتضمن البدء السريع أمرًا يكتب نصًا تجريبيًا.

curl https://api.fileverity.com/v1/text/detections \  -H "Authorization: Bearer $FILEVERITY_API_KEY" \  -H "Content-Type: application/json" \  -H "Idempotency-Key: 6b9d1c1e-3b0f-4c0a-9a53-2d1c9d6b7e11" \  -d "$(jq -Rs '{text: ., language: "en"}' essay.txt)"

محتوى الطلب

الحقلالنوعمطلوبالوصف
textstringنعمنص عادي لا يقل عن 100 كلمة ولا يزيد على 100,000 حرف.
modelstringلاالافتراضي fvdoc-3-text. يقبل معرّف النموذج أو معرّف نسخته المؤرَّخة fvdoc-3-text-2026-11-03.
languagestring أو nullلارمز ISO 639-1: en وfr وde وes وzh. يُكتشف تلقائيًا عند عدم تحديده.

تُرفض الحقول غير المعروفة برمز الخطأ invalid_parameter. وعند التحقق من الحد الأدنى البالغ 100 كلمة، يُحتسب كل حرفين صينيين تقريبًا ككلمة واحدة.

الاستجابة

{  "id": "tdet_8Hk2pQ4vN9sL1xR7cW3mY6zB",  "object": "text.detection",  "created": 1793664000,  "model": "fvdoc-3-text-2026-11-03",  "livemode": true,  "language": "en",  "verdict": "mixed",  "score": 0.97,  "ai_fraction": 0.41,  "segments": [    {      "start": 212,      "end": 433,      "score": 0.97    },    {      "start": 579,      "end": 790,      "score": 0.93    }  ],  "usage": {    "characters": 1412,    "free_characters": 0,    "billed_units": 2  }}
الحقلالنوعالوصف
idstringمعرّف الكشف، ويبدأ بالبادئة tdet_.
objectstringدائمًا text.detection.
createdintegerطابع زمني بصيغة Unix.
modelstringالنسخة المؤرَّخة التي أنتجت النتيجة.
livemodebooleanfalse لمفاتيح الاختبار.
languagestringاللغة المستخدمة: التي أرسلتها، أو التي اكتُشفت.
verdictstringai: يبدو النص مكتوبًا بالذكاء الاصطناعي من أوله إلى آخره. mixed: فقرات مكتوبة بالذكاء الاصطناعي داخل نص كتبه إنسان. human: لم يُعثر على أي فقرة مكتوبة بالذكاء الاصطناعي.
scorenumberمن 0 إلى 1. درجة النموذج لأكثر الفقرات شبهًا بالنص المكتوب بالذكاء الاصطناعي.
ai_fractionnumberمن 0 إلى 1. نسبة النص المُقيَّم الواقعة داخل المقاطع المكتوبة بالذكاء الاصطناعي.
segmentsarrayالفقرات المكتوبة بالذكاء الاصطناعي. لكل منها start وend (موضع النهاية غير مشمول) وscore.
usageobjectcharacters الأحرف التي جرى تقييمها، وfree_characters الأحرف التي غطّاها رصيد البدء المجاني، وbilled_units الوحدات المحتسبة فعليًا بعد الأحرف المجانية.

يعيد كشف النص تقديرًا إحصائيًا وليس دليلًا على هوية كاتب النص. وحدود المقاطع تقريبية. استخدمه مُدخلًا واحدًا في مراجعة بشرية، ولا تعتمد عليه وحده في اتخاذ قرارات تمس شخصًا.

إزاحات المقاطع

start وend إزاحتان في النص الذي أرسلته، تُحسبان بنقاط ترميز Unicode، لا بالبايتات ولا بوحدات UTF-16. وحدود المقاطع تقريبية وقد تشمل جملًا مجاورة. تُفهرَس سلاسل JavaScript بوحدات UTF-16، لذا قسّم النص إلى نقاط ترميز أولًا:

const points = Array.from(text);for (const { start, end } of detection.segments) {  console.log(points.slice(start, end).join(""));}

تُفهرَس سلاسل Python أصلًا بنقاط الترميز.

الفوترة

  • يُحتسب النص بسعر ⁦US$ 0.14⁩ لكل 1,000 حرف، وتُعدّ الأحرف بنقاط ترميز Unicode. ويُقرَّب كل طلب إلى الأعلى إلى وحدات كاملة، بحد أدنى وحدة واحدة.
  • تُستخدم أحرف النص المجانية من رصيد البدء المجاني أولًا، وتظهر في usage.free_characters. وusage.billed_units هو عدد الوحدات المحتسبة بعدها، فتكون التكلفة billed_units مضروبًا في ⁦US$ 0.14⁩. مثال: 1,412 حرفًا دون أحرف مجانية متبقية يُحتسب عليها وحدتان، أي ⁦US$ 0.28⁩.
  • لا تُحتسب رسوم على الطلبات المرفوضة قبل التقييم: المعلمات غير الصالحة، والنص القصير جدًا أو الطويل جدًا، واللغات غير المدعومة وما شابه. وإذا فشل الفحص داخل الخدمة (service_unavailable) فيُحرَّر المبلغ المحجوز ولا يُحتسب عليك.
  • عند عدم كفاية الرصيد يُعاد الخطأ insufficient_balance (402).

ما الذي يُخزَّن

يُقيَّم النص ثم يُحذف. ولا يُخزَّن أبدًا، لذلك لا يمكن استرجاعه لاحقًا.

تحتفظ Fileverity بالنتيجة دون النص (الحكم والدرجات وإزاحات الفقرات والاستخدام) مدة 7 أيام، حتى تعرضها لوحة التحكم ويمكن احتساب الاستخدام وتدقيقه. ويحصل الطلب المُعاد الذي يحمل Idempotency-Key نفسه على النتيجة المحفوظة خلال 24 ساعة. عمليات كشف النصوص متزامنة: فلا تظهر في GET /analyses ولا تُرسل أحداث Webhook. ولا تسجّل مفاتيح الاختبار شيئًا. راجع الاحتفاظ بالبيانات والأمان.

الأخطاء

الرمزالحالةالسبب
text_too_short400أقل من 100 كلمة.
text_too_long413أكثر من 100,000 حرف. قسّم النص إلى عدة طلبات.
unsupported_language400اللغة غير مدعومة، أو تعذّر اكتشافها.
unsupported_media_type415لم يُرسل محتوى الطلب بصيغة application/json.
invalid_json400محتوى الطلب ليس كائن JSON.
missing_parameter400الحقل text مفقود.
invalid_parameter400نوع أحد الحقول خاطئ، أو أُرسل حقل غير معروف، أو Idempotency-Key غير صالح.
model_not_found404قيمة model غير معروفة.
insufficient_balance402الرصيد لا يغطي الطلب.
spend_limit_reached402بلغ المفتاح حد إنفاقه الشهري.
idempotency_mismatch, idempotency_in_progress409استُخدم Idempotency-Key مع محتوى طلب مختلف، أو لا يزال طلبه الأول قيد التنفيذ.
service_unavailable, analysis_failed503, 502خدمة الكشف غير متاحة مؤقتًا أو مشغولة. لا تُحتسب رسوم؛ أعد المحاولة. يحمل service_unavailable ترويسة retry-after.

أرسل Idempotency-Key حتى لا تؤدي إعادة المحاولة بعد انتهاء المهلة إلى احتساب الرسم مرتين. راجع Idempotency.