Endpoints

GET /v1/osint

List Open Source Intelligence hosts by time window.

GET /v1/osint/{host}

Check one Open Source Intelligence host over the same time window.

Authentication

Use a client API key assigned to the osint API group. Keys are bearer secrets and should never be sent in URLs, logs, or screenshots.

Authorization: Bearer <api-key>

Use X-API-Key for clients that require header-key auth.

X-API-Key: <api-key>

Example request

curl --compressed \
  -H "Authorization: Bearer <api-key>" \
  "https://api.domainintelligence.uk/v1/osint?window_days=14&page=1&limit=100"

Query parameters

NameTypeDefaultNotes
hoststringnoneOptional list filter. Lowercased and trimmed. A trailing dot is removed.
window_days or windowDaysinteger14Positive integer, maximum 90. Uses UTC midnight boundaries.
start_at or startAttimestamp or datenoneMust be sent with end_at. Accepts RFC3339, RFC3339Nano, or YYYY-MM-DD.
end_at or endAttimestamp or datenoneMust be after start_at. Custom periods are limited to 90 days.
pageinteger1Positive page number.
limitinteger100Positive integer, maximum 5000.

FeedRow schema

FieldTypeNotes
feedTypestringExport feed category: c2, distribution, or unknown.
reviewStatusstringHost status, normally allow or auto_allow.
hoststringDomain or IP host.
sourcesstring arraySource labels observed for the host in the selected window. Values are malwareSample, OSINT, and Manual. A host can have more than one source.
familiesstring arrayNormalized family names.
seenAttimestampLatest activity timestamp used for ordering and window filters.
firstSeentimestamp, optionalFirst available activity timestamp for the host.
lastSeentimestamp, optionalLast available activity timestamp for the host.
portsFeedPort arrayPort-level sample groups when present.
dnsStatusstring, optionalCurrent DNS disposition.
resolvedIpsstring arrayResolved IP addresses known for the host.
countrystring, optionalCountry from network enrichment data.
asninteger, optionalASN number when known.
asOrgstring, optionalASN organization when known.
infraTypestring, optionalInfrastructure type when known.
DNSHitsinteger30-day DNS block count.
circlHitsintegerPassive DNS total count.

Nested schemas

FeedPort {
  "port": 443,
  "families": [FeedPortFamily]
}

FeedPortFamily {
  "family": "loader",
  "samples": [FeedSample]
}

FeedSample {
  "sha256": "0123456789abcdef...",
  "firstSeen": "2026-06-18T13:12:10Z",
  "lastSeen": "2026-06-19T23:29:02Z"
}

Pagination schema

{
  "page": 1,
  "limit": 100,
  "prev_page": 0,
  "next_page": 2,
  "has_prev": false,
  "has_next": true,
  "total_rows": 417,
  "total_pages": 5,
  "start_row": 1,
  "end_row": 100,
  "approximate_total": false
}

Response examples

List response
{
  "rows": [
    {
      "feedType": "c2",
      "reviewStatus": "allow",
      "host": "example-osint.test",
      "sources": ["malwareSample", "OSINT"],
      "families": ["loader"],
      "seenAt": "2026-06-19T23:29:02Z",
      "firstSeen": "2026-06-18T13:12:10Z",
      "lastSeen": "2026-06-19T23:29:02Z",
      "ports": [
        {
          "port": 443,
          "families": [
            {
              "family": "loader",
              "samples": [
                {
                  "sha256": "0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef",
                  "firstSeen": "2026-06-18T13:12:10Z",
                  "lastSeen": "2026-06-19T23:29:02Z"
                }
              ]
            }
          ]
        }
      ],
      "dnsStatus": "blocked",
      "resolvedIps": ["203.0.113.10"],
      "country": "US",
      "asn": 64500,
      "asOrg": "Example Network",
      "infraType": "hosting",
      "DNSHits": 52,
      "circlHits": 18
    }
  ],
  "pagination": {
    "page": 1,
    "limit": 100,
    "prev_page": 0,
    "next_page": 2,
    "has_prev": false,
    "has_next": true,
    "total_rows": 417,
    "total_pages": 5,
    "start_row": 1,
    "end_row": 100,
    "approximate_total": false
  },
  "filters": {
    "windowDays": 14,
    "startAt": "2026-06-06T00:00:00Z",
    "endAt": "2026-06-20T00:00:00Z",
    "page": 1,
    "limit": 100
  }
}
Host lookup response
{
  "host": "example-osint.test",
  "found": true,
  "row": {
    "feedType": "c2",
    "reviewStatus": "allow",
    "host": "example-osint.test",
    "sources": ["Manual"],
    "families": ["loader"],
    "seenAt": "2026-06-19T23:29:02Z",
    "ports": [],
    "resolvedIps": [],
    "DNSHits": 0,
    "circlHits": 0
  },
  "filters": {
    "host": "example-osint.test",
    "windowDays": 14,
    "startAt": "2026-06-06T00:00:00Z",
    "endAt": "2026-06-20T00:00:00Z",
    "page": 1,
    "limit": 1
  }
}

Error responses

{
  "error": {
    "code": "validation_error",
    "message": "limit must be 5000 or less",
    "request_id": "optional-request-id"
  }
}
StatusCodeMeaning
400validation_errorA query parameter or host value is invalid.
401missing_auth or bad_authThe API key is missing or invalid.
403forbiddenThe API key needs the osint group.
404not_foundNo host matched the selected window.
405method_not_allowedUse a listed HTTP method for the endpoint.
500internal_errorThe API failed to complete the request.