Skip to content

REST API reference

Every tool on this site is a JSON endpoint. No key, no sign-up – the answers are the same verdicts, findings and fixes you see on the web pages.

Quick start

Base URL: https://thenetworkery.com/api/v1

curl -s "https://thenetworkery.com/api/v1"                                  # list the tools
curl -s "https://thenetworkery.com/api/v1/dns-lookup?name=example.com&type=MX"
curl -s "https://thenetworkery.com/api/v1/email-auth?domain=example.com"
curl -s "https://thenetworkery.com/api/v1/subnet-calculator?cidr=10.0.0.0/22&format=text"
curl thenetworkery.com/ip                                # just your address

Keys, limits and formats

Authentication
None. The API is free and needs no key.
Rate limit
60 requests a minute per IP address. Above that you get HTTP 429 with a Retry-After header.
Methods
GET with query parameters, or POST with the same parameters as JSON or a form. Tools that take a secret, such as a token, accept POST only, so the secret never appears in a URL.
Formats
JSON by default. Command-line clients (curl, wget, HTTPie) get plain text where a tool has a text form; add format=json to force JSON or format=text to ask for text.
CORS
Open: you can call the API from JavaScript on any website.
Stability
Version 1 only grows: new tools, parameters and fields may be added, existing ones keep their meaning. The data object differs per tool.

Responses

Every tool answers with the same envelope:

FieldTypeMeaning
toolstringThe tool slug.
inputobjectYour input after clean-up, e.g. a URL reduced to its host name. Secrets are left out.
statuspass · info · warn · failThe overall verdict: the worst finding.
dataobjectThe raw results. Its shape differs per tool.
findings[]arrayEach check: level, title and params, and where useful detail, fix and a ready-to-paste record.

Finding texts are English with placeholders such as :count filled from params – the same keys this site translates, so you can show them in your own language or wording.

GET https://thenetworkery.com/api/v1/email-auth?domain=example.com (shortened)

{
  "tool": "email-auth",
  "input": { "domain": "example.com" },
  "status": "warn",
  "data": { "domain": "example.com", "mx": ["0 ."], "…": "…" },
  "findings": [
    { "level": "pass", "title": ":count mail servers (MX) found.", "params": { "count": 1 } },
    { "level": "pass", "title": "SPF ends in -all (hard fail for other senders).", "params": {} },
    { "level": "warn", "title": "…", "params": {}, "detail": "…", "fix": "…", "record": "…" }
  ]
}

Errors

404No tool with that slug.
422Missing or invalid input. The body names each problem field.
429Rate limit reached. Wait for the number of seconds in Retry-After.
5xxSomething failed on our side. Try again later.

A check that ran but found problems is not an error: it is HTTP 200 with status warn or fail.

HTTP/1.1 422 Unprocessable Content
{
  "message": "The name field is required.",
  "errors": { "name": ["The name field is required."] }
}

Clients and code

Import the OpenAPI file into Postman, Insomnia, Bruno or Hoppscotch, or generate a typed client for your language:

npx @openapitools/openapi-generator-cli generate \
  -i https://ipv4.thenetworkery.co.uk/api/openapi.json \
  -g typescript-fetch -o ./networkery-client

JavaScript

const r = await fetch('https://thenetworkery.com/api/v1/dns-lookup?' + new URLSearchParams({ name: 'example.com', type: 'MX' }));
const result = await r.json();
console.log(result.status, result.data);

Python

import requests

r = requests.get('https://thenetworkery.com/api/v1/dns-lookup', params={'name': 'example.com', 'type': 'MX'}, timeout=30)
r.raise_for_status()
result = r.json()
print(result['status'])
for f in result['findings']:
    print(f['level'], f['title'], f['params'])

Your connection

What's my IP?

Open the tool →
GETPOST /api/v1/my-ip

Your public IP address, reverse DNS and network – also as plain text for curl.

No parameters.

curl -s "https://thenetworkery.com/api/v1/my-ip"

DNS

DNS lookup

Open the tool →
GETPOST /api/v1/dns-lookup

Every record for a name from a public resolver of your choice, with plain-English notes.

ParameterTypeDescription
name* string
≤ 253
Domain or host name
Example: thenetworkery.com
type string Record type
ALLAAAAACNAMEMXNSTXTSOACAASRVPTR
Default: ALL
resolver string Resolver
cloudflaregooglequad9
Default: cloudflare
curl -s "https://thenetworkery.com/api/v1/dns-lookup?name=thenetworkery.com&type=ALL&resolver=cloudflare"

DNS propagation check

Open the tool →
GETPOST /api/v1/dns-propagation

Ask 15 public resolvers around the world the same question and see who has your change.

ParameterTypeDescription
name* string
≤ 253
Domain or host name
Example: thenetworkery.com
type string Record type
AAAAACNAMEMXNSTXTSOACAASRVPTR
Default: A
curl -s "https://thenetworkery.com/api/v1/dns-propagation?name=thenetworkery.com&type=MX"

DNSSEC check

Open the tool →
GETPOST /api/v1/dnssec

Is the zone signed, does the chain of trust validate, and are the algorithms current?

ParameterTypeDescription
name* string
≤ 253
Domain
Example: ietf.org
curl -s "https://thenetworkery.com/api/v1/dnssec?name=ietf.org"

Email

Email security check

Open the tool →
GETPOST /api/v1/email-auth

SPF, DKIM, DMARC, MTA-STS, TLS-RPT and BIMI graded, with the exact records to fix what is missing.

ParameterTypeDescription
domain* string
≤ 253
Domain
Example: gov.uk
curl -s "https://thenetworkery.com/api/v1/email-auth?domain=gov.uk"

Blacklist check

Open the tool →
GETPOST /api/v1/blacklist

