JSON API

The iamroot.tech JSON API

Introduction

An API interface has been implemented for several of the tools. It is still in an early beta stage. The API has been made available to gather feedback and to support further development of the website 'under the hood'. At this point, there are still a lot of things missing, but the essentials are there, and the API is working as intended on the selected tools.




Feedback

The main purpose, of pushing the API at this point, is to gather feedback.

I hope you will share any thoughts, ideas and experiences with me.

Mail me at iamrootdottech@gmail.com - looking forward to your input!




Latest API related changes

  • 2024-11-30: Ping / traceroute tool added
    A new ping and traceroute tool has been added, enabling you to test connectivity by measuring response times, jitter, and packet loss, while also mapping the entire network path. Traceroute results also include ASN and geo-info for each hop, making it easier to diagnose and pinpoint network issues. API for the ping tool is made available as well.

  • 2024-11-24: Navigation additions
    Links for login, api, newsletter and about pages has been added to the website navifation

  • 2024-11-16: API response wrapper JSON update (nodes added and nodes removed)
    Node 'UserQueryLimit24h' now contains info on the total available API rate limit. Node 'UserQueryLimit24hUsage' has been added, containing info on number of requests within the last 24h. Nodes 'Status' and 'StatusTxt' has been removed from the API response wrapper, as they didn't really add any useable info to the response.

  • 2024-10-29: API rate limitation
    Check of (and enforceing) API rate limits has been optimized.




Next up

  • Further tuning of the API, establishing common ground, and developing core concepts.
  • Adding API endpoints for additional tools




Please note...

...the API will be subject to changes and updates going forward. I will make sure to detail major changes on this page, and in the sitewide changelog as well.



Core concepts

URL/endpoint structure

The intent is, that the URL structure of each API, has to mirror the URLs used at the website. For instance, the website URL for a WHOIS-lookup of yahoo.com, looks like this:

https://iamroot.tech/whois/?host=yahoo.com&qt=PreferRdap

The matching API request, looks like this:

https://iamroot.tech/whois/api/?host=yahoo.com&qt=PreferRdap
Each tool is working from a dedicated subdirectory. And the corresponding API, is working from a /api/ subdirectory within the tool.

More tool-specific details below.




Authentication and rate limits

Authentication is done by passing an Authorization HTTP header containing an API key.

You can obtain an API key through the user system. Simply create an account, go to the API keys section, and generate as many API keys as you need. There is no limit on the number of API keys you can create.

However, there is a 24-hour rate limit. The default rate limit is currently 1000 requests per 24 hours. Upgrading or increasing your rate limit is not an option at the moment (though it will be in the future).

From the API keys section of the user system, detailed information on the latest requests is available for debugging, along with statistics on the current 24-hour API usage.

Sample http request includeing an API key:

 
GET
https://iamroot.tech/whois/api/?host=8.8.8.8
Authorization: YOUR_API_KEY
 


Anonymous usage
Anonymous usage, without providing an API key in each request, is also possible. The rate limit for anonymous use is 200 requests per 24 hours.




API response wrapper

All API responses share a common JSON object on the root level. It has various status and meta info. Should be pretty straightforward to interpret.

{
    "Message": null,
    "RequestTimestamp": "2023-10-05T21:04:45.970403Z",
    "RequestServer": "horsens",
    "RequestTool": "whois",
    "RequestUuid": "09b8878f0e054808b89a4e3d125a6d07",
    "RequestExecutionTime": 1084,
    "UserUuid": null,
    "UserApikeyUuid": null,
    "UserQueryLimit24h": 500,
    "UserQueryLimit24hUsage": 196,
    "DataObjectType": "SslInfoV2Simplified",
    "Data": [...]
}



The WHOIS/RDAP tool

You may read more about the WHOIS/RDAP tool at https://iamroot.tech/whois/. When using the tool in your browser, the URL of the corresponding API call is mentioned as a part of the result.


Perform WHOIS / RDAP lookup

 
GET
https://iamroot.tech/whois/api/?host=[host]&qt=[querytype] copy
 
[host] string, required A hostname, ip-adresse, CIDR or AS number for the WHOIS/RDAP lookup.
[querytype] enum, optional Specifying the querytype. Can be either
PreferRdap Try RDAP, failover to WHOIS - default
Rdap To force a RDAP lookup
whois To force a WHOIS lookup
Omit or leave empty to use default settings.

