Run a scoped HTTPS origin comparison for one owned domain host. The endpoint resolves current public DNS, probes the current public answer using the requested Host header and SNI, probes the current HostUp web-hosting origin from the DNS zone when available, and probes previous web origins from the latest pre-HostUp DNS snapshot. Use this before telling a customer that Cloudflare/CDN is the root cause: CDN edge IPs are traffic-path evidence, while origin HTTP status shows whether the HostUp origin has website content.
read:dnsread:domains
Use Authorization: Bearer <token> for API keys. Dashboard sessions may also use hostup_session.
id string required
Example: dom_01hxa3b4c5d6e7f8g9h0j1k2m3 Public domain ID from `GET /api/v2/domains`. Do not invent this value; use the exact ID returned by the referenced API response.
host string
· Example: example.se Domain host to compare. Defaults to the domain apex. Must be the domain itself or one of its subdomains, for example `example.se` or `www.example.se`.
Accept Example Content-Type Example host string required asciiHost string required checkedAt string required currentPublic object required currentPublic.a array<string> required currentPublic.aaaa array<string> required currentPublic.cname array<string> required currentPublic.probedIp stringnull required currentPublic.appearsCdnEdge boolean required currentPublic.edgeProvider stringnull required
· Example: cloudflare currentPublic.httpStatus integernull required currentPublic.server stringnull required currentPublic.bodyBytes integer required currentPublic.title stringnull required currentPublic.responseMs integer required currentPublic.errorReason stringnull required hostupOrigin null required hostupOriginReason stringnull required previousOrigins array<object> required previousOrigins[].ip string required
· Example: 185.113.11.10 previousOrigins[].recordName stringnull required
· Example: @ previousOrigins[].recordType string · enum required
· Example: A A AAAA CNAME ALIAS previousOrigins[].target stringnull required
· Example: null CNAME/ALIAS target hostname when the probed IP came from resolving an alias.
previousOrigins[].source string required
· Example: current_hostup_dns_record Origin source, for example `current_hostup_dns_record` or the DNS snapshot source such as `pre_nameserver_change`.
previousOrigins[].snapshotId string
· Example: dnss_01hxa3b4c5d6e7f8g9h0j1k2m3 Snapshot public ID when this origin came from DNS history.
previousOrigins[].capturedAt string
· Example: 2026-05-19T09:55:00.000Z Snapshot capture time when this origin came from DNS history.
previousOrigins[].providerHint stringnull
· Example: ns1.old-provider.example (203.0.113.10) Snapshot provider hint, usually the old authoritative nameserver.
previousOrigins[].httpStatus integernull required
· Example: 404 previousOrigins[].server stringnull required
· Example: LiteSpeed previousOrigins[].bodyBytes integer required
· Example: 1251 previousOrigins[].title stringnull required
· Example: 404 Not Found previousOrigins[].responseMs integer required
· Example: 142 previousOrigins[].errorReason stringnull required
· Example: null previousOriginsReason stringnull required diagnosis object required diagnosis.summary string required diagnosis.confidence string · enum required high medium low diagnosis.evidence array<string> required type string
· Example: https://developer.hostup.se/errors/invalid_request title string
· Example: Validation failed status integer
· Example: 400 detail string
· Example: The request body failed validation. code string
· Example: invalid_request Stable machine-readable code. Branch on this field, not on `detail`.
instance string
· Example: /api/v2/orders requestId string
· Example: req_01hxa3b4c5d6e7f8g9h0j1k2m3 timestamp string
· Example: 2026-04-27T12:34:56.000Z errors array<object> Field-level validation errors when `code` is `invalid_request`.
errors[].pointer string required
· Example: /items/0/eppCode errors[].detail string required
· Example: `eppCode` is required for this transfer. errors[].code string required
· Example: missing_required extensions object type string
· Example: https://developer.hostup.se/errors/invalid_request title string
· Example: Validation failed status integer
· Example: 400 detail string
· Example: The request body failed validation. code string
· Example: invalid_request Stable machine-readable code. Branch on this field, not on `detail`.
instance string
· Example: /api/v2/orders requestId string
· Example: req_01hxa3b4c5d6e7f8g9h0j1k2m3 timestamp string
· Example: 2026-04-27T12:34:56.000Z errors array<object> Field-level validation errors when `code` is `invalid_request`.
errors[].pointer string required
· Example: /items/0/eppCode errors[].detail string required
· Example: `eppCode` is required for this transfer. errors[].code string required
· Example: missing_required extensions object type string
· Example: https://developer.hostup.se/errors/invalid_request title string
· Example: Validation failed status integer
· Example: 400 detail string
· Example: The request body failed validation. code string
· Example: invalid_request Stable machine-readable code. Branch on this field, not on `detail`.
instance string
· Example: /api/v2/orders requestId string
· Example: req_01hxa3b4c5d6e7f8g9h0j1k2m3 timestamp string
· Example: 2026-04-27T12:34:56.000Z errors array<object> Field-level validation errors when `code` is `invalid_request`.
errors[].pointer string required
· Example: /items/0/eppCode errors[].detail string required
· Example: `eppCode` is required for this transfer. errors[].code string required
· Example: missing_required extensions object type string
· Example: https://developer.hostup.se/errors/invalid_request title string
· Example: Validation failed status integer
· Example: 400 detail string
· Example: The request body failed validation. code string
· Example: invalid_request Stable machine-readable code. Branch on this field, not on `detail`.
instance string
· Example: /api/v2/orders requestId string
· Example: req_01hxa3b4c5d6e7f8g9h0j1k2m3 timestamp string
· Example: 2026-04-27T12:34:56.000Z errors array<object> Field-level validation errors when `code` is `invalid_request`.
errors[].pointer string required
· Example: /items/0/eppCode errors[].detail string required
· Example: `eppCode` is required for this transfer. errors[].code string required
· Example: missing_required extensions object type string
· Example: https://developer.hostup.se/errors/invalid_request title string
· Example: Validation failed status integer
· Example: 400 detail string
· Example: The request body failed validation. code string
· Example: invalid_request Stable machine-readable code. Branch on this field, not on `detail`.
instance string
· Example: /api/v2/orders requestId string
· Example: req_01hxa3b4c5d6e7f8g9h0j1k2m3 timestamp string
· Example: 2026-04-27T12:34:56.000Z errors array<object> Field-level validation errors when `code` is `invalid_request`.
errors[].pointer string required
· Example: /items/0/eppCode errors[].detail string required
· Example: `eppCode` is required for this transfer. errors[].code string required
· Example: missing_required extensions object type string
· Example: https://developer.hostup.se/errors/invalid_request title string
· Example: Validation failed status integer
· Example: 400 detail string
· Example: The request body failed validation. code string
· Example: invalid_request Stable machine-readable code. Branch on this field, not on `detail`.
instance string
· Example: /api/v2/orders requestId string
· Example: req_01hxa3b4c5d6e7f8g9h0j1k2m3 timestamp string
· Example: 2026-04-27T12:34:56.000Z errors array<object> Field-level validation errors when `code` is `invalid_request`.
errors[].pointer string required
· Example: /items/0/eppCode errors[].detail string required
· Example: `eppCode` is required for this transfer. errors[].code string required
· Example: missing_required extensions object https://cloud.hostup.se/api/v2/domains/{id}/dns/diagnostics/origin-compare curl -X GET "https://cloud.hostup.se/api/v2/domains/dom_01hxa3b4c5d6e7f8g9h0j1k2m3/dns/diagnostics/origin-compare" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Accept: application/json" {
"host": "example.se",
"asciiHost": "example.se",
"checkedAt": "2026-05-19T10:30:00.000Z",
"currentPublic": {
"a": [
"104.21.82.230",
"172.67.207.236"
],
"aaaa": [],
"cname": [],
"probedIp": "104.21.82.230",
"appearsCdnEdge": true,
"edgeProvider": "cloudflare",
"httpStatus": 404,
"server": "cloudflare",
"bodyBytes": 1251,
"title": "404 Not Found",
"responseMs": 188,
"errorReason": null
},
"hostupOrigin": {
"ip": "185.113.11.10",
"recordName": "@",
"recordType": "A",
"target": null,
"source": "current_hostup_dns_record",
"httpStatus": 404,
"server": "LiteSpeed",
"bodyBytes": 1251,
"title": "404 Not Found",
"responseMs": 142,
"errorReason": null
},
"hostupOriginReason": null,
"previousOrigins": [
{
"ip": "18.208.88.157",
"recordName": "@",
"recordType": "A",
"target": null,
"source": "pre_nameserver_change",
"snapshotId": "dnss_01hxa3b4c5d6e7f8g9h0j1k2m3",
"capturedAt": "2026-05-19T09:55:00.000Z",
"providerHint": "ns1.old-provider.example (203.0.113.10)",
"httpStatus": 200,
"server": "Netlify",
"bodyBytes": 56057,
"title": "Example website",
"responseMs": 210,
"errorReason": null
}
],
"previousOriginsReason": null,
"diagnosis": {
"summary": "Public DNS appears to use a CDN edge, but the stronger signal is that the HostUp origin returns 404 while a previous origin still returns a working site.",
"confidence": "high",
"evidence": [
"Current public HTTPS response appears to be served through cloudflare.",
"HostUp origin 185.113.11.10 returned HTTP 404.",
"Previous origin 18.208.88.157 returned HTTP 200."
]
}
}