Is an IP, a domain or its mail servers on the spam blocklists receivers use – and how to get delisted.

ParameterTypeDescription
target* string
≤ 253
IP address or domain
Example: 127.0.0.2
curl -s "https://thenetworkery.com/api/v1/blacklist?target=127.0.0.2"

Web & TLS

SSL/TLS certificate check

Open the tool →
GETPOST /api/v1/ssl-check

Certificate, chain, expiry, hostname match, key strength and the TLS version a server negotiates.

ParameterTypeDescription
host* string
≤ 253
Host name
Example: thenetworkery.com
port string Port
44384434659939956368535061
Default: 443
curl -s "https://thenetworkery.com/api/v1/ssl-check?host=thenetworkery.com&port=443"

HTTP headers & security check

Open the tool →
GETPOST /api/v1/http-headers

Redirect chain, response headers and a graded check of HSTS, CSP and the other security headers.

ParameterTypeDescription
url* string (uri)
≤ 2048
URL or host name
Example: http://thenetworkery.com
curl -s "https://thenetworkery.com/api/v1/http-headers?url=http%3A%2F%2Fthenetworkery.com"

IP & routing

WHOIS / RDAP lookup

Open the tool →
GETPOST /api/v1/whois

Who holds a domain, IP address or AS number – from the registry, via RDAP.

ParameterTypeDescription
query* string
≤ 255
Domain, IP, prefix or AS number
Example: AS13335
curl -s "https://thenetworkery.com/api/v1/whois?query=AS13335"

ASN & BGP prefix lookup

Open the tool →
GETPOST /api/v1/bgp

Origin AS, visibility, RPKI validity, upstreams and announced prefixes from the global routing table.

ParameterTypeDescription
query* string
≤ 64
AS number, IP address or prefix
Example: AS13335
curl -s "https://thenetworkery.com/api/v1/bgp?query=AS13335"

Calculators

Subnet calculator

Open the tool →
GETPOST /api/v1/subnet-calculator

IPv4 and IPv6 prefixes: ranges, masks, host counts, reverse zones and splitting.

ParameterTypeDescription
cidr* string
≤ 64
Address or prefix
Example: 172.20.0.0/14
split integer Split into prefix length (optional)
Example: 16
curl -s "https://thenetworkery.com/api/v1/subnet-calculator?cidr=172.20.0.0%2F14&split=16"

MAC address vendor lookup

Open the tool →
GETPOST /api/v1/mac-lookup

Who made a network card, from the IEEE registry – and whether the address is randomised.

ParameterTypeDescription
mac* string
≤ 32
MAC address or prefix
Example: B8:27:EB:12:34:56
curl -s "https://thenetworkery.com/api/v1/mac-lookup?mac=B8%3A27%3AEB%3A12%3A34%3A56"

Developer

MCP server tester

Open the tool →
POST /api/v1/mcp-server-test

Connect to a remote MCP server like an AI assistant would: handshake, tools, resources, prompts, OAuth discovery and context cost, checked against the spec.

ParameterTypeDescription
url* string (uri)
≤ 2048
MCP server URL
Example: https://ipv4.thenetworkery.co.uk/mcp
token string
≤ 4096
Bearer token (optional, never stored) POST only, never stored
Example: sk-…
tool string
≤ 128
Call a tool (optional)
Example: tool_name
arguments string (JSON)
≤ 20000
Tool arguments as JSON (optional)
Example: {"query": "example"}
curl -s -X POST https://thenetworkery.com/api/v1/mcp-server-test \
  -H 'Content-Type: application/json' \
  -d '{"url":"https://ipv4.thenetworkery.co.uk/mcp","token":"…"}'

DN42

DN42 registry search

Open the tool →
GETPOST /api/v1/dn42-registry

Look up any DN42 object – AS, IP, prefix, maintainer, person or .dn42 domain – with everything linked to it.

ParameterTypeDescription
query* string
≤ 100
AS number, IP, prefix, maintainer, person or domain
Example: AS4242421711
curl -s "https://thenetworkery.com/api/v1/dn42-registry?query=AS4242421711"

DN42 free resource finder

Open the tool →
GETPOST /api/v1/dn42-free

Unregistered AS numbers, free IPv4 blocks and a random unused IPv6 /48 – checked against the live registry.

ParameterTypeDescription
size string IPv4 block size
242526272829
Default: 27
curl -s "https://thenetworkery.com/api/v1/dn42-free?size=27"

DN42 peering config generator

Open the tool →
GETPOST /api/v1/dn42-peering-config

WireGuard, BIRD 2 and RouterOS 7 configs for a DN42 peering, following the wiki conventions.

ParameterTypeDescription
our_asn* integer Your AS number
Example: 4242421711
peer_asn* integer Peer AS number
Example: 4242423914
peer_ll6* string (ipv6) Peer link-local IPv6
Example: fe80::3914
our_ll6 string (ipv6) Your link-local IPv6 (optional)
Example: fe80::1711
peer_ipv4 string (ipv4) Peer tunnel IPv4 (optional)
Example: 172.20.53.97
our_ipv4 string (ipv4) Your DN42 IPv4 (optional)
Example: 172.23.141.33
endpoint string
≤ 255
Peer endpoint host:port (optional)
Example: uk1.example.net:21711
peer_pubkey string Peer WireGuard public key (optional)
Example: base64…=
enh string Session type
yesno
Default: yes
curl -s "https://thenetworkery.com/api/v1/dn42-peering-config?our_asn=4242421711&peer_asn=4242423914&peer_ll6=fe80%3A%3A3914&our_ll6=fe80%3A%3A1711&peer_ipv4=172.20.53.97&our_ipv4=172.23.141.33&endpoint=uk1.example.net%3A21711&enh=yes"