API Documentation

Everything you need to integrate our APIs. Built for developers, designed for production.

Introduction

Our API platform provides reliable, production-ready infrastructure services designed to simplify common backend and fintech workflows.

We offer a unified set of APIs for DNS intelligence, UPI validation, and essential developer utilities, enabling teams to build faster without managing complex integrations or unreliable data sources.

Each API is designed with consistency, performance, and scalability in mind. Responses follow a predictable structure, support bulk queries where applicable, and are optimized with intelligent caching to ensure low latency and high availability.

Whether you are validating user inputs, improving payment reliability, or building internal tooling, our APIs are built to work seamlessly in both development and production environments.

Rate Limits

To ensure reliability and fair usage, all API requests are subject to rate limiting.

  • Unauthenticated requests (no API key) are limited to 10 requests/min per IP address across all endpoints.
  • Authenticated requests (using an API key) are governed by your subscription plan:

Free plan: Up to 100 requests/day.

Pro plan: Up to 1,000 requests/day.

Enterprise plan: Custom request limits based on your requirements. Please contact us to discuss a tailored plan.

Rate limits are enforced automatically. Exceeding the limit will result in HTTP 429 Too Many Requests responses until the quota resets.

Pagination

Many list-based endpoints support optional pagination through query parameters such as limit, page, and skip. These parameters allow clients to control the number of results returned and navigate large datasets efficiently.

The limit parameter defines how many items are returned per request, while page enables page-based navigation starting from page 1. Alternatively, skip can be used to offset a specific number of records, which is useful for cursor-like or infinite scrolling implementations.

Paginated responses include a meta object containing helpful information such as the total number of available records, the current page, and the total number of pages. This ensures clients can build predictable pagination controls without additional calculations.

Authentication

GETAuthorization Header

For authenticated requests, include your API key in the "Authorization" header as a Bearer token. You can obtain an API key by signing up for an account and subscribing to a plan. The default plan is Free, which provides limited access to the APIs.

Request

Authorization: Bearer apitools-xxxx

DNS APIs

GET/v1/dns/a?domains=example.com,example.org

Response

{
  "data": {
    "example.com": ["192.2.42.4"],
    "example.org": ["192.2.42.5"]
  },
  "success": true,
  "message": "A records resolved successfully."
}
GET/v1/dns/aaaa?domains=example.com,example.org

Response

{
  "data": {
    "example.com": ["2607:f8b0:4004:c08::8b"],
    "example.org": ["2606:2800:220:1:248:1893:25c8:1946"]
  },
  "success": true,
  "message": "AAAA records resolved successfully."
}
GET/v1/dns/txt?domains=example.com,example.org

Response

{
  "data": {
    "example.com": [
      ["v=spf1 include:_spf.mx.example.net ~all"]
    ],
    "example.org": [
      ["v=spf1 include:_spf.example.org ~all"]
    ]
  },
  "success": true,
  "message": "TXT records resolved successfully."
}
GET/v1/dns/ns?domains=example.com,example.org

Response

{
  "data": {
    "example.com": ["ns1.example.com","ns2.example.com"],
    "example.org": ["ns1.example.org","ns2.example.org"]
  },
  "success": true,
  "message": "NS records resolved successfully."
}
GET/v1/dns/mx?domains=example.com,example.org

Response

{
  "data": {
    "example.com": [{
        "exchange": "mail.example.com",
        "priority": 10
      },
      {
        "exchange": "mail2.example.com",
        "priority": 20
      }],
    "example.org": [{
        "exchange": "mail.example.org",
        "priority": 10
      },
      {
        "exchange": "mail2.example.org",
        "priority": 20
      }]
  },
  "success": true,
  "message": "MX records resolved successfully."
}
GET/v1/dns/ptr?ips=1.1.1.1,8.8.8.8

Response

{
  "data": {
    "1.1.1.1": ["one.one.one.one"],
    "8.8.8.8": ["dns.google"]
  },
  "success": true,
  "message": "PTR records resolved successfully."
}

UPI APIs

GET/v1/upi/links/generate?amount=100&handle=chirayusahu2@okicici&note=Payment%20for%20Coffee

Takes amount, UPI handle, and an optional note as URL query parameters.

Response

