Ontwikkelaarsreferentie
Domeinreputatie
Haal een reputatiescore (0-100) op voor elk domein op basis van meerdere beveiligings- en vertrouwenssignalen.
Domeinreputatie
Haal een reputatiescore (0-100) op voor elk domein op basis van meerdere beveiligings- en vertrouwenssignalen. De API controleert DNS-beveiligingsconfiguratie, SSL-certificaten, blacklists (Spamhaus, SURBL), dreigingsinformatie (URLhaus), e-mailauthenticatie en webaanwezigheid om een gewogen score met uitvoerbare aanbevelingen te berekenen.
GET
/v1/reputation
Tegoeden: 3
Queryparameters
| Parameter | Type | vereist |
|---|---|---|
| domain | string | vereist |
Antwoordvelden
| Veld | Type |
|---|---|
domain |
string |
reputation_score |
integer |
grade |
string |
risk_level |
string |
reputation_score_confidence |
string |
grade_capped_by_parking |
boolean |
factors |
object |
factors.age |
object |
factors.dns_security |
object |
factors.ssl_certificate |
object |
factors.hosting |
object |
factors.web_presence |
object |
factors.blacklists |
object |
factors.email_config |
object |
recommendations[] |
object[] |
recommendations[] |
object |
recommendations[].priority |
string |
recommendations[].category |
string |
recommendations[].action |
string |
recommendations[].impact |
string |
evidence_summary |
object |
evidence_summary.checks_performed |
integer |
evidence_summary.cache_status |
string |
evidence_summary.confidence |
string |
evidence_summary.risk_level |
string |
evidence_summary.factor_count |
integer |
evidence_summary.scored_factor_count |
integer |
evidence_summary.passing_factor_count |
integer |
evidence_summary.warning_factor_count |
integer |
evidence_summary.failing_factor_count |
integer |
evidence_summary.lowest_scoring_factors[] |
object[] |
evidence_summary.lowest_scoring_factors[] |
object |
evidence_summary.lowest_scoring_factors[].name |
string |
evidence_summary.lowest_scoring_factors[].score |
number | null |
evidence_summary.lowest_scoring_factors[].weight |
number | null |
evidence_summary.blacklist_listed_count |
integer |
evidence_summary.recommendation_count |
integer |
evidence_summary.high_priority_recommendation_count |
integer |
evidence_summary.grade_capped_by_parking |
boolean |
meta |
object |
meta.query_time_ms |
integer |
meta.checks_performed |
integer |
meta.cached |
boolean |
meta.served_by |
string |
Voorbeeldverzoek
curl -H "X-API-Key: $DOMSCAN_API_KEY" "https://domscan.net/v1/reputation?domain=example.com"const response = await fetch("https://domscan.net/v1/reputation?domain=example.com", {
headers: { "X-API-Key": process.env.DOMSCAN_API_KEY },
});
const data = await response.json();
console.log(data);import os
import requests
response = requests.get(
"https://domscan.net/v1/reputation?domain=example.com",
headers={"X-API-Key": os.environ["DOMSCAN_API_KEY"]},
)
print(response.json())package main
import (
"fmt"
"io"
"net/http"
"os"
)
func main() {
req, err := http.NewRequest(http.MethodGet, "https://domscan.net/v1/reputation?domain=example.com", nil)
if err != nil {
panic(err)
}
req.Header.Set("X-API-Key", os.Getenv("DOMSCAN_API_KEY"))
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/reputation?domain=example.com")
request = Net::HTTP::Get.new(uri)
request["X-API-Key"] = ENV.fetch("DOMSCAN_API_KEY")
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))Voorbeeldantwoord
{
"domain": "example.com",
"reputation_score": 69,
"grade": "C",
"risk_level": "medium",
"reputation_score_confidence": "high",
"grade_capped_by_parking": true,
"factors": {
"age": {
"score": 84,
"weight": 0.1,
"details": {
"age_days": 5840
}
},
"dns_security": {
"score": 80,
"weight": 0.2,
"details": {
"dnssec": false,
"spf": true,
"dmarc": true,
"dmarc_policy": "reject"
}
},
"ssl_certificate": {
"score": 92,
"weight": 0.2,
"details": {
"valid": true,
"error": null,
"grade": "A",
"chain_valid": true,
"min_tls_version": "TLSv1.3"
}
},
"hosting": {
"score": 35,
"weight": 0.1,
"details": {
"has_a_records": true,
"a_record_count": 2,
"parked": true
}
},
"web_presence": {
"score": 20,
"weight": 0.15,
"details": {
"has_website": true,
"redirects_to_https": true,
"response_time_ms": 87,
"parked": true,
"for_sale": false,
"parking_provider": "Example Parking"
}
},
"blacklists": {
"score": 100,
"weight": 0.1,
"details": {
"listed": false,
"threat_level": "none",
"domain_sources": [],
"ip_sources": []
}
},
"email_config": {
"score": 100,
"weight": 0.15,
"details": {
"has_mx": true,
"has_spf": true,
"has_dmarc": true,
"mx_count": 2
}
}
},
"recommendations": [
{
"priority": "high",
"category": "web_presence",
"action": "Move the domain off parking if it is intended for customer traffic.",
"impact": "+10 points"
}
],
"meta": {
"query_time_ms": 187,
"checks_performed": 7,
"cached": false,
"served_by": "pop=MAD country=ES"
}
}
HTTP-statuscodes
200OK400Ongeldig verzoek401Niet geautoriseerd402Betaling vereist429Te veel verzoeken
POST
/v1/reputation/bulk
Inhoud van het verzoek
| Veld | Type | Beschrijving |
|---|---|---|
| domains vereist | string[] | Array met volledige domeinnamen om te controleren |
Gebruik POST /v1/reputation/bulk om meerdere domeinen in één verzoek te scoren. Stuur een JSON-body met een domains-array. Ondersteunt maximaal 3 domeinen per verzoek omdat elke lookup uitwaaiert naar meerdere beveiligingscontroles.
Voorbeeldverzoek
curl -H "X-API-Key: your-api-key" -X POST "https://domscan.net/v1/reputation/bulk" -H "Content-Type: application/json" -d '{
"domains": ["stripe.com", "cloudflare.com", "example.com"]
}'
Voorbeeldantwoord
{
"results": [
{
"domain": "stripe.com",
"reputation_score": 92,
"grade": "A+",
"risk_level": "low",
"factors": {
"dns_security": { "score": 100, "weight": 0.2 },
"ssl_certificate": { "score": 100, "weight": 0.2 }
},
"recommendations": [],
"meta": {
"query_time_ms": 1250,
"checks_performed": 7,
"cached": false
}
},
{
"domain": "not a domain",
"error": {
"code": "INVALID_DOMAIN",
"message": "Invalid domain format"
}
}
],
"summary": {
"total": 2,
"successful": 1,
"failed": 1,
"cached": 0,
"query_time_ms": 1310
},
"meta": {
"served_by": "pop=MAD country=ES"
}
}
Antwoordvelden
| Veld | Type |
|---|---|
results[] |
object[] |
results[] |
object |
results[].domain |
string |
results[].reputation_score |
integer |
results[].grade |
string |
results[].risk_level |
string |
results[].reputation_score_confidence |
string |
results[].grade_capped_by_parking |
boolean |
results[].factors |
object |
results[].evidence_summary |
object |
results[].evidence_summary.checks_performed |
integer |
results[].evidence_summary.cache_status |
string |
results[].evidence_summary.confidence |
string |
results[].evidence_summary.risk_level |
string |
results[].evidence_summary.factor_count |
integer |
results[].evidence_summary.scored_factor_count |
integer |
results[].evidence_summary.passing_factor_count |
integer |
results[].evidence_summary.warning_factor_count |
integer |
results[].evidence_summary.failing_factor_count |
integer |
results[].evidence_summary.lowest_scoring_factors[] |
object[] |
results[].evidence_summary.lowest_scoring_factors[] |
object |
results[].evidence_summary.lowest_scoring_factors[].name |
string |
results[].evidence_summary.lowest_scoring_factors[].score |
number | null |
results[].evidence_summary.lowest_scoring_factors[].weight |
number | null |
results[].evidence_summary.blacklist_listed_count |
integer |
results[].evidence_summary.recommendation_count |
integer |
results[].evidence_summary.high_priority_recommendation_count |
integer |
results[].evidence_summary.grade_capped_by_parking |
boolean |
results[].recommendations[] |
object[] |
results[].recommendations[] |
object |
results[].meta |
object |
results[].error |
object |
results[].error.code |
string |
results[].error.message |
string |
summary |
object |
summary.total |
integer |
summary.successful |
integer |
summary.failed |
integer |
summary.cached |
integer |
summary.query_time_ms |
integer |
meta |
object |
meta.served_by |
string |