Samples & output

Lookup of '8.8.8.8', prefer RDAP with failover to WHOIS:

 
GET
https://iamroot.tech/whois/api/?host=8.8.8.8&qt=PreferRdap copy try it
 

 

Lookup of 'AS16509', force WHOIS:

 
GET
https://iamroot.tech/whois/api/?host=AS16509&qt=whois&qt=whois copy try it
 



The TLS/SSL tool

You may read more about the TLS/SSL tool at https://iamroot.tech/ssl-certificate-check/. When using the tool in your browser, the URL of the corresponding API call is mentioned as a part of the result.


Perform TLS/SSL certifictae check of host

 
GET
https://iamroot.tech/ssl-certificate-check/api/?host=[host]&hostPort=[hostPort] copy
 
[host] string, required A hostname or ip-adresse to retrieve the SSL-certificate from
[hostPort] integer, optional Specifying what port number to connect to. Default port 443 (https). Leave empty or omit this part of the querystring to use default settings.

Samples & output

SSL/TLS check of 'google.com', all default settings:

 
GET
https://iamroot.tech/ssl-certificate-check/api/?host=google.com copy try it
 

 

SSL/TLS check of 'wrong.host.badssl.com', all default settings:

 
GET
https://iamroot.tech/ssl-certificate-check/api/?host=wrong.host.badssl.com copy try it
 



The port scan tool

You may read more about the port scan tool at https://iamroot.tech/port-scan/. When using the tool in your browser, the URL of the corresponding API call is mentioned as a part of the result.


Perform port scan of host

 
GET
https://iamroot.tech/port-scan/api/?host=[host]&additionalports=[additionalports] copy
 
[host] string, required A hostname or ip-adresse to retrieve the SSL-certificate from
[additionalports] string, optional Any additional ports to scan - seperate by space

Samples & output

Port scan of 'www.db4free.net':

 
GET
https://iamroot.tech/port-scan/api/?host=www.db4free.net copy try it
 

 

Port scan of 'ftp.gnu.org', with additional check of port 5000:

 
GET
https://iamroot.tech/port-scan/api/?host=ftp.gnu.org&additionalports=5000 copy try it
 



The DNSBL check tool

You may read more about the DNSBL check at https://iamroot.tech/dnsbl-blacklist-checker/. When using the tool in your browser, the URL of the corresponding API call is mentioned as a part of the result.


Perform DNSBL check of host

 
GET
https://iamroot.tech/dnsbl-blacklist-checker/api/?host=[host] copy
 
[host] string, required A hostname or ip-adresse to check

Samples & output

DNSBL check of 'mail.iamroot.tech':

 
GET
https://iamroot.tech/dnsbl-blacklist-checker/api/?host=mail.iamroot.tech copy try it
 



The DNS propagation tool

You may read more about theDNS propagation at https://iamroot.tech/dns-propagation/. When using the tool in your browser, the URL of the corresponding API call is mentioned as a part of the result.


Perform DNSBL check of host

 
GET
https://iamroot.tech/dns-propagation/api/?host=[host]&qt=[querytype]&ns=[nameservers] copy
 
[host] string, required A hostname to check
[querytype] enum, required Specifying the querytype. Can be either A, AAAA, MX, NS , SOA or TXT.
[nameservers] enum, optional Additional nameservers to query.

Samples & output

DNS propagation check of A-records of 'mail.iamroot.tech':

 
GET
https://iamroot.tech/dns-propagation/api/?host=mail.iamroot.tech&qt=A copy try it
 



The ping tool

You may read more about theDNS propagation at https://iamroot.tech/ping-tracert/. When using the tool in your browser, the URL of the corresponding API call is mentioned as a part of the result.

Please note that, at this point, only the ping-specific parts of the tool are available via the API.


Perform ping of host

 
GET
https://iamroot.tech/ping-tracert/api/?dowhat=ping&host=[host] copy
 
[host] string, required A hostname to ping

Samples & output

Ping of 'reddit.com':

 
GET
https://iamroot.tech/ping-tracert/api/?dowhat=ping&host=reddit.com copy try it