للمطوّرين
مرجع API
اربط قدرات التحسين بالذكاء الاصطناعي في DEXUN AdWhiz عبر ثلاث منصات بأدواتك أو نصوصك البرمجية أو أنظمتك الخلفية عبر REST.
عنوان URL الأساسي
تُرسَل جميع طلبات API إلى هذا الجذر:
https://www.7275.com/api/v1استخدام HTTPS إلزامي. تُرفض طلبات HTTP (ولا تتم إعادة توجيهها).
المصادقة
يحتاج كل طلب إلى رمز Bearer في ترويسة Authorization. أنشئ رمزًا من لوحة التحكم ← الإعدادات ← API Keys. تتوفر المفاتيح بنوعين live وtest، ولا يصل كل منهما إلا إلى بيئته.
curl https://www.7275.com/api/v1/accounts \
-H "Authorization: Bearer dxk_live_...your-key..."- صيغة مفتاح live: يبدأ بـ dxk_live_ ويتكوّن من 64 حرفًا
- صيغة مفتاح test: يبدأ بـ dxk_test_ ومقصور على حساب sandbox
- لا تستخدم المفاتيح أبدًا في كود الواجهة الأمامية — مرّر الطلبات عبر خادمك الخلفي
- إذا تسرّب مفتاح، ألغِه وأنشئ مفتاحًا جديدًا فورًا من لوحة التحكم
الاستخدام مباشرةً من Claude Desktop / Cursor (خادم MCP)
نوفّر خادم Model Context Protocol بلا أي اعتماديات، حتى تتمكن عملاء MCP مثل Claude Desktop وCursor من قراءة حالة AdWhiz لديك مباشرةً. لا حاجة لكتابة أي كود — انسخ كتلة الإعدادات، والصق مفتاح API، ثم أعد تشغيل العميل.
- خمس أدوات للقراءة فقط: عرض الحسابات الإعلانية، وعرض توصيات الذكاء الاصطناعي، ومعرفة وفورات هذا الشهر، وعرض النشاط الأخير، والتحقق من حصة API
- أدوات الكتابة (apply / pause) غير متاحة عمدًا حتى الآن — بانتظار خروج المحسِّن من shadow mode وتوفّر أدلة معايرة كافية لضبطها
- نص Node 18+ واحد. دون npm install. يعمل بلا مشكلات على الأجهزة غير المتصلة / المعزولة (airgapped)
- لا يغادر مفتاح API جهازك أبدًا. تذهب جميع الطلبات مباشرةً عبر HTTPS إلى www.7275.com
أضف ما يلي إلى ملف claude_desktop_config.json في Claude Desktop (macOS: ~/Library/Application Support/Claude/، Windows: %APPDATA%\Claude\):
{
"mcpServers": {
"adwhiz": {
"command": "node",
"args": ["/path/to/mcp-server/src/index.mjs"],
"env": {
"ADWHIZ_API_KEY": "dxk_live_..."
}
}
}
}دليل التثبيت الكامل وإعدادات Cursor واستكشاف الأخطاء وإصلاحها على GitHub: github.com/dexun-inc/adwhiz/mcp-server.
نقاط النهاية
تتيح واجهة API في الإصدار v1 عدد 13 نقطة نهاية أساسية تغطي الهوية، وقراءة الحسابات، وإنشاء التوصيات (تطبيقها غير متاح بعد)، وسجلات التدقيق، وإدارة مفاتيح API، والاستعلام عن الحصة، وموجز سجل التغييرات.
| الطريقة | المسار | الوصف |
|---|---|---|
| GET | /me | يُعيد مالك الرمز المستدعي + الحصة المتبقية من حد المعدّل (whoami) |
| GET | /accounts | يعرض جميع الحسابات الإعلانية التي ربطها المستخدم الحالي (عبر المنصات الثلاث) |
| GET | /accounts/{id}/campaigns | يعرض الحملات والمجموعات الإعلانية والكلمات المفتاحية ومقاييس 7/30 يومًا لحساب واحد |
| POST | /recommendations/generate | يطلب من الذكاء الاصطناعي إنشاء دفعة جديدة من توصيات التحسين |
| GET | /recommendations | يعرض جميع التوصيات المعلّقة / المطبّقة / المتجاهَلة |
| POST | /recommendations/{id}/apply | تطبيق توصية — غير متاح بعد: يعيد 501 not_supported ولا يغيّر أي شيء |
| POST | /recommendations/{id}/dismiss | تجاهل توصية — غير متاح بعد: يعيد 501 not_supported ولا يغيّر أي شيء |
| POST | /changes/{id}/rollback | التراجع عن تغيير مطبّق — غير متاح بعد: يعيد 501 not_supported ولا يغيّر أي شيء |
| GET | /audit-log | (مُهمَل، يتوقف في 2027-05-23) سجل التدقيق الكامل. استخدم /audit-events بدلًا منه — يستند إلى جدول audit_events الفعلي ويدعم التصفية بـ ?kind |
| GET | /audit-events | تدفق أحداث تدقيق الأمان (تسجيل الدخول / كلمة المرور / OAuth / الاشتراك)، مع عوامل التصفية ?since + ?kind |
| GET | /api-keys | يعرض مفاتيح API الخاصة بالمستدعي (بما في ذلك lastUsedAt + active)؛ ولا يُعيد hashedKey أبدًا |
| GET | /usage | يقرأ tier الحالي وحد RPM والمتبقي وreset_at دون الحاجة إلى طلب اختباري |
| GET | /changelog | موجز JSON لسجل تغييرات المنتج (عام، دون مصادقة) يدعم ETag + ?lang + ?limit (1..50) + ?since=YYYY-MM-DD — الصيغة المعيارية للاستعلام التزايدي |
مثال على طلب
أنشئ دفعة جديدة من توصيات التحسين للمنصات الثلاث:
curl -X POST https://www.7275.com/api/v1/recommendations/generate \
-H "Authorization: Bearer dxk_live_..." \
-H "Content-Type: application/json" \
-d '{
"account_id": "ga-548-203-7184",
"platforms": ["google_ads", "meta_ads", "tiktok_ads"],
"window": "7d"
}'مثال على الاستجابة:
{
"summary": "Pausing 3 high-CPA keywords and reallocating budget...",
"recommendations": [
{
"id": "rec_001",
"type": "pause_keyword",
"target": { "accountId": "ga-548-203-7184", "keywordText": "wool socks" },
"title": "Pause broad-match 'wool socks'",
"reason": "7-day CPA $45.82 vs target $8",
"expectedImpact": "Save ~$412/week",
"confidence": "high"
}
]
}الاستعلام التزايدي عن /changelog
نقطة النهاية /api/v1/changelog عامة (لا تتطلب مفتاح API) وتدعم أربع وسائل لتوفير عرض النطاق: ETag + If-None-Match، وLast-Modified + If-Modified-Since (curl -z)، والمعامل ?since=YYYY-MM-DD للجلب حسب التاريخ، والمعامل ?limit=N لتحديد الحجم. يمكن لحزم SDK ونصوص cron الجمع بينها للاستعلام المتكرر دون إعادة تنزيل JSON نفسه.
# 1. First call — store the ETag (or Last-Modified) you get back.
curl -i 'https://www.7275.com/api/v1/changelog?limit=10'
# 2. Subsequent calls — pass the stored ETag.
# Server returns 304 with empty body if nothing has shipped.
curl -i 'https://www.7275.com/api/v1/changelog?limit=10' \
-H 'If-None-Match: "abc123..."'
# 3. Or anchor on a date instead of an ETag.
# Only entries whose `date >= since` come back; pair with ?limit
# to cap the response size.
curl 'https://www.7275.com/api/v1/changelog?since=2026-01-01&limit=20'
# 4. curl -z for Last-Modified-style conditional GET (no ETag needed):
curl -z 'Mon, 20 May 2026 00:00:00 GMT' \
'https://www.7275.com/api/v1/changelog'حدود المعدّل
مقسّمة حسب خطة الاشتراك لتجنّب إرهاق حصص Google / Meta / TikTok لدى المصدر:
- Professional: 120 طلبًا في الدقيقة
- Business: 600 طلب في الدقيقة
- Enterprise: مخصّص (عادةً 3,000 طلب في الدقيقة)
- عند تجاوز الحد تُعاد 429 مع ترويسة retry-after — يُنصح باستخدام التراجع الأسّي (exponential backoff)
رموز الأخطاء
تُعيد جميع الأخطاء JSON يتضمن الحقول error.code وerror.message وerror.request_id:
| حالة HTTP | المعنى |
|---|---|
401 | مفتاح API مفقود أو غير صالح |
403 | الحساب غير مخوّل للوصول إلى هذا المورد (نطاق OAuth غير كافٍ) |
404 | المورد غير موجود أو تم حذفه |
422 | معلمات الطلب غير صالحة |
429 | تم تجاوز حد المعدّل — انتظر المدة المحددة في ترويسة retry-after |
500 | خطأ في الخادم — تم الإبلاغ عنه تلقائيًا |
503 | API المنصة المصدر غير متاح مؤقتًا (Google / Meta / TikTok) |