# البدء السريع

> أنشئ مساحة عمل ومفتاح API ونفّذ أول فحص لنص وأول فحص لصورة باستخدام cURL أو JavaScript fetch أو Python requests.

المصدر: https://fileverity.com/ar/docs/quickstart

تنقلك هذه الصفحة من التسجيل إلى أول نتائجك. تحتاج إلى حساب في Fileverity وإلى طرفية فيها curl وjq، وإلى ملف JPEG أو PNG أو WebP لمثال الصورة.

## 1. افتح لوحة التحكم

سجّل الدخول عبر [fileverity.com/console](https://fileverity.com/console?lang=ar) برمز يصلك بالبريد الإلكتروني أو عبر Google. ينشئ أول تسجيل دخول لك مساحة عمل شخصية برصيدها المدفوع مسبقًا.

تبدأ مساحة عملك الأولى بعدد 5 من فحوصات الصور أو المستندات المجانية، إضافةً إلى 5,000 حرف نصي مجاني. لا حاجة إلى بطاقة. رصيد بدء مجاني واحد لكل شخص، وعدد محدود لكل نطاق بريد إلكتروني لشركة. على زملاء الفريق الانضمام عبر دعوة. يُستخدم رصيد البدء المجاني قبل رصيدك. راجع [الأسعار والفوترة](https://fileverity.com/ar/docs/pricing.md#free-start).

## 2. أنشئ مفتاح API

افتح **مفاتيح API** واختر **أنشئ مفتاحًا** وسمِّه واختر وضعه. أنشئ مفتاحًا من نوع **اختبار** أولًا: يعيد نتائج نموذجية ثابتة، ولا يستدعي أي نموذج، ولا يُحتسب عليه أي رسم أبدًا. يظهر المفتاح كاملًا مرة واحدة فقط، فانسخه الآن.

أبقِ المفتاح خارج نظام التحكم في الإصدارات وخارج شيفرة المتصفح. صدِّره بوصفه متغير بيئة:

**البيئة: Shell**

```bash
export FILEVERITY_API_KEY=fv_test_...
```

## 3. تحقق من مفتاحك

يعمل `GET /models` مع أي مفتاح صالح ولا يُحتسب عليه أي رسم أبدًا. إذا أعادت الاستجابة `200` مع قائمة النماذج فالمفتاح سليم. وإذا أعادت `401` فالمفتاح مفقود أو مكتوب خطأً أو مُبطَل.

**تحقق من مفتاحك: cURL**

```bash
curl -i https://api.fileverity.com/v1/models \
  -H "Authorization: Bearer $FILEVERITY_API_KEY"
```

**تحقق من مفتاحك: JavaScript**

```javascript
const response = await fetch("https://api.fileverity.com/v1/models", {
  headers: { Authorization: "Bearer " + process.env.FILEVERITY_API_KEY },
});
console.log(response.status);
```

**تحقق من مفتاحك: Python**

```python
import os
import requests

response = requests.get("https://api.fileverity.com/v1/models", headers={"Authorization": "Bearer " + os.environ["FILEVERITY_API_KEY"]})
print(response.status_code)
```

## 4. افحص نصًا

أرسل نصًا عاديًا من 100 كلمة على الأقل إلى `POST /text/detections`. تقرأ الأمثلة النص من ملف، لذا احفظ أي فقرة من 100 كلمة أو أكثر باسم `essay.txt` أولًا. يكتب هذا الأمر نصًا تجريبيًا:

**كتابة الملف essay.txt**

```bash
cat > essay.txt <<'EOF'
Honestly, the delivery was a mess. The driver turned up at six in the evening,
the pallet was wet on one side, and nobody at the depot would pick up the
phone until Monday. I photographed everything before signing, which is the
only reason we have a leg to stand on. In today's fast-paced logistics
landscape, it is essential for businesses to prioritize reliable delivery
performance, as timely and undamaged shipments play a pivotal role in
fostering customer trust and long-term satisfaction. We lost two days. Marta
rebuilt the schedule by hand and the Leeds order still went out late. Moving
forward, it is crucial to implement robust quality assurance measures and
establish clear communication channels, ensuring that all stakeholders remain
aligned and that potential issues are proactively addressed. For now I am
asking for a credit note and a named contact. Not another apology.
EOF
```

**أول فحص للنص: cURL**

```bash
curl https://api.fileverity.com/v1/text/detections \
  -H "Authorization: Bearer $FILEVERITY_API_KEY" \
  -H "Content-Type: application/json" \
  -d "$(jq -Rs '{text: .}' essay.txt)"
```

**أول فحص للنص: JavaScript**

```javascript
import { readFile } from "node:fs/promises";

const response = await fetch("https://api.fileverity.com/v1/text/detections", {
  method: "POST",
  headers: {
    Authorization: "Bearer " + process.env.FILEVERITY_API_KEY,
    "Content-Type": "application/json",
  },
  body: JSON.stringify({ text: await readFile("essay.txt", "utf8") }),
});
const detection = await response.json();
if (!response.ok) throw new Error(detection.error.code + ": " + detection.error.message);
console.log(detection.verdict, detection.ai_fraction);
```

**أول فحص للنص: Python**

```python
import os
import requests

response = requests.post(
    "https://api.fileverity.com/v1/text/detections",
    headers={"Authorization": "Bearer " + os.environ["FILEVERITY_API_KEY"]},
    json={"text": open("essay.txt", encoding="utf-8").read()},
)
detection = response.json()
if not response.ok:
    raise RuntimeError(detection["error"]["code"] + ": " + detection["error"]["message"])
print(detection["verdict"], detection["ai_fraction"])
```

مع مفتاح اختبار تكون الاستجابة نتيجة ثابتة لنص كتبه إنسان. أما مع مفتاح حقيقي فتبدو هكذا:

**الاستجابة، مفتاح حقيقي**

```json
{
  "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
  }
}
```

التفاصيل، بما فيها طريقة عمل الإزاحات، في [كشف النصوص](https://fileverity.com/ar/docs/text-detections.md).

## 5. افحص صورة

تتطلب الصور والمستندات استدعاءين: ارفع الملف، ثم أنشئ تحليلًا يشير إليه. التحليل هو فحص صورة أو مستند واحد. يُبقي `Prefer: wait=60` الطلب معلّقًا حتى تجهز النتيجة، لمدة تصل إلى 60 ثانية.

**أول فحص للصورة: cURL**

```bash
FILE_ID=$(curl -s https://api.fileverity.com/v1/files \
  -H "Authorization: Bearer $FILEVERITY_API_KEY" \
  -F file=@photo.jpg | jq -r .id)

curl https://api.fileverity.com/v1/analyses \
  -H "Authorization: Bearer $FILEVERITY_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Prefer: wait=60" \
  -d "{\"model\": \"fvimg-2\", \"file\": \"$FILE_ID\"}"
```

**أول فحص للصورة: JavaScript**

```javascript
import { readFile } from "node:fs/promises";

const headers = { Authorization: "Bearer " + process.env.FILEVERITY_API_KEY };

const form = new FormData();
form.append("file", new Blob([await readFile("photo.jpg")], { type: "image/jpeg" }), "photo.jpg");
const file = await (await fetch("https://api.fileverity.com/v1/files", { method: "POST", headers, body: form })).json();

const response = await fetch("https://api.fileverity.com/v1/analyses", {
  method: "POST",
  headers: { ...headers, "Content-Type": "application/json", Prefer: "wait=60" },
  body: JSON.stringify({ model: "fvimg-2", file: file.id }),
});
const analysis = await response.json();
console.log(analysis.status, analysis.summary, analysis.report_url);
```

**أول فحص للصورة: Python**

```python
import os
import requests

headers = {"Authorization": "Bearer " + os.environ["FILEVERITY_API_KEY"]}

file = requests.post("https://api.fileverity.com/v1/files", headers=headers, files={"file": open("photo.jpg", "rb")}).json()

response = requests.post(
    "https://api.fileverity.com/v1/analyses",
    headers={**headers, "Prefer": "wait=60"},
    json={"model": "fvimg-2", "file": file["id"]},
)
analysis = response.json()
print(analysis["status"], analysis["summary"], analysis["report_url"])
```

يعيد التحليل المنتهي `200` مع `status: succeeded` وملخص موجز `summary` وتقرير كامل `result.report`. وإذا انتهت مدة الانتظار أولًا، تحصل على `202` مع `status: processing`؛ اجلب النتيجة لاحقًا عبر `GET /analyses/{id}` أو استقبل Webhook. راجع [التحليلات](https://fileverity.com/ar/docs/analyses.md).

**الاستجابة، مفتاح حقيقي**

```json
{
  "id": "an_8Hk2pQ4vN9sL1xR7cW3mY6zB",
  "object": "analysis",
  "created": 1793700120,
  "model": "fvimg-2-2026-10-30",
  "livemode": true,
  "status": "succeeded",
  "file": {
    "name": "claim-photo.jpg",
    "bytes": 2481920,
    "format": "jpeg"
  },
  "report_id": "FV-7K2M-9QXD-4T8R",
  "report_url": "https://fileverity.com/verify/FV-7K2M-9QXD-4T8R",
  "summary": {
    "level": "L2",
    "assessment": "authentic_untouched",
    "action": "accept",
    "ai": "very_low",
    "edit": "none"
  },
  "result": {
    "report": {
      "schema": "fileverity.report/1",
      "id": "FV-7K2M-9QXD-4T8R"
    },
    "stamped_at": 1793700130
  },
  "error": null,
  "progress": null,
  "usage": {
    "amount": 199,
    "currency": "usd",
    "funding": "balance"
  },
  "metadata": {
    "order_id": "A-10492"
  },
  "completed_at": 1793700131,
  "expires_at": 1794304931
}
```

> **ملاحظة.** مع مفتاح اختبار يُتحقق من صحة الملف دون تخزينه، ويعيد التحليل فورًا نموذجًا ثابتًا. ويبدأ رقم تقريره بالبادئة `FV-TEST-` وليس له صفحة تحقق عامة.

## 6. الانتقال إلى الإنتاج

- أنشئ مفتاحًا من نوع **حقيقي** في لوحة التحكم واستخدمه بدلًا من مفتاح الاختبار. تعمل الشيفرة نفسها دون تغيير.
- استخدم رصيد البدء المجاني، أو أضف رصيدًا إلى مساحة عملك من **الرصيد**. الحد الأدنى لإضافة الرصيد هو ⁦US$ 19⁩.
- حدّد حدًّا شهريًا للإنفاق على المفتاح، وأضف [نقطة نهاية Webhook](https://fileverity.com/ar/docs/webhooks.md) بدلًا من الاستعلام المتكرر.
- أرسل `Idempotency-Key` في طلبات POST حتى لا تؤدي إعادة المحاولة إلى تنفيذ الفحص مرتين. راجع [Idempotency](https://fileverity.com/ar/docs/idempotency.md).

لمعرفة ما يفحصه كل فحص وأين تستخدمه الفرق، راجع [واجهة API لكشف الصور المولَّدة بالذكاء الاصطناعي](https://fileverity.com/ar/api/ai-image-detection) و[واجهة API لكشف تزوير المستندات](https://fileverity.com/ar/api/document-fraud-detection).

التالي: يضم [أمثلة برمجية](https://fileverity.com/ar/docs/sample-code.md) برامج كاملة بلغتي Node.js وPython لكل فحص وللتعامل مع Webhooks. ثم اقرأ [المصادقة والمفاتيح](https://fileverity.com/ar/docs/authentication.md) و[الأخطاء](https://fileverity.com/ar/docs/errors.md) و[مرجع API](https://fileverity.com/ar/docs/api-reference.md). إذا لم يعمل شيء، راسل [hello@fileverity.com](mailto:hello@fileverity.com) أو استخدم [صفحة التواصل](https://fileverity.com/ar/contact)، واذكر معرّف الطلب من ترويسة `x-request-id`.