{
  "data": {
    "links": [
      { "name": "UPI", "url": "upi://pay?pa=chirayusahu2@okicici&am=100&cu=INR&tn=Payment%20for%20Coffee" },
      { "name": "GooglePay", "url": "tez://upi/pay?pa=chirayusahu2@okicici&am=100&cu=INR&tn=Payment%20for%20Coffee" },
      { "name": "PhonePe", "url": "phonepe://upi/pay?pa=chirayusahu2@okicici&am=100&cu=INR&tn=Payment%20for%20Coffee" },
      { "name": "Paytm", "url": "paytmmp://pay?pa=chirayusahu2@okicici&am=100&cu=INR&tn=Payment%20for%20Coffee" },
      { "name": "AmazonPay", "url": "amazonpay://upi/pay?pa=chirayusahu2@okicici&am=100&cu=INR&tn=Payment%20for%20Coffee" },
      { "name": "BHIM", "url": "bhim://upi/pay?pa=chirayusahu2@okicici&am=100&cu=INR&tn=Payment%20for%20Coffee" },
      { "name": "WhatsApp", "url": "whatsapp://upi/pay?pa=chirayusahu2@okicici&am=100&cu=INR&tn=Payment%20for%20Coffee" }
    ]
  },
  "success": true,
  "message": "Payment links generated successfully"
}
GET/v1/upi/links

Response

{
  "data": {
    "links": [
      "UPI","PhonePe","GooglePay","Paytm","AmazonPay","BHIM","WhatsApp",
      "Mobikwik","Freecharge","Truecaller","Cred","MiPay","SamsungPay",
      "JioPay","OlaMoney","AirtelThanks","YonoSBI","AxisBank","ICICIiMobile",
      "HDFCPayZapp","RealmePaySa"
    ]
  },
  "success": true,
  "message": "Payment links generated successfully"
}
GET/v1/upi/handles

Response

{
  "data": {
    "updatedAt": "2025-12-14T13:56:05.119Z",
    "handles": [
      {
        "name": "Google Pay",
        "handleName": "@okicici",
        "link": "https://support.google.com/pay/india/",
        "bank": "ICICI Bank"
      },
      {
        "name": "PhonePe",
        "handleName": "@ybl",
        "link": "https://www.phonepe.com/contact-us/",
        "bank": "Yes Bank"
      },
      {
        "name": "Paytm",
        "handleName": "@paytm",
        "link": "https://paytm.com/",
        "bank": "Yes Bank"
      },
      {
        "name": "WhatsApp",
        "handleName": "@waicici",
        "link": "https://www.whatsapp.com/contact/",
        "bank": "ICICI Bank"
      }
    ]
  },
  "success": true,
  "message": "Valid Handles fetched successfully"
}
GET/v1/upi/ifsc/YESB0DNB002

Response

{
  "data": {
    "BRANCH": "Delhi Nagrik Sehkari Bank IMPS",
    "CENTRE": "DELHI",
    "DISTRICT": "DELHI",
    "STATE": "MAHARASHTRA",
    "ADDRESS": "720, NEAR GHANTAGHAR, SUBZI MANDI, DELHI - 110007",
    "CONTACT": "+919560344685",
    "IMPS": true,
    "CITY": "MUMBAI",
    "UPI": true,
    "MICR": "110196002",
    "RTGS": true,
    "NEFT": true,
    "SWIFT": null,
    "ISO3166": "IN-MH",
    "BANK": "Delhi Nagrik Sehkari Bank",
    "BANKCODE": "DENS",
    "IFSC": "YESB0DNB002"
  },
  "success": true,
  "message": "Bank details fetched successfully"
}

QR Code APIs

GET/v1/qr/generate?data=hello-world&format=json

Generates a QR code for the provided input data. Supports multiple output formats including PNG image, SVG, terminal-friendly (ASCII/UTF-8), and JSON (Base64-encoded image). The QR content is passed using the data query parameter, and the desired response format can be specified using the format parameter. If no format is provided, the API defaults to returning a PNG image.

Supported formats: image, svg, terminal, json

Example: /v1/qr/generate?data=hello-world&format=json

Response

{
  "data": {
    "qrCode": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAHQA...."
  },
  "success": true,
  "message": "QR code generated successfully"
}