PublicSoftTools

API Reference

Base URL: https://www.publicsofttools.com ·  All endpoints return JSON  ·  CORS enabled

Authentication

Pass your API key in the X-Api-Key request header. Alternatively, append ?api_key=YOUR_KEY as a query parameter (less secure — use only for testing).

# Header (recommended)
curl https://www.publicsofttools.com/api/v1/util/uuid \
  -H "X-Api-Key: YOUR_API_KEY"

# Query param (testing only)
curl "https://www.publicsofttools.com/api/v1/util/uuid?api_key=YOUR_API_KEY"

No key yet? Email us to get a free key (1,500 calls/month) instantly.

Rate Limits

PlanMonthly callsPer-hour limitPrice
Free1,50050$0
Starter15,000200$9/mo
Pro100,0001,000$49/mo
Business1,000,0005,000$199/mo

When you exceed the rate limit, the API returns HTTP 429 with a Retry-After header indicating seconds to wait.

Error Codes

All errors return a consistent JSON body:

{
  "success": false,
  "error": "Human-readable message",
  "code": "MACHINE_READABLE_CODE",
  "docs": "https://www.publicsofttools.com/developers/docs"
}
CodeHTTP StatusMeaning
MISSING_KEY401X-Api-Key header or ?api_key= param is absent.
UNAUTHORIZED401API key is invalid or has been revoked.
RATE_LIMITED429Too many requests. Check X-RateLimit-Reset header.
MISSING_PARAM400A required request parameter is absent.
INVALID_PARAM400A parameter value is out of range or malformed.
INVALID_JSON400POST body is not valid JSON.
PARAM_TOO_LONG400A string parameter exceeds the maximum length.
NOT_FOUND404The requested resource (domain, IP) was not found.
UPSTREAM_ERROR502An external service returned an unexpected error.
POST/api/v1/util/qr

QR Code Generator

Generate a QR code from any text or URL. Returns a base64 PNG data URL or raw SVG string.

Request Body

ParameterTypeRequiredDescription
textstringYesContent to encode. Max 2,048 characters.
format"png" | "svg"NoOutput format. Default: "png".
sizenumberNoWidth/height in pixels (64–1024). Default: 256.
darkstringNoHex colour for dark modules. Default: "#000000".
lightstringNoHex colour for light modules. Default: "#ffffff".
error_correction"L" | "M" | "Q" | "H"NoError correction level. Default: "M".

Example Request

{
  "text": "https://publicsofttools.com",
  "size": 256,
  "format": "png"
}

Example Response

{
  "success": true,
  "data": {
    "image": "data:image/png;base64,iVBORw0KGgo...",
    "format": "png",
    "size": 256
  }
}
POST/api/v1/util/hash

Hash Generator

Compute cryptographic hashes of a string. Omit `algorithm` to receive all five hashes in one response.

Request Body

ParameterTypeRequiredDescription
textstringYesInput string. Max 100,000 characters.
algorithm"md5" | "sha1" | "sha256" | "sha384" | "sha512"NoHash algorithm. Omit to get all five.
encoding"hex" | "base64"NoOutput encoding. Default: "hex".

Example Request

{ "text": "hello world" }

Example Response

{
  "success": true,
  "data": {
    "hashes": {
      "md5":    "5eb63bbbe01eeed093cb22bb8f5acdc3",
      "sha1":   "2aae6c69ec0821c0d6d8e9a9b1c0e8a7...",
      "sha256": "b94d27b9934d3e08a52e52d7da7dabfa...",
      "sha384": "fdbd8e75a67f29f701a4e040385e2e23...",
      "sha512": "309ecc489c12d6eb4cc40f50c902f2b4..."
    },
    "encoding": "hex",
    "input_length": 11
  }
}
GET/api/v1/util/uuid

UUID Generator

Generate one or more cryptographically random UUID v4 values.

Query Parameters

ParameterTypeRequiredDescription
countnumberNoNumber of UUIDs to generate (1–100). Default: 1.
uppercasebooleanNoReturn UUIDs in uppercase. Default: false.

Example Request

GET /api/v1/util/uuid?count=3

Example Response

{
  "success": true,
  "data": {
    "uuids": [
      "a3bb189e-8bf9-3888-9912-ace4e6543002",
      "b5c2a9f1-2d3e-4a5b-8c9d-0e1f2a3b4c5d",
      "c7d4e8f2-3e4f-5b6c-9d0e-1f2a3b4c5d6e"
    ],
    "count": 3
  }
}
POST/api/v1/util/base64

Base64 Encode / Decode

Encode a string to Base64 or decode Base64 back to plaintext. Supports standard and URL-safe variants.

Request Body

ParameterTypeRequiredDescription
textstringYesInput string. Max 500,000 characters.
action"encode" | "decode"NoOperation to perform. Default: "encode".
url_safebooleanNoUse URL-safe alphabet (replaces +/= with -_). Default: false.

Example Request

{
  "text": "Hello, World!",
  "action": "encode"
}

