# Zahif («زاحف») v1.0.0 > Web collector, interpreter and researcher for AI agents by Trusted Intelligence: REST API, remote MCP server, > Claude Skill, SDKs and a Workers Service Binding. Arabic-first, works with or without LLMs, never fabricates, and > returns the credits each call actually used. Compatible with the core Firecrawl v2 endpoints listed in the > compatibility table (https://claude-crawler.trusted-intel.cc/docs/compatibility). Firecrawl is a trademark of its owner; Zahif is not affiliated with it. > Private beta: no payments; trial keys of 500 credits come from the administrator. Base URL: https://claude-crawler.trusted-intel.cc Auth: Authorization: Bearer zh- Modes: fast (سريع), extended (مطوّل قليلاً), deep (مطوّل), custom (مخصص); default fast. ## Docs - [Overview](https://claude-crawler.trusted-intel.cc/docs): what Zahif is and a quick start - [API reference](https://claude-crawler.trusted-intel.cc/docs/api): every endpoint with examples - [OpenAPI 3.1](https://claude-crawler.trusted-intel.cc/openapi.json): machine-readable contract - [Modes and settings](https://claude-crawler.trusted-intel.cc/docs/modes): work modes and every switch - [MCP and agents](https://claude-crawler.trusted-intel.cc/docs/mcp): claude.ai, Claude Code, Claude Desktop, Cursor, VS Code, Kimi - [Compatibility table](https://claude-crawler.trusted-intel.cc/docs/compatibility): which Firecrawl v2 endpoints and options are supported, partial or unsupported - [Agent browser](https://claude-crawler.trusted-intel.cc/docs/browser): sessions with placement / display / presence / control switches, aria snapshots, live view - [Device pairing](https://claude-crawler.trusted-intel.cc/docs/devices): use the user's real browser through the extension or zahif-relay - [Service Binding](https://claude-crawler.trusted-intel.cc/docs/service-binding): calling Zahif from other Cloudflare Workers - [Webhooks](https://claude-crawler.trusted-intel.cc/docs/webhooks): events and HMAC-SHA256 signatures - [Errors and limits](https://claude-crawler.trusted-intel.cc/docs/errors): error codes, budgets, politeness ## Endpoints - [POST /v2/scrape](https://claude-crawler.trusted-intel.cc/docs/api#scrape): one URL to markdown, html, links, images, screenshot, summary, json, branding, changeTracking - [POST /v2/search](https://claude-crawler.trusted-intel.cc/docs/api#search): multi-source web/news/images search with optional scraping of hits - [POST /v2/map](https://claude-crawler.trusted-intel.cc/docs/api#map): discover a site's URLs, ranked by a search term - [POST /v2/crawl](https://claude-crawler.trusted-intel.cc/docs/api#crawl): background crawl; poll GET /v2/crawl/{id} - [POST /v2/batch/scrape](https://claude-crawler.trusted-intel.cc/docs/api#batchScrape): many URLs in one job - [POST /v2/extract](https://claude-crawler.trusted-intel.cc/docs/api#extract): structured JSON from URLs or the web by schema/prompt - [POST /v2/agent](https://claude-crawler.trusted-intel.cc/docs/api#agent): research agent with numbered citations; poll GET /v2/agent/{id} - [GET /v2/team/credit-usage](https://claude-crawler.trusted-intel.cc/docs/api#creditUsage): remaining credits and plan usage - [POST /v2/zahif/browser/sessions](https://claude-crawler.trusted-intel.cc/docs/api#browserCreate): agent-browser session; then POST /v2/zahif/browser/sessions/{id}/actions - [GET /health](https://claude-crawler.trusted-intel.cc/health): service health ## MCP - [MCP connection guide](https://claude-crawler.trusted-intel.cc/docs/mcp): endpoint https://claude-crawler.trusted-intel.cc/mcp (POST, Streamable HTTP, Authorization: Bearer header) ## Optional - [Full text for agents](https://claude-crawler.trusted-intel.cc/llms-full.txt): all docs in one file - [Web platform](https://claude-crawler.trusted-intel.cc/app): playground, jobs, usage, settings - [Bot information](https://claude-crawler.trusted-intel.cc/bot): TrustedIntelBot user agent and robots policy # API (from OpenAPI 3.1) ## GET /health Service health (no auth) Response example: ```json { "status": "ok", "product": "zahif-v1.0.0", "name": "زاحف", "version": "1.0.0", "bindings": { "db": true, "cache": true, "jobs": true, "browser": true, "ai": true }, "origin": null } ``` ## GET /bot ZahifBot crawler information page ## POST /v2/scrape Scrape one URL into Markdown, HTML, JSON, screenshot and more جلب صفحة واحدة وتحويلها إلى Markdown أو JSON أو لقطة شاشة وغيرها Request example: ```json { "url": "https://ar.wikipedia.org/wiki/الرياض", "formats": [ "markdown", "links" ], "onlyMainContent": true, "mode": "fast" } ``` Response example: ```json { "success": true, "data": { "markdown": "# الرياض\n\nالرياض عاصمة المملكة العربية السعودية…", "metadata": { "title": "الرياض - ويكيبيديا", "language": "ar", "sourceURL": "https://ar.wikipedia.org/wiki/الرياض", "statusCode": 200, "creditsUsed": 1, "engine": "fetch", "quality": 0.91, "cacheState": "miss" } } } ``` ## POST /v2/batch/scrape Start a batch scrape of many URLs بدء جلب دفعة روابط Request example: ```json { "urls": [ "https://example.com", "https://example.org" ], "formats": [ "markdown" ] } ``` Response example: ```json { "success": true, "id": "0f1e2d3c-4b5a-6978-8796-a5b4c3d2e1f0", "url": "https://claude-crawler.trusted-intel.cc/v2/batch/scrape/0f1e2d3c-4b5a-6978-8796-a5b4c3d2e1f0", "invalidURLs": [] } ``` ## GET /v2/batch/scrape/{id} Batch status and results حالة الدفعة ونتائجها Response example: ```json { "success": true, "status": "scraping", "total": 25, "completed": 9, "creditsUsed": 9, "expiresAt": "2026-11-04T19:00:00.000Z", "next": null, "progress": { "phase": "scrape", "pct": 36, "message_ar": "تُجلب الصفحات", "message_en": "Scraping pages" }, "data": [] } ``` ## DELETE /v2/batch/scrape/{id} Cancel a batch إلغاء الدفعة Response example: ```json { "success": true, "status": "cancelled" } ``` ## GET /v2/batch/scrape/{id}/errors Batch errors أخطاء الدفعة ## POST /v2/crawl Start a crawl of a website بدء زحف موقع Request example: ```json { "url": "https://example.com", "limit": 25, "maxDiscoveryDepth": 2, "scrapeOptions": { "formats": [ "markdown" ] }, "webhook": { "url": "https://hooks.example.com/zahif", "events": [ "completed", "failed" ] }, "mode": "extended" } ``` Response example: ```json { "success": true, "id": "0f1e2d3c-4b5a-6978-8796-a5b4c3d2e1f0", "url": "https://claude-crawler.trusted-intel.cc/v2/crawl/0f1e2d3c-4b5a-6978-8796-a5b4c3d2e1f0" } ``` ## GET /v2/crawl/{id} Crawl status and results حالة الزحف ونتائجه Response example: ```json { "success": true, "status": "scraping", "total": 25, "completed": 9, "creditsUsed": 9, "expiresAt": "2026-11-04T19:00:00.000Z", "next": null, "progress": { "phase": "scrape", "pct": 36, "message_ar": "تُجلب الصفحات", "message_en": "Scraping pages" }, "data": [] } ``` ## DELETE /v2/crawl/{id} Cancel a crawl إلغاء الزحف Response example: ```json { "success": true, "status": "cancelled" } ``` ## GET /v2/crawl/{id}/errors Crawl errors أخطاء الزحف ## GET /v2/crawl/active Active crawls of this team عمليات الزحف النشطة ## POST /v2/crawl/params-preview Turn a natural-language prompt into crawl parameters (no crawl is started) تحويل وصف نصي إلى معاملات زحف دون بدء الزحف Request example: ```json { "url": "https://example.com", "prompt": "only blog posts from 2026" } ``` ## POST /v2/map Discover the URLs of a site (sitemaps + links), optionally ranked by a search term اكتشاف روابط الموقع مع ترتيبها بكلمة بحث اختيارياً Request example: ```json { "url": "https://example.com", "search": "pricing", "limit": 100 } ``` Response example: ```json { "success": true, "links": [ { "url": "https://example.com/pricing", "title": "Pricing" } ] } ``` ## POST /v2/search Web, news and image search fused from several free sources; optionally scrape the hits بحث في الويب والأخبار والصور بدمج مصادر مجانية متعددة مع جلب النتائج اختيارياً Request example: ```json { "query": "عجز الميزانية السعودية 2026", "limit": 5, "sources": [ "web", "news" ], "mode": "extended" } ``` Response example: ```json { "success": true, "data": { "web": [ { "url": "https://example.com/a", "title": "…", "description": "…", "position": 1, "source": "bing+ddg" } ] } } ``` ## POST /v2/extract Start structured extraction from URLs (and optionally the web) with a schema or prompt بدء استخراج بيانات منظمة من روابط أو من الويب بمخطط أو تعليمات Request example: ```json { "urls": [ "https://example.com/*" ], "prompt": "Company name and pricing plans", "schema": { "type": "object", "properties": { "company": { "type": "string" }, "plans": { "type": "array", "items": { "type": "string" } } } } } ``` Response example: ```json { "success": true, "id": "0f1e2d3c-4b5a-6978-8796-a5b4c3d2e1f0", "url": "https://claude-crawler.trusted-intel.cc/v2/extract/0f1e2d3c-4b5a-6978-8796-a5b4c3d2e1f0" } ``` ## GET /v2/extract/{id} Extraction status and result حالة الاستخراج ونتيجته Response example: ```json { "success": true, "status": "scraping", "total": 25, "completed": 9, "creditsUsed": 9, "expiresAt": "2026-11-04T19:00:00.000Z", "next": null, "progress": { "phase": "scrape", "pct": 36, "message_ar": "تُجلب الصفحات", "message_en": "Scraping pages" }, "data": [] } ``` ## POST /v2/agent Start the research agent: plan, search, read, rank and answer with numbered citations بدء وكيل البحث: يخطط ويبحث ويقرأ ويرتب ويجيب باقتباسات مرقّمة Request example: ```json { "prompt": "What were Saudi Arabia's 2025 budget deficit figures? Cite sources.", "mode": "extended", "maxCredits": 200 } ``` Response example: ```json { "success": true, "id": "0f1e2d3c-4b5a-6978-8796-a5b4c3d2e1f0", "url": "https://claude-crawler.trusted-intel.cc/v2/agent/0f1e2d3c-4b5a-6978-8796-a5b4c3d2e1f0" } ``` ## GET /v2/agent/{id} Research status, answer and sources حالة البحث وإجابته ومصادره Response example: ```json { "success": true, "status": "scraping", "total": 25, "completed": 9, "creditsUsed": 9, "expiresAt": "2026-11-04T19:00:00.000Z", "next": null, "progress": { "phase": "scrape", "pct": 36, "message_ar": "تُجلب الصفحات", "message_en": "Scraping pages" }, "data": [] } ``` ## DELETE /v2/agent/{id} Cancel research إلغاء البحث Response example: ```json { "success": true, "status": "cancelled" } ``` ## GET /v2/zahif/research/{id} Alias of GET /v2/agent/{id} اسم بديل لـ GET /v2/agent/{id} Response example: ```json { "success": true, "status": "scraping", "total": 25, "completed": 9, "creditsUsed": 9, "expiresAt": "2026-11-04T19:00:00.000Z", "next": null, "progress": { "phase": "scrape", "pct": 36, "message_ar": "تُجلب الصفحات", "message_en": "Scraping pages" }, "data": [] } ``` ## DELETE /v2/zahif/research/{id} Alias of DELETE /v2/agent/{id} اسم بديل لـ DELETE /v2/agent/{id} Response example: ```json { "success": true, "status": "cancelled" } ``` ## POST /v2/zahif/research Alias of POST /v2/agent اسم بديل لـ POST /v2/agent Request example: ```json { "prompt": "ما أحدث أرقام عجز الميزانية السعودية؟ اذكر المصادر.", "mode": "deep" } ``` Response example: ```json { "success": true, "id": "0f1e2d3c-4b5a-6978-8796-a5b4c3d2e1f0", "url": "https://claude-crawler.trusted-intel.cc/v2/agent/0f1e2d3c-4b5a-6978-8796-a5b4c3d2e1f0" } ``` ## GET /v2/team/credit-usage Remaining credits and plan usage الرصيد المتبقي واستهلاك الخطة Response example: ```json { "success": true, "data": { "remainingCredits": 99120, "planCredits": 100000 } } ``` ## GET /v2/team/token-usage LLM token usage استهلاك رموز النماذج اللغوية ## GET /v2/team/queue-status Queue status for this team حالة الطابور ## GET /v2/zahif/settings The settings profile of this key ملف إعدادات المفتاح ## PUT /v2/zahif/settings Save the settings profile of this key (validated against the registry) حفظ ملف إعدادات المفتاح بعد التحقق من السجل Request example: ```json { "settings": { "respect_robots": true, "search.max_sources": 12 } } ``` ## GET /v2/zahif/settings/schema Settings registry: every switch with type, defaults per mode and Arabic/English labels ## GET /v2/zahif/keys List API keys (admin) عرض المفاتيح (للمشرف) ## POST /v2/zahif/keys Create an API key (admin). The key is returned once. إنشاء مفتاح (للمشرف)؛ يظهر مرة واحدة Request example: ```json { "name": "aleem", "scopes": [ "api", "mcp" ], "planCredits": 100000 } ``` Response example: ```json { "success": true, "id": "k_…", "key": "zh-…", "prefix": "zh-ab12", "note": "Store this key now; it is shown only once." } ``` ## DELETE /v2/zahif/keys/{id} Revoke an API key (admin) إلغاء مفتاح (للمشرف) ## GET /v2/zahif/usage Usage this month by operation (admins also see budgets) الاستهلاك هذا الشهر حسب العملية ## GET /v2/zahif/capabilities Runtime capabilities (also in GET /health): edge engines and budgets, origin engines, LLM providers, search backends, features القدرات المتاحة فعلاً الآن Response example: ```json { "success": true, "capabilities": { "edge": { "fetch": { "available": true }, "browser": { "available": true, "remainingMinutes": 512.4, "monthlyMinutes": 540 } }, "origin": { "configured": false, "healthy": false, "engines": { "rust": { "available": false, "reason_en": "origin not configured", "reason_ar": "الأصل غير مُعدّ" } } }, "features": { "scrape": true, "parse": false } } } ``` ## GET /v2/concurrency-check Active jobs of this key against the concurrency limit المهام النشطة مقابل حد التزامن ## GET /v2/zahif/settings/owner Deployment-wide owner settings (budgets, caps, safety switches) إعدادات المالك على مستوى النشر ## PUT /v2/zahif/settings/owner Save owner settings (admin only) حفظ إعدادات المالك (للمشرف) Request example: ```json { "settings": { "browser.monthly_minutes": 540, "llm.monthly_usd_cap": 50 } } ``` ## GET /v2/zahif/keys/{id}/policy Per-key policy set by the admin (e.g. raised limits) سياسة المفتاح التي يضبطها المشرف ## PUT /v2/zahif/keys/{id}/policy Set a key's policy (admin only) ضبط سياسة مفتاح (للمشرف) Request example: ```json { "settings": { "limits.max_pages": 500 } } ``` ## POST /v2/zahif/bench/score Benchmark scoring on the edge: metrics only per row, never page text (admin) قياس الأداء على الحافة: مقاييس فقط دون نص الصفحات (للمشرف) Request example: ```json { "rows": [ { "id": "r1", "url": "https://example.com", "truth_text": "Example Domain" } ], "mode": "fast" } ``` ## POST /v2/zahif/bench/answer Research-correctness evaluation: answers with citations (admin) تقييم صحة البحث: إجابات مع مصادر (للمشرف) Request example: ```json { "questions": [ { "id": "q1", "question": "What is the capital of Saudi Arabia?" } ], "mode": "fast" } ``` ## GET /v2/zahif/me The calling key: id, name, scopes, remaining credits, last 24 h credits المفتاح المستدعي ورصيده ## GET /v2/zahif/webhook-secret The HMAC secret that signs this key's webhooks سرّ توقيع الـ webhooks لهذا المفتاح ## GET /v2/zahif/files/{key} Stored screenshot or PDF produced by a scrape (unguessable name, no auth) ملف لقطة شاشة أو PDF ناتج عن عملية جلب ## GET /v2/zahif/selftest Live self-test from the edge (admin) اختبار ذاتي حي من الحافة (للمشرف) ## POST /v2/zahif/browser/sessions Create an agent-browser session (placement, display, presence, control) إنشاء جلسة متصفح للوكيل بمفاتيحها الأربعة Request example: ```json { "placement": "auto", "display": "virtual", "presence": "natural", "control": "supervised", "startUrl": "https://example.com", "timeoutSec": 600 } ``` Response example: ```json { "success": true, "session": { "id": "bs_7f3a", "placement": "serverless_edge", "display": "virtual", "presence": "natural", "control": "supervised", "status": "ready", "url": "https://ar.wikipedia.org/wiki/الرياض", "liveViewUrl": "https://claude-crawler.trusted-intel.cc/app/browser/bs_7f3a", "creditsUsed": 2 } } ``` ## GET /v2/zahif/browser/sessions List browser sessions عرض جلسات المتصفح ## GET /v2/zahif/browser/sessions/{id} Get a browser session حالة جلسة متصفح Response example: ```json { "success": true, "session": { "id": "bs_7f3a", "placement": "serverless_edge", "display": "virtual", "presence": "natural", "control": "supervised", "status": "ready", "url": "https://ar.wikipedia.org/wiki/الرياض", "liveViewUrl": "https://claude-crawler.trusted-intel.cc/app/browser/bs_7f3a", "creditsUsed": 2 } } ``` ## DELETE /v2/zahif/browser/sessions/{id} Close a browser session إغلاق جلسة المتصفح ## POST /v2/zahif/browser/sessions/{id}/actions Run browser actions and optionally return a snapshot تنفيذ إجراءات في المتصفح مع لقطة اختيارية Request example: ```json { "actions": [ { "type": "navigate", "url": "https://example.com" }, { "type": "click", "ref": "e12" }, { "type": "type", "ref": "e7", "text": "زاحف" }, { "type": "press", "key": "Enter" } ], "snapshot": "aria" } ``` ## GET /v2/zahif/browser/sessions/{id}/snapshot Page snapshot for agents (aria refs, markdown, set-of-marks, html) لقطة الصفحة للوكيل Response example: ```json { "success": true, "snapshot": { "url": "https://example.com", "format": "aria", "content": "- heading \"Example Domain\" [ref=e1]\n- link \"More information...\" [ref=e2]", "refs": 2 } } ``` ## GET /v2/zahif/browser/sessions/{id}/screenshot Screenshot: raw image bytes by default, JSON {image (base64), mime} with as=json لقطة شاشة: صورة خام افتراضياً أو JSON مع as=json ## GET /v2/zahif/browser/sessions/{id}/live Live view stream: Server-Sent Events of JPEG frames and session events بث العرض الحي: أحداث SSE بإطارات JPEG وأحداث الجلسة ## POST /v2/zahif/browser/sessions/{id}/handoff Pause the agent and hand control to a human إيقاف الوكيل وتسليم التحكم للإنسان Request example: ```json { "reason": "login with 2FA" } ``` Response example: ```json { "success": true, "session": { "id": "bs_7f3a", "placement": "serverless_edge", "display": "virtual", "presence": "natural", "control": "supervised", "status": "ready", "url": "https://ar.wikipedia.org/wiki/الرياض", "liveViewUrl": "https://claude-crawler.trusted-intel.cc/app/browser/bs_7f3a", "creditsUsed": 2 } } ``` ## POST /v2/zahif/browser/sessions/{id}/resume Give control back to the agent إعادة التحكم للوكيل Response example: ```json { "success": true, "session": { "id": "bs_7f3a", "placement": "serverless_edge", "display": "virtual", "presence": "natural", "control": "supervised", "status": "ready", "url": "https://ar.wikipedia.org/wiki/الرياض", "liveViewUrl": "https://claude-crawler.trusted-intel.cc/app/browser/bs_7f3a", "creditsUsed": 2 } } ``` ## POST /v2/zahif/browser/sessions/{id}/approve Approve or deny the pending risky step (supervised control) الموافقة على خطوة حساسة معلّقة أو رفضها في وضع الإشراف Request example: ```json { "approvalId": "ap_1", "approve": true } ``` ## POST /v2/zahif/browser/sessions/{id}/input Human input while in handoff (from the live view) إدخال الإنسان أثناء تولّيه التحكم Request example: ```json { "events": [ { "type": "click", "x": 420, "y": 310, "button": "left" }, { "type": "text", "text": "زاحف" }, { "type": "press", "key": "Enter" } ] } ``` ## GET /v2/zahif/browser/sessions/{id}/log Audit log of the session's actions سجل تدقيق إجراءات الجلسة ## GET /v2/zahif/browser/status Available placements, switches, relay endpoint, budgets and per-minute pricing مواضع التشغيل المتاحة والميزانيات والتسعير ## GET /v2/zahif/browser/files/{sid}/{name} Download a file saved by a download or pdf action (served as an attachment) تنزيل ملف حفظته الجلسة ## DELETE /v2/zahif/browser/profiles/{name} Delete a stored browser profile (cookies and storage) حذف ملف متصفح محفوظ ## GET /v2/zahif/browser/devices List paired devices and their online state الأجهزة المقترنة وحالة اتصالها ## DELETE /v2/zahif/browser/devices/{id} Remove a paired device إزالة جهاز مقترن ## POST /v2/zahif/browser/devices/pair Create an 8-character pairing code (valid 10 minutes) إنشاء رمز اقتران من ٨ خانات صالح ١٠ دقائق Request example: ```json { "name": "office laptop" } ``` Response example: ```json { "success": true, "pairingCode": "K7Q2-M9XD", "expiresAt": "2026-11-03T17:20:00Z" } ``` ## POST /v2/zahif/browser/devices/redeem Redeem a pairing code from the extension or zahif-relay (no API key; the code is the credential) استبدال رمز الاقتران من الإضافة أو برنامج الترحيل Request example: ```json { "code": "K7Q2-M9XD", "name": "office laptop", "platform": "chrome-extension" } ``` ## GET /v2/zahif/browser/relay WebSocket upgrade for paired devices (JSON-RPC 2.0, outbound from the device) اتصال WebSocket للأجهزة المقترنة ## GET /v2/zahif/billing Your account: status, plan, period, balance and recent ledger حسابك: الحالة والخطة والفترة والرصيد وآخر الحركات ## GET /v2/zahif/billing/plans Public plans (no price unless approved by the owner) الخطط المتاحة دون أسعار ما لم يعتمدها المالك ## GET /v2/zahif/billing/price-table Credit rules per operation قواعد احتساب الرصيد لكل عملية ## POST /v2/zahif/billing/quote Estimate the credits of a request before running it تقدير رصيد طلب قبل تشغيله Request example: ```json { "op": "scrape", "request": { "url": "https://example.com", "formats": [ "markdown", "json" ] } } ``` ## GET /v2/zahif/billing/ledger Ledger entries of your account حركات حسابك ## GET /v2/zahif/billing/statement Monthly statement (Arabic HTML or JSON) كشف الحساب الشهري ## GET /v2/zahif/billing/alerts Balance alert webhook, thresholds and signing secret تنبيهات الرصيد وسرّ التوقيع ## PUT /v2/zahif/billing/alerts Set or clear the balance alert webhook ضبط رابط تنبيهات الرصيد أو مسحه Request example: ```json { "webhook": "https://hooks.example.com/billing" } ``` ## GET /v2/zahif/admin/accounts List accounts (admin) عرض الحسابات (للمشرف) ## POST /v2/zahif/admin/accounts Create an account, optionally with a key and opening credits (admin) إنشاء حساب مع مفتاح ورصيد افتتاحي اختيارياً (للمشرف) Request example: ```json { "name": "Aleem", "planId": "free", "issueKey": true } ``` ## GET /v2/zahif/admin/accounts/{id} Account detail with its keys (admin) تفاصيل الحساب ومفاتيحه (للمشرف) ## PATCH /v2/zahif/admin/accounts/{id} Update account fields (admin) تعديل بيانات الحساب (للمشرف) ## POST /v2/zahif/admin/accounts/{id} POST alias of PATCH for clients without PATCH (admin) اسم بديل لـ PATCH (للمشرف) ## POST /v2/zahif/admin/accounts/{id}/suspend Suspend an account (admin) إيقاف حساب (للمشرف) Request example: ```json { "reason": "requested by the customer" } ``` ## POST /v2/zahif/admin/accounts/{id}/resume Resume an account (admin) إعادة تفعيل حساب (للمشرف) Request example: ```json { "reason": "requested by the customer" } ``` ## POST /v2/zahif/admin/accounts/{id}/cancel Cancel an account (admin) إلغاء حساب (للمشرف) Request example: ```json { "reason": "requested by the customer" } ``` ## POST /v2/zahif/admin/accounts/{id}/plan Change plan and cycle (admin); no proration تغيير الخطة والدورة (للمشرف) دون احتساب تناسبي Request example: ```json { "planId": "free", "cycle": "monthly" } ``` ## POST /v2/zahif/admin/accounts/{id}/credits Add credits: pack, grant or adjustment (admin) إضافة رصيد: حزمة أو منحة أو تعديل (للمشرف) Request example: ```json { "kind": "grant", "credits": 500, "reason": "trial" } ``` ## GET /v2/zahif/admin/accounts/{id}/keys Keys of an account (admin) مفاتيح الحساب (للمشرف) ## POST /v2/zahif/admin/accounts/{id}/keys Issue a key for an account (admin); shown once إصدار مفتاح للحساب (للمشرف)؛ يظهر مرة واحدة Request example: ```json { "name": "aleem worker" } ``` ## DELETE /v2/zahif/admin/accounts/{id}/keys/{keyId} Revoke a key of an account (admin) إلغاء مفتاح من الحساب (للمشرف) ## GET /v2/zahif/admin/accounts/{id}/usage Usage of an account by operation and day (admin) استهلاك الحساب حسب العملية واليوم (للمشرف) ## GET /v2/zahif/admin/accounts/{id}/ledger Ledger of an account (admin) حركات الحساب (للمشرف) ## GET /v2/zahif/admin/accounts/{id}/statement Statement of an account (admin) كشف حساب (للمشرف) ## GET /v2/zahif/admin/plans All plans with their approval state (admin) كل الخطط وحالة اعتمادها (للمشرف) ## PUT /v2/zahif/admin/plans/{id} Edit or approve a plan's prices (owner decision) تعديل خطة أو اعتماد أسعارها (قرار المالك) ## GET /v2/zahif/admin/price-table Credit rules (admin view) قواعد احتساب الرصيد (للمشرف) ## POST /v2/zahif/admin/quote Quote any operation (admin) تسعير أي عملية بالرصيد (للمشرف) # Rules for agents - Cite sources by URL; Zahif never invents content, and reports what it could not find. - Use mode fast for single pages, extended for multi-source research, deep for exhaustive verified reports. - Background jobs (crawl, batch, extract, agent) return an id; poll the status URL and follow `next` for more results. - Every response includes creditsUsed; respect the caller's budget with settings.limits.max_credits. - Check GET /health `capabilities` before relying on an engine; unavailable features are reported, never simulated. - Webhooks are signed with HMAC-SHA256 in X-Zahif-Signature. # Settings registry - engines.fetch [collector, bool] Direct HTTP fetch / الجلب المباشر عبر HTTP; defaults fast=true - engines.browser [collector, bool] Browser rendering when needed / التصيير بالمتصفح عند الحاجة; defaults fast=true - engines.browser_always [collector, bool] Always render with the browser / التصيير بالمتصفح دائماً; defaults fast=false - engines.rust [collector, bool] Rust engine at origin / محرك Rust في الأصل; defaults fast=true - engines.go [collector, bool] Go engine at origin / محرك Go في الأصل; defaults fast=false extended=true deep=true - engines.python_browser [collector, bool] Python browser at origin / متصفح Python في الأصل; defaults fast=false extended=true deep=true - engines.stealth [collector, bool] Stealth via origin / وضع التخفي عبر الأصل; defaults fast=false extended=false deep=true - engines.origin [collector, bool] Hand heavy work to the origin when configured / تحويل الأعمال الثقيلة إلى الأصل عند توفره; defaults fast=true - documents.parse [collector, bool] Parse PDF and Office documents / تحليل المستندات PDF وOffice; defaults fast=true - documents.docling [collector, bool] Docling at origin / Docling في الأصل; defaults fast=false extended=true deep=true - documents.ocr [collector, bool] OCR for scanned documents / التعرف الضوئي على النصوص; defaults fast=false extended=false deep=true - documents.ai_markdown [collector, bool] Workers AI toMarkdown for documents / تحويل المستندات عبر Workers AI; defaults fast=true - documents.max_pages [collector, int] Max document pages / أقصى صفحات للمستند; defaults fast=50 extended=200 deep=1000 - respect_robots [collector, bool] Respect robots.txt / احترام robots.txt; defaults fast=true - proxies.own_pool [collector, bool] Own proxy pool (origin) / مجمع وكلاء خاص; defaults fast=false - fetch.max_bytes [collector, int] Max page size (bytes) / أقصى حجم للصفحة بالبايت; defaults fast=10000000 extended=20000000 deep=30000000 - fetch.max_redirects [collector, int] Max redirects / أقصى عدد تحويلات; defaults fast=10 - fetch.retries [collector, int] Retries / إعادة المحاولة; defaults fast=1 extended=2 deep=3 - fetch.js_detection [collector, bool] Detect JS-shell pages and render / كشف صفحات JavaScript الفارغة; defaults fast=true - fetch.identity [collector, enum] Fetch identity (bot or browser) / هوية الجلب (bot أو browser); defaults fast="bot" - fetch.consent_dismiss [collector, bool] Dismiss cookie/consent dialogs in the browser path / تجاوز نوافذ موافقة ملفات تعريف الارتباط; defaults fast=true - actions.allow_js [collector, bool] Allow executeJavascript actions / السماح بتنفيذ JavaScript في الإجراءات; defaults fast=true - cache.enabled [collector, bool] Page cache / ذاكرة التخزين المؤقت; defaults fast=true - cache.max_age [collector, int] Cache max age (ms) / عمر التخزين المؤقت بالمللي ثانية; defaults fast=172800000 - extractors.trafilatura [interpreter, bool] trafilatura extractor (origin) / مستخلص trafilatura في الأصل; defaults fast=false extended=true deep=true - extractors.readability [interpreter, bool] Main-content extractor (edge) / مستخلص المحتوى الرئيسي (الحافة); defaults fast=true - extractors.density [interpreter, bool] Arabic-aware text-density extractor / مستخلص كثافة النص العربي; defaults fast=false extended=true deep=true - extractors.rust [interpreter, bool] Rust extractor (origin) / مستخلص Rust في الأصل; defaults fast=false extended=true deep=true - extractors.go [interpreter, bool] Go extractor (origin) / مستخلص Go في الأصل; defaults fast=false extended=true deep=true - ensemble [interpreter, bool] Ensemble extraction (best by quality) / الاستخلاص الجماعي (الأفضل جودة); defaults fast=false extended=true deep=true - llm_cleanup [interpreter, bool] LLM cleanup when quality is low / تنظيف بالذكاء الاصطناعي عند ضعف الجودة; defaults fast=false extended=false deep=true - metadata.jsonld [interpreter, bool] JSON-LD and OpenGraph metadata / بيانات JSON-LD وOpenGraph; defaults fast=true - branding [interpreter, bool] Branding extraction / استخراج الهوية البصرية; defaults fast=true - change_tracking [interpreter, bool] Change tracking / تتبع التغييرات; defaults fast=true - quality.min [interpreter, float] Minimum quality before escalation / أدنى جودة قبل التصعيد; defaults fast=0.25 extended=0.35 deep=0.45 - summary.sentences [interpreter, int] Summary sentences / عدد جمل الملخص; defaults fast=5 extended=7 deep=10 - search.sources [researcher, list] Search sources / مصادر البحث; defaults fast=["web"] extended=["web","news","research"] deep=["web","news","research","github","pdf"] - search.backend.bing [researcher, bool] Bing RSS / Bing RSS; defaults fast=true - search.backend.duckduckgo [researcher, bool] DuckDuckGo HTML / DuckDuckGo; defaults fast=true - search.backend.mojeek [researcher, bool] Mojeek / Mojeek; defaults fast=true - search.backend.wikipedia [researcher, bool] Wikipedia (ar + en) / ويكيبيديا (عربي وإنجليزي); defaults fast=true - search.backend.wikidata [researcher, bool] Wikidata / ويكي بيانات; defaults fast=false extended=true deep=true - search.backend.google_news [researcher, bool] Google News RSS / Google News RSS; defaults fast=true - search.backend.bing_news [researcher, bool] Bing News RSS / Bing News RSS; defaults fast=true - search.backend.github [researcher, bool] GitHub search / GitHub; defaults fast=true - search.backend.arxiv [researcher, bool] arXiv / arXiv; defaults fast=true - search.backend.openalex [researcher, bool] OpenAlex / OpenAlex; defaults fast=true - search.backend.crossref [researcher, bool] Crossref / Crossref; defaults fast=true - search.backend.searxng [researcher, bool] SearXNG at origin / SearXNG في الأصل; defaults fast=true - search.timeout_ms [researcher, int] Per-source timeout (ms) / مهلة كل مصدر بحث; defaults fast=6000 extended=9000 deep=12000 - search.diversity [researcher, int] Max hits per domain / أقصى نتائج من النطاق الواحد; defaults fast=3 extended=2 deep=2 - query_expansion [researcher, bool] Arabic+English query expansion / توسيع الاستعلام عربي/إنجليزي; defaults fast=false extended=true deep=true - max_sources [researcher, int] Max sources / أقصى عدد مصادر; defaults fast=5 extended=12 deep=25 - rounds [researcher, int] Research rounds / جولات البحث; defaults fast=1 extended=3 deep=5 - verification [researcher, enum] Claim verification / التحقق من الادعاءات; defaults fast="off" extended="basic" deep="strict" - contradiction_report [researcher, bool] Contradiction report / تقرير التناقضات; defaults fast=false extended=false deep=true - rerank.embeddings [researcher, bool] Embedding rerank (bge-m3) / إعادة الترتيب بالتضمينات (bge-m3); defaults fast=false extended=true deep=true - llm.enabled [llm, bool] Enable LLMs / تفعيل النماذج اللغوية; defaults fast=true - llm.provider [llm, enum] LLM provider / مزوّد النموذج; defaults fast="auto" - llm.anthropic_model [llm, string] Claude model / نموذج Claude; defaults fast="claude-haiku-5-5" extended="claude-sonnet-5-5" deep="claude-opus-5-5" - llm.kimi_model [llm, string] Kimi model / نموذج Kimi; defaults fast="kimi-k2.6" - llm.workers_ai_model [llm, enum] Workers AI model / نموذج Workers AI; defaults fast="@cf/openai/gpt-oss-120b" - llm.review [llm, bool] Second-model review / مراجعة نموذج ثانٍ; defaults fast=false extended=true deep=true - ai.enabled [llm, bool] Enable Workers AI / تفعيل Workers AI; defaults fast=true - limits.max_credits [limits, int] Max credits per request / أقصى رصيد للطلب; defaults fast=100 extended=1000 deep=5000 - limits.max_minutes [limits, int] Max minutes / أقصى دقائق; defaults fast=2 extended=60 deep=720 - limits.max_pages [limits, int] Max pages / أقصى صفحات; defaults fast=100 extended=1000 deep=10000 - browser.enabled [limits, bool] Enable Browser Rendering / تفعيل Browser Rendering; defaults fast=true - output.language [output, enum] Output language / لغة المخرجات; defaults fast="auto" - output.citations [output, bool] Numbered citations / مراجع مرقمة; defaults fast=true - browser.placement [browser, enum] Browser placement / مكان تشغيل المتصفح; defaults fast="auto" - browser.display [browser, enum] Display / الشاشة; defaults fast="none" - browser.presence [browser, enum] Human-like presence / التصفح البشري; defaults fast="off" extended="natural" deep="natural" - browser.control [browser, enum] Control / من يقود; defaults fast="autonomous" - browser.stealth [browser, bool] Browser stealth / تخفي المتصفح; defaults fast=false - browser.idle_timeout_sec [browser, int] Idle timeout (s) / مهلة الخمول بالثواني; defaults fast=300 - browser.max_session_minutes [browser, int] Max session minutes / أقصى مدة للجلسة بالدقائق; defaults fast=15 - browser.allow_evaluate [browser, bool] Allow evaluate (JavaScript) / السماح بتنفيذ JavaScript; defaults fast=false - browser.domain_allowlist [browser, list] Domain allowlist / النطاقات المسموحة; defaults fast=[] - browser.domain_denylist [browser, list] Domain denylist / النطاقات المحظورة; defaults fast=[] - privacy.zero_data_retention [privacy, bool] Zero data retention / عدم الاحتفاظ بالبيانات; defaults fast=false - privacy.store_results_days [privacy, int] Result retention (days) / مدة حفظ النتائج بالأيام; defaults fast=1 extended=7 deep=30 - browser.agent.enabled [browser, bool] Enable the agent browser / تفعيل متصفح الوكيل; defaults fast=true - browser.device.enabled [browser, bool] Use the user's device / استخدام جهاز المستخدم; defaults fast=true - browser.max_session_sec [browser, int] Hard session limit (s) / أقصى مدة للجلسة بالثواني; defaults fast=900 extended=1800 deep=3600 - browser.snapshot.max_chars [browser, int] Snapshot max chars / أقصى طول للقطة; defaults fast=12000 extended=24000 deep=40000 - browser.snapshot.diff [browser, bool] Send diff against previous snapshot / إرسال الفرق عن اللقطة السابقة; defaults fast=true - browser.allow_domains [browser, list] Allowed domains (empty = all) / نطاقات مسموحة فقط; defaults fast=[] - browser.deny_domains [browser, list] Denied domains / نطاقات محظورة; defaults fast=[] - browser.respect_robots [browser, bool] Respect robots.txt in autonomous browsing / احترام robots.txt في التصفح الذاتي; defaults fast=true - browser.presence.speed [browser, float] Presence speed factor / سرعة الحركة البشرية; defaults fast=1 - browser.presence.typos [browser, bool] Rare corrected typos / أخطاء كتابة نادرة مصححة; defaults fast=true - browser.presence.max_dwell_ms [browser, int] Max reading dwell (ms) / أقصى زمن قراءة بالمللي ثانية; defaults fast=2500 extended=4000 deep=6000 - browser.live.frame_ms [browser, int] Live view frame interval (ms) / الفاصل بين إطارات العرض المباشر; defaults fast=800 - browser.live.quality [browser, int] Live view JPEG quality / جودة إطارات العرض المباشر; defaults fast=55 - browser.profiles.enabled [browser, bool] Encrypted persistent profiles / حفظ ملفات التعريف المشفرة; defaults fast=true - browser.downloads.max_bytes [browser, int] Max download size (bytes) / أقصى حجم للتنزيل; defaults fast=20000000 - browser.supervised.risky [browser, list] Steps that need approval / الخطوات التي تحتاج موافقة; defaults fast=["submit","purchase","send","login","delete"] - browser.rpc_timeout_ms [browser, int] Device/origin command deadline (ms) / مهلة أوامر الجهاز والأصل; defaults fast=30000 # Documentation pages - https://claude-crawler.trusted-intel.cc/docs — Overview / البداية - https://claude-crawler.trusted-intel.cc/docs/api — API reference / مرجع API - https://claude-crawler.trusted-intel.cc/docs/modes — Modes and settings / الأوضاع والإعدادات - https://claude-crawler.trusted-intel.cc/docs/mcp — MCP and agents / ربط MCP والوكلاء - https://claude-crawler.trusted-intel.cc/docs/compatibility — Compatibility table / جدول التوافق - https://claude-crawler.trusted-intel.cc/docs/browser — Agent browser / متصفح الوكيل - https://claude-crawler.trusted-intel.cc/docs/devices — Device pairing / اقتران الأجهزة - https://claude-crawler.trusted-intel.cc/docs/service-binding — Service Binding / ربط خدمات Workers - https://claude-crawler.trusted-intel.cc/docs/webhooks — Webhooks and signatures / Webhooks والتوقيع - https://claude-crawler.trusted-intel.cc/docs/errors — Errors and limits / الأخطاء والحدود