适用对象
当同一决策需要跨时间、跨列表或跨多个产品执行时使用自动化。
尝试搜索产品、目标、端点路径或 API 主题。
将多个受支持的 API 请求加入队列,无需保持客户端连接即可收集结果。
当同一决策需要跨时间、跨列表或跨多个产品执行时使用自动化。
需要将最多 100 个支持的 GET 请求加入队列,并在 24 小时保留窗口内获取 JSON 或 CSV 结果时选择。
将多个受支持的 API 请求加入队列,无需保持客户端连接即可收集结果。
集成前,请查看支持的操作、输入、输出、执行模式和响应限制。
免费 需要身份验证。有关确切费用和按项计费,请查看操作参考。
使用文档化的操作来收集、评估、补充、验证、比较、保护或监测公开证据。
| 参数 | 类型 | 必需 |
|---|---|---|
| notify_webhook | unknown | 可选 |
| requests | object[] | 必需 |
| webhook | object | 可选 |
| 字段 | 类型 |
|---|---|
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 POST "https://domscan.net/v1/batches" \
-H "Content-Type: application/json" \
-H "X-API-Key: $DOMSCAN_API_KEY" \
-d '{
"requests": [
{
"path": "/v1/status",
"query": {
"domain": "example.com"
},
"reference": "customer-42"
},
{
"path": "/v1/dns",
"query": {
"domain": "example.org",
"type": "MX"
}
}
],
"webhook": {
"url": "https://example.com/hooks/domscan",
"secret": "replace-with-a-private-secret"
}
}'const response = await fetch("https://domscan.net/v1/batches", {
method: "POST",
headers: { "X-API-Key": process.env.DOMSCAN_API_KEY, "Content-Type": "application/json" },
body: JSON.stringify({
"requests": [
{
"path": "/v1/status",
"query": {
"domain": "example.com"
},
"reference": "customer-42"
},
{
"path": "/v1/dns",
"query": {
"domain": "example.org",
"type": "MX"
}
}
],
"webhook": {
"url": "https://example.com/hooks/domscan",
"secret": "replace-with-a-private-secret"
}
}),
});
const data = await response.json();
console.log(data);import os
import requests
response = requests.post(
"https://domscan.net/v1/batches",
headers={"X-API-Key": os.environ["DOMSCAN_API_KEY"]},
json={
"requests": [
{
"path": "/v1/status",
"query": {
"domain": "example.com",
},
"reference": "customer-42",
},
{
"path": "/v1/dns",
"query": {
"domain": "example.org",
"type": "MX",
},
},
],
"webhook": {
"url": "https://example.com/hooks/domscan",
"secret": "replace-with-a-private-secret",
},
},
)
print(response.json())package main
import (
"fmt"
"io"
"net/http"
"os"
"strings"
)
func main() {
body := strings.NewReader(`{
"requests": [
{
"path": "/v1/status",
"query": {
"domain": "example.com"
},
"reference": "customer-42"
},
{
"path": "/v1/dns",
"query": {
"domain": "example.org",
"type": "MX"
}
}
],
"webhook": {
"url": "https://example.com/hooks/domscan",
"secret": "replace-with-a-private-secret"
}
}`)
req, err := http.NewRequest(http.MethodPost, "https://domscan.net/v1/batches", body)
if err != nil {
panic(err)
}
req.Header.Set("X-API-Key", os.Getenv("DOMSCAN_API_KEY"))
req.Header.Set("Content-Type", "application/json")
resp, err := http.DefaultClient.Do(req)
if err != nil {
panic(err)
}
defer resp.Body.Close()
data, err := io.ReadAll(resp.Body)
if err != nil {
panic(err)
}
fmt.Println(resp.Status, string(data))
}require "json"
require "net/http"
uri = URI("https://domscan.net/v1/batches")
request = Net::HTTP::Post.new(uri)
request["X-API-Key"] = ENV.fetch("DOMSCAN_API_KEY")
request["Content-Type"] = "application/json"
request.body = JSON.generate({
"requests" => [
{
"path" => "/v1/status",
"query" => {
"domain" => "example.com"
},
"reference" => "customer-42"
},
{
"path" => "/v1/dns",
"query" => {
"domain" => "example.org",
"type" => "MX"
}
}
],
"webhook" => {
"url" => "https://example.com/hooks/domscan",
"secret" => "replace-with-a-private-secret"
}
})
response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) do |http|
http.request(request)
end
puts JSON.pretty_generate(JSON.parse(response.body)){
"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"
}
}
200 成功202 已接受400 请求错误401 未授权402 需要付款409 HTTP 409429 请求过多使用 异步 API 批处理 的 API 参考来查看参数、响应字段、示例、状态码和支持的操作模式。
未知或部分结果表示无法完全确定所请求的证据。在后续决策中保留结果状态、置信度、新鲜度和限制信息。
费用取决于操作和执行模式。有关当前积分费用、身份验证要求和按项规则,请查看端点参考。
被这些公司的人员使用