Example Response

{
  "success": true,
  "data": {
    "result": "SGVsbG8sIFdvcmxkIQ==",
    "action": "encode",
    "url_safe": false,
    "input_length": 13,
    "output_length": 20
  }
}
POST/api/v1/util/password

Password Generator

Generate cryptographically secure passwords with configurable character sets and length.

Request Body

ParameterTypeRequiredDescription
lengthnumberNoPassword length (8–128). Default: 16.
countnumberNoNumber of passwords to generate (1–50). Default: 1.
uppercasebooleanNoInclude uppercase letters. Default: true.
lowercasebooleanNoInclude lowercase letters. Default: true.
digitsbooleanNoInclude digits 0–9. Default: true.
symbolsbooleanNoInclude symbols !@#$%^&* etc. Default: false.
exclude_ambiguousbooleanNoRemove O, 0, I, l to avoid confusion. Default: false.

Example Request

{
  "length": 20,
  "count": 3,
  "symbols": true,
  "exclude_ambiguous": true
}

Example Response

{
  "success": true,
  "data": {
    "passwords": ["Xk#9mP@2nQw!rY5vZe&J", "..."],
    "count": 3,
    "length": 20,
    "charset_size": 88
  }
}
GET/api/v1/ip/lookup

IP Lookup

Get geolocation, ISP, ASN and proxy/VPN detection for any IPv4 or IPv6 address. Omit `ip` to look up the caller's own IP.

Query Parameters

ParameterTypeRequiredDescription
ipstringNoIPv4 or IPv6 address. Omit to look up caller IP.

Example Request

GET /api/v1/ip/lookup?ip=8.8.8.8

Example Response

{
  "success": true,
  "data": {
    "ip": "8.8.8.8",
    "country": "United States",
    "country_code": "US",
    "region": "Virginia",
    "city": "Ashburn",
    "zip": "20149",
    "lat": 39.03,
    "lon": -77.5,
    "timezone": "America/New_York",
    "isp": "Google LLC",
    "org": "Google Public DNS",
    "asn": "AS15169 Google LLC",
    "is_mobile": false,
    "is_proxy": false,
    "is_hosting": true
  }
}
GET/api/v1/domain/dns

DNS Records

Query DNS records for any domain. Returns all record types by default or a specific type via the `type` parameter.

Query Parameters

ParameterTypeRequiredDescription
domainstringYesDomain name to query (e.g. example.com).
type"A" | "AAAA" | "MX" | "TXT" | "CNAME" | "NS" | "SOA" | "PTR"NoRecord type. Omit to return all available types.

Example Request

GET /api/v1/domain/dns?domain=github.com&type=MX

Example Response

{
  "success": true,
  "data": {
    "domain": "github.com",
    "records": {
      "MX": [
        { "exchange": "aspmx.l.google.com", "priority": 1 },
        { "exchange": "alt1.aspmx.l.google.com", "priority": 5 }
      ]
    },
    "queried_at": "2026-05-24T10:00:00.000Z"
  }
}
GET/api/v1/domain/ssl

SSL Certificate Checker

Retrieve SSL certificate details for any HTTPS domain including issuer, expiry date, SAN list and days remaining.

Query Parameters

ParameterTypeRequiredDescription
domainstringYesDomain name to check (e.g. example.com).

Example Request

GET /api/v1/domain/ssl?domain=github.com

Example Response

{
  "success": true,
  "data": {
    "domain": "github.com",
    "is_valid": true,
    "days_remaining": 287,
    "valid_from": "2025-03-10T00:00:00.000Z",
    "valid_to": "2026-03-10T23:59:59.000Z",
    "subject": {
      "common_name": "github.com",
      "org": "GitHub, Inc.",
      "country": "US"
    },
    "issuer": {
      "common_name": "DigiCert TLS RSA SHA256 2020 CA1",
      "org": "DigiCert Inc",
      "country": "US"
    },
    "san": ["github.com", "www.github.com"]
  }
}
GET/api/v1/domain/whois

WHOIS Lookup

Look up domain registration data via RDAP — the modern HTTPS replacement for raw WHOIS. Returns registrar, registrant, dates, nameservers and status flags.

Query Parameters

ParameterTypeRequiredDescription
domainstringYesDomain name to look up (e.g. example.com).

Example Request

GET /api/v1/domain/whois?domain=github.com

Example Response

{
  "success": true,
  "data": {
    "domain": "github.com",
    "status": ["client delete prohibited", "client transfer prohibited"],
    "registered_at": "2007-10-09T18:20:50Z",
    "updated_at":    "2024-09-08T09:18:27Z",
    "expires_at":    "2026-10-09T18:20:50Z",
    "registrar": { "name": "MarkMonitor Inc.", "org": null, "email": null },
    "registrant": null,
    "nameservers": ["dns1.p08.nsone.net", "dns2.p08.nsone.net"],
    "queried_at": "2026-05-24T10:00:00.000Z"
  }
}