Free developer API

A free JSON API for the things scripts keep needing. No API key, no signup. CORS is open, so it works from browsers, CI pipelines, and serverless functions alike. Fair-use limit: 60 requests per minute per IP — responses carry X-RateLimit headers, and 429s include Retry-After.

Every v1 response uses the same envelope: { "ok": true, "data": … } on success, { "ok": false, "error": "…" } on failure. Machine-readable spec: /api/v1/openapi.json

Need more than the fair-use limit? Tell us about your use case.

Quick start

JavaScript

const res = await fetch("https://devtoolshub.tools/api/v1/hash", {
  method: "POST",
  headers: { "Content-Type": "application/json" },
  body: JSON.stringify({ text: "hello", algo: "sha256" }),
});
const { ok, data, error } = await res.json();
if (ok) console.log(data.hash);

Python

import requests

res = requests.get(
    "https://devtoolshub.tools/api/v1/cron/next",
    params={"expr": "0 9 * * 1-5", "count": 3},
)
body = res.json()
if body["ok"]:
    for run in body["data"]["next_runs"]:
        print(run["iso"])

API v1 endpoints

GET/api/v1/uuid

Generate cryptographically random UUID v4 values.

count
How many to generate, 1–100 (default 1)

Example

curl "https://devtoolshub.tools/api/v1/uuid?count=3"

Response

{
  "ok": true,
  "data": { "uuids": ["3f2b8c1e-…", "9d4a4f6b-…", "8a2e5c7d-…"], "count": 3, "version": 4 }
}

GET/api/v1/hash

Hash text with MD5, SHA-1, SHA-256, or SHA-512. Also accepts POST { text, algo }.

text
Text to hash (required)
algo
md5, sha1, sha256, sha512 (default sha256)

Example

curl "https://devtoolshub.tools/api/v1/hash?text=hello&algo=sha256"

Response

{
  "ok": true,
  "data": { "algo": "sha256", "hash": "2cf24dba5fb0a30e26e83b2ac5b9e29e1b161e5c1fa7425e73043362938b9824", "length": 5 }
}

GET/api/v1/base64

Base64 encode or decode. Also accepts POST { text, action }.

text
Text to encode/decode (required)
action
encode or decode (default encode)

Example

curl "https://devtoolshub.tools/api/v1/base64?text=hello&action=encode"

Response

{ "ok": true, "data": { "action": "encode", "result": "aGVsbG8=" } }

POST/api/v1/json/validate

Validate JSON. Send { "json": "<string>" } or the raw document as the body. Returns error line/column when invalid.

json
The JSON string to validate (body field, or raw body)

Example

curl -X POST "https://devtoolshub.tools/api/v1/json/validate" \
  -H "Content-Type: application/json" \
  -d '{"json":"{\"a\":1,}"}'

Response

{
  "ok": true,
  "data": { "valid": false, "error": "Unexpected token '}' …", "line": 1, "column": 8 }
}

GET/api/v1/jwt/decode

Decode a JWT's header and payload. Signatures are never verified server-side — decode only. Also accepts POST { token }.

token
The JWT (required)

Example

curl "https://devtoolshub.tools/api/v1/jwt/decode?token=eyJhbGciOi..."

Response

{
  "ok": true,
  "data": { "header": { "alg": "HS256" }, "payload": { "sub": "123" }, "expired": null, "exp": null }
}

GET/api/v1/cron/next

Parse a cron expression: plain-English description and next run times (UTC).

expr
The cron expression, URL-encoded (required)
count
Number of upcoming runs, 1–20 (default 5)

Example

curl "https://devtoolshub.tools/api/v1/cron/next?expr=0%209%20*%20*%201-5&count=3"

Response

{
  "ok": true,
  "data": {
    "expression": "0 9 * * 1-5",
    "description": "At 09:00, on weekdays.",
    "next_runs": [{ "iso": "2026-07-14T09:00:00.000Z", "unix": 1786352400 }, …]
  }
}

GET/api/v1/time

Current time in the formats developers actually need.

Example

curl "https://devtoolshub.tools/api/v1/time"

Response

{
  "ok": true,
  "data": { "iso": "2026-07-13T05:30:00.000Z", "unix": 1783150200, "unix_ms": 1783150200000, "utc": "…" }
}

Additional endpoints

These predate v1 and keep their original response shapes. They will be joined by v1 equivalents over time; nothing here is going away.

GET/api/network/dns

DNS lookup for any record type.

host
Hostname to resolve (required)
type
A, AAAA, CNAME, MX, TXT, NS, SOA, SRV, PTR, CAA (default A)

Example

curl "https://devtoolshub.tools/api/network/dns?host=example.com&type=MX"

Response

{ "host": "example.com", "type": "MX", "records": [ … ] }

GET/api/network/headers

Fetch the response headers another server returns for a URL.

url
Absolute URL to inspect (required)

Example

curl "https://devtoolshub.tools/api/network/headers?url=https://example.com"

Response

{ "status": 200, "headers": { "content-type": "text/html", … } }

POST/api/code/minify

Minify JavaScript, CSS, or HTML with build-grade minifiers.

code
Source code (body field, required)
language
js, css, or html (body field, required)

Example

curl -X POST "https://devtoolshub.tools/api/code/minify" \
  -H "Content-Type: application/json" \
  -d '{"language":"js","code":"function add (a, b) { return a + b; }"}'

Response

{ "minified": "function add(n,d){return n+d}" }

Prefer keeping data out of HTTP entirely? Every tool on DevToolsHub also runs fully in your browser — the API exists for scripts and automation, while the web tools never send your input to our servers. See how it works.