مرجع المطورين
دفعات API غير المتزامنة
ضع العديد من طلبات API المدعومة في قائمة انتظار واجمع نتائجها من دون إبقاء اتصال العميل مفتوحاً.
دفعات API غير المتزامنة
ضع العديد من طلبات API المدعومة في قائمة انتظار واجمع نتائجها من دون إبقاء اتصال العميل مفتوحاً.
POST
/v1/batches
آلية عمل المعالجة الدفعية
- تقبل كل دفعة ما يصل إلى 100 طلب GET عام ومدعوم.
- يحتفظ كل عنصر بالسعر المعتاد لنقطة النهاية الخاصة به، ويُرد رصيد العناصر التي تنتهي بالفشل كل على حدة.
- تظل حالة المهمة ونتائجها متاحة لجميع أعضاء الحساب لمدة 24 ساعة.
- يمكن لخطاف ويب HTTPS اختياري إشعار نظامك عندما تصل المعالجة إلى حالة نهائية.
طلب مثال
curl -X POST "https://domscan.net/v1/batches" \
-H "X-API-Key: $DOMSCAN_API_KEY" \
-H "Idempotency-Key: customer-import-42" \
-H "Content-Type: application/json" \
-d '{
"requests": [
{"path": "/v1/status", "query": {"domain": "example.com"}},
{"path": "/v1/dns", "query": {"domain": "example.org", "type": "MX"}}
]
}'
حقول الرد
| الحقل | النوع |
|---|---|
job |
object |
job.id |
string |
job.status |
string |
job.total |
integer |
job.counts |
object |
job.counts.pending |
integer |
job.counts.processing |
integer |
job.counts.succeeded |
integer |
job.counts.failed |
integer |
job.counts.cancelled |
integer |
job.billing |
object |
job.billing.credits_charged |
integer |
job.billing.credits_refunded |
integer |
job.billing.credits_net |
integer |
job.webhook |
object |
job.webhook.configured |
boolean |
job.webhook.status |
string |
job.webhook.attempts |
integer |
job.status_url |
string |
job.results_url |
string |
job.results_csv_url |
string |
job.poll_after_ms |
integer | null |
job.created_at |
string |
job.started_at |
string | null |
job.completed_at |
string | null |
job.cancelled_at |
string | null |
job.updated_at |
string |
job.processing_deadline_at |
string |
job.results_expires_at |
string |
مثال الرد
{
"job": {
"id": "example-id",
"status": "queued",
"total": 1,
"counts": {
"pending": 1,
"processing": 1,
"succeeded": 1,
"failed": 1,
"cancelled": 1
},
"billing": {
"credits_charged": 1,
"credits_refunded": 1,
"credits_net": 1
},
"webhook": {
"configured": false,
"status": "not_configured",
"attempts": 1
},
"status_url": "https://example.com",
"results_url": "https://example.com",
"results_csv_url": "https://example.com",
"created_at": "2026-08-27T12:00:00Z",
"updated_at": "2026-08-27T12:00:00Z",
"processing_deadline_at": "2026-08-27T12:00:00Z",
"results_expires_at": "2026-08-27T12:00:00Z",
"poll_after_ms": 1,
"started_at": "2026-08-27T12:00:00Z",
"completed_at": "2026-08-27T12:00:00Z",
"cancelled_at": "2026-08-27T12:00:00Z"
}
}
الاستعلام الدوري والإلغاء
استعلم دورياً من نقطة نهاية الحالة، أو استرجع النتائج بترتيبها، أو ألغِ العمل الذي لم يبدأ.
GET /v1/batches/{job_id}
GET /v1/batches/{job_id}/results
GET /v1/batches/{job_id}/results?format=csv
DELETE /v1/batches/{job_id}
خطافات ويب موقعة عند الاكتمال
تستخدم تواقيع خطاف الويب HMAC-SHA256 على الطابع الزمني، ثم نقطة، ثم نص جسم الطلب كما هو تماماً. تحقق من الطابع الزمني قبل قبول الإرسال.
X-DomScan-Event: batch.completed
X-DomScan-Timestamp: 1785231000
X-DomScan-Signature: sha256=...
POST
/v1/domain-discovery/jobs
معاملات الجسم
| المعامل | النوع | مطلوب |
|---|---|---|
| tlds | string[] | مطلوب |
| limit | integer | اختياري |
| cursor | string | اختياري |
| min_length |
integer
الافتراضي
3
|
اختياري |
| max_length |
integer
الافتراضي
16
|
اختياري |
| singular_only |
boolean
الافتراضي
false
|
اختياري |
حقول الرد
| الحقل | النوع |
|---|---|
job |
object |
job.id |
string |
job.status |
string |
job.total |
integer |
job.counts |
object |
job.counts.pending |
integer |
job.counts.processing |
integer |
job.counts.succeeded |
integer |
job.counts.failed |
integer |
job.counts.cancelled |
integer |
job.billing |
object |
job.billing.credits_charged |
integer |
job.billing.credits_refunded |
integer |
job.billing.credits_net |
integer |
job.webhook |
object |
job.webhook.configured |
boolean |
job.webhook.status |
string |
job.webhook.attempts |
integer |
job.status_url |
string |
job.results_url |
string |
job.results_csv_url |
string |
job.poll_after_ms |
integer | null |
job.created_at |
string |
job.started_at |
string | null |
job.completed_at |
string | null |
job.cancelled_at |
string | null |
job.updated_at |
string |
job.processing_deadline_at |
string |
job.results_expires_at |
string |
discovery |
object |
discovery.corpus |
string |
discovery.corpus_version |
string |
discovery.total_matching_words |
integer |
discovery.page_offset |
integer |
discovery.page_words |
integer |
discovery.domain_checks |
integer |
discovery.tlds[] |
string[] |
discovery.filters |
object |
discovery.filters.min_length |
integer |
discovery.filters.max_length |
integer |
discovery.filters.singular_only |
boolean |
discovery.credits_per_domain |
integer |
discovery.next_cursor |
string | null |
طلب مثال
curl -X POST "https://domscan.net/v1/domain-discovery/jobs" \
-H "Content-Type: application/json" \
-H "X-API-Key: $DOMSCAN_API_KEY" \
-d '{
"tlds": [
"io",
"ai"
],
"limit": 50,
"min_length": 4,
"max_length": 8,
"singular_only": true
}'
مثال الرد
{
"job": {
"id": "example-id",
"status": "queued",
"total": 1,
"counts": {
"pending": 1,
"processing": 1,
"succeeded": 1,
"failed": 1,
"cancelled": 1
},
"billing": {
"credits_charged": 1,
"credits_refunded": 1,
"credits_net": 1
},
"webhook": {
"configured": false,
"status": "not_configured",
"attempts": 1
},
"status_url": "https://example.com",
"results_url": "https://example.com",
"results_csv_url": "https://example.com",
"created_at": "2026-08-27T12:00:00Z",
"updated_at": "2026-08-27T12:00:00Z",
"processing_deadline_at": "2026-08-27T12:00:00Z",
"results_expires_at": "2026-08-27T12:00:00Z",
"poll_after_ms": 1,
"started_at": "2026-08-27T12:00:00Z",
"completed_at": "2026-08-27T12:00:00Z",
"cancelled_at": "2026-08-27T12:00:00Z"
},
"discovery": {
"corpus": "iannuttall/unclaimed",
"corpus_version": "example",
"total_matching_words": 1,
"page_offset": 1,
"page_words": 1,
"domain_checks": 1,
"tlds": [
"com",
"net",
"org"
],
"filters": {
"min_length": 1,
"max_length": 1,
"singular_only": false
},
"credits_per_domain": 1,
"next_cursor": "example"
}
}
GET
/v1/batches
معاملات الاستعلام
| المعامل | النوع | مطلوب |
|---|---|---|
| limit |
integer
الافتراضي
25
|
اختياري |
حقول الرد
| الحقل | النوع |
|---|---|
jobs[] |
object[] |
jobs[] |
object |
jobs[].id |
string |
jobs[].status |
string |
jobs[].total |
integer |
jobs[].counts |
object |
jobs[].counts.pending |
integer |
jobs[].counts.processing |
integer |
jobs[].counts.succeeded |
integer |
jobs[].counts.failed |
integer |
jobs[].counts.cancelled |
integer |
jobs[].billing |
object |
jobs[].billing.credits_charged |
integer |
jobs[].billing.credits_refunded |
integer |
jobs[].billing.credits_net |
integer |
jobs[].webhook |
object |
jobs[].webhook.configured |
boolean |
jobs[].webhook.status |
string |
jobs[].webhook.attempts |
integer |
jobs[].status_url |
string |
jobs[].results_url |
string |
jobs[].results_csv_url |
string |
jobs[].poll_after_ms |
integer | null |
jobs[].created_at |
string |
jobs[].started_at |
string | null |
jobs[].completed_at |
string | null |
jobs[].cancelled_at |
string | null |
jobs[].updated_at |
string |
jobs[].processing_deadline_at |
string |
jobs[].results_expires_at |
string |
retention_hours |
integer |
طلب مثال
curl -H "X-API-Key: $DOMSCAN_API_KEY" "https://domscan.net/v1/batches?limit=25"
مثال الرد
{
"jobs": [
{
"id": "example-id",
"status": "queued",
"total": 1,
"counts": {
"pending": 1,
"processing": 1,
"succeeded": 1,
"failed": 1,
"cancelled": 1
},
"billing": {
"credits_charged": 1,
"credits_refunded": 1,
"credits_net": 1
},
"webhook": {
"configured": false,
"status": "not_configured",
"attempts": 1
},
"status_url": "https://example.com",
"results_url": "https://example.com",
"results_csv_url": "https://example.com",
"created_at": "2026-08-27T12:00:00Z",
"updated_at": "2026-08-27T12:00:00Z",
"processing_deadline_at": "2026-08-27T12:00:00Z",
"results_expires_at": "2026-08-27T12:00:00Z",
"poll_after_ms": 1,
"started_at": "2026-08-27T12:00:00Z",
"completed_at": "2026-08-27T12:00:00Z",
"cancelled_at": "2026-08-27T12:00:00Z"
}
],
"retention_hours": 24
}
GET
/v1/batches/:job_id
معاملات الاستعلام
| المعامل | النوع | مطلوب |
|---|---|---|
| job_id | string | مطلوب |
حقول الرد
| الحقل | النوع |
|---|---|
job |
object |
job.id |
string |
job.status |
string |
job.total |
integer |
job.counts |
object |
job.counts.pending |
integer |
job.counts.processing |
integer |
job.counts.succeeded |
integer |
job.counts.failed |
integer |
job.counts.cancelled |
integer |
job.billing |
object |
job.billing.credits_charged |
integer |
job.billing.credits_refunded |
integer |
job.billing.credits_net |
integer |
job.webhook |
object |
job.webhook.configured |
boolean |
job.webhook.status |
string |
job.webhook.attempts |
integer |
job.status_url |
string |
job.results_url |
string |
job.results_csv_url |
string |
job.poll_after_ms |
integer | null |
job.created_at |
string |
job.started_at |
string | null |
job.completed_at |
string | null |
job.cancelled_at |
string | null |
job.updated_at |
string |
job.processing_deadline_at |
string |
job.results_expires_at |
string |
طلب مثال
curl -H "X-API-Key: $DOMSCAN_API_KEY" "https://domscan.net/v1/batches/string"
مثال الرد
{
"job": {
"id": "example-id",
"status": "queued",
"total": 1,
"counts": {
"pending": 1,
"processing": 1,
"succeeded": 1,
"failed": 1,
"cancelled": 1
},
"billing": {
"credits_charged": 1,
"credits_refunded": 1,
"credits_net": 1
},
"webhook": {
"configured": false,
"status": "not_configured",
"attempts": 1
},
"status_url": "https://example.com",
"results_url": "https://example.com",
"results_csv_url": "https://example.com",
"created_at": "2026-08-27T12:00:00Z",
"updated_at": "2026-08-27T12:00:00Z",
"processing_deadline_at": "2026-08-27T12:00:00Z",
"results_expires_at": "2026-08-27T12:00:00Z",
"poll_after_ms": 1,
"started_at": "2026-08-27T12:00:00Z",
"completed_at": "2026-08-27T12:00:00Z",
"cancelled_at": "2026-08-27T12:00:00Z"
}
}
GET
/v1/batches/:job_id/results
معاملات الاستعلام
| المعامل | النوع | مطلوب |
|---|---|---|
| job_id | string | مطلوب |
| after |
integer
الافتراضي
-1
|
اختياري |
| limit |
integer
الافتراضي
100
|
اختياري |
| format |
string
القيم المسموحة
jsoncsv
الافتراضي
json
|
اختياري |
حقول الرد
| الحقل | النوع |
|---|---|
job |
object |
job.id |
string |
job.status |
string |
job.total |
integer |
job.counts |
object |
job.counts.pending |
integer |
job.counts.processing |
integer |
job.counts.succeeded |
integer |
job.counts.failed |
integer |
job.counts.cancelled |
integer |
job.billing |
object |
job.billing.credits_charged |
integer |
job.billing.credits_refunded |
integer |
job.billing.credits_net |
integer |
job.webhook |
object |
job.webhook.configured |
boolean |
job.webhook.status |
string |
job.webhook.attempts |
integer |
job.status_url |
string |
job.results_url |
string |
job.results_csv_url |
string |
job.poll_after_ms |
integer | null |
job.created_at |
string |
job.started_at |
string | null |
job.completed_at |
string | null |
job.cancelled_at |
string | null |
job.updated_at |
string |
job.processing_deadline_at |
string |
job.results_expires_at |
string |
results[] |
object[] |
results[] |
object |
results[].position |
integer |
results[].reference |
string | null |
results[].request |
object |
results[].request.method |
string |
results[].request.path |
string |
results[].request.query |
object |
results[].status |
string |
results[].attempts |
integer |
results[].http_status |
integer | null |
results[].result |
object | null |
results[].error |
object | null |
results[].billing |
object |
results[].started_at |
string | null |
results[].completed_at |
string | null |
next_after |
integer | null |
طلب مثال
curl -H "X-API-Key: $DOMSCAN_API_KEY" "https://domscan.net/v1/batches/example/results?after=-1&limit=25&format=json"
مثال الرد
{
"job": {
"id": "example-id",
"status": "queued",
"total": 1,
"counts": {
"pending": 1,
"processing": 1,
"succeeded": 1,
"failed": 1,
"cancelled": 1
},
"billing": {
"credits_charged": 1,
"credits_refunded": 1,
"credits_net": 1
},
"webhook": {
"configured": false,
"status": "not_configured",
"attempts": 1
},
"status_url": "https://example.com",
"results_url": "https://example.com",
"results_csv_url": "https://example.com",
"created_at": "2026-08-27T12:00:00Z",
"updated_at": "2026-08-27T12:00:00Z",
"processing_deadline_at": "2026-08-27T12:00:00Z",
"results_expires_at": "2026-08-27T12:00:00Z",
"poll_after_ms": 1,
"started_at": "2026-08-27T12:00:00Z",
"completed_at": "2026-08-27T12:00:00Z",
"cancelled_at": "2026-08-27T12:00:00Z"
},
"results": [
{
"position": 1,
"request": {
"method": "GET",
"path": "example",
"query": {}
},
"status": "pending",
"attempts": 1,
"http_status": 1,
"result": {},
"error": {},
"billing": {},
"reference": "example",
"started_at": "2026-08-27T12:00:00Z",
"completed_at": "2026-08-27T12:00:00Z"
}
],
"next_after": 1
}
DELETE
/v1/batches/:job_id
معاملات الاستعلام
| المعامل | النوع | مطلوب |
|---|---|---|
| job_id | string | مطلوب |
حقول الرد
| الحقل | النوع |
|---|---|
job |
object |
job.id |
string |
job.status |
string |
job.total |
integer |
job.counts |
object |
job.counts.pending |
integer |
job.counts.processing |
integer |
job.counts.succeeded |
integer |
job.counts.failed |
integer |
job.counts.cancelled |
integer |
job.billing |
object |
job.billing.credits_charged |
integer |
job.billing.credits_refunded |
integer |
job.billing.credits_net |
integer |
job.webhook |
object |
job.webhook.configured |
boolean |
job.webhook.status |
string |
job.webhook.attempts |
integer |
job.status_url |
string |
job.results_url |
string |
job.results_csv_url |
string |
job.poll_after_ms |
integer | null |
job.created_at |
string |
job.started_at |
string | null |
job.completed_at |
string | null |
job.cancelled_at |
string | null |
job.updated_at |
string |
job.processing_deadline_at |
string |
job.results_expires_at |
string |
طلب مثال
curl -X DELETE "https://domscan.net/v1/batches/string" \
-H "Content-Type: application/json" \
-H "X-API-Key: $DOMSCAN_API_KEY" \
-d '{}'
مثال الرد
{
"job": {
"id": "example-id",
"status": "queued",
"total": 1,
"counts": {
"pending": 1,
"processing": 1,
"succeeded": 1,
"failed": 1,
"cancelled": 1
},
"billing": {
"credits_charged": 1,
"credits_refunded": 1,
"credits_net": 1
},
"webhook": {
"configured": false,
"status": "not_configured",
"attempts": 1
},
"status_url": "https://example.com",
"results_url": "https://example.com",
"results_csv_url": "https://example.com",
"created_at": "2026-08-27T12:00:00Z",
"updated_at": "2026-08-27T12:00:00Z",
"processing_deadline_at": "2026-08-27T12:00:00Z",
"results_expires_at": "2026-08-27T12:00:00Z",
"poll_after_ms": 1,
"started_at": "2026-08-27T12:00:00Z",
"completed_at": "2026-08-27T12:00:00Z",
"cancelled_at": "2026-08-27T12:00:00Z"
}
}

