Diese Seite ist noch nicht auf Deutsch verfügbar, daher zeigen wir die englische Version.

devpack API Documentation

Use devpack’s most useful tools from your own code. The API is free, needs no sign-up and returns JSON. Every endpoint accepts GET with query parameters or POST with a JSON body.

All endpoints

Quick start

The base URL is https://devpack.app/v1.

curl "https://devpack.app/v1/hash?text=hello"

JavaScript

const res = await fetch('https://devpack.app/v1/uuid?count=2');
const { ok, data, error } = await res.json();
if (!ok) throw new Error(error.message);
console.log(data.uuids);

Python

import requests

r = requests.post('https://devpack.app/v1/json-format', json={'json': '{"a":1}'})
print(r.json()['data']['formatted'])

Send secrets, such as tokens or passwords, in a POST body rather than the URL, because URLs can end up in logs. The API can be called directly from a browser (CORS is open). A machine-readable OpenAPI description is also available.

Responses

Successful calls return {"ok": true, "data": {…}}. Failed calls return an error with a stable code:

{
  "ok": false,
  "error": { "code": "invalid_request", "message": "Missing required parameter: text" }
}
StatusCodeMeaning
400invalid_requestA parameter is missing or invalid
401invalid_keyThe API key isn’t valid
404not_foundUnknown endpoint
429rate_limitedA limit was reached. Wait for Retry-After seconds
502upstream_errorThe site or service being checked failed
503unavailableThe API is temporarily off

Rate limits

No key is needed. Free use is counted per IP address:

TypeLimit
Text, generators and conversion60 requests per minute
Network checks15 requests per minute
All requests together1,000 requests per day

Each response includes X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset, X-RateLimit-Daily-Limit and X-RateLimit-Daily-Remaining headers.

API keys

Keys aren’t needed for free use. If you’ve been given one, send it in a header:

curl -H "X-API-Key: YOUR_KEY" "https://devpack.app/v1/uuid"

Need higher limits? Get in touch.

Fair use and privacy

The API is provided as is, under our Terms. Only check sites you’re allowed to test, and don’t use the API to overload any service. We don’t store the text you send. Network checks can only reach public addresses. Limits and endpoints may change; breaking changes will go in a new version.

Text and data

/v1/hash

GETPOST

Hash text with MD5 or SHA.

Parameters

NameTypeRequiredDescription
textstringYesThe text to hash, up to 100 KB
algorithmstringNomd5, sha1, sha256 (default), sha384 or sha512
encodingstringNohex (default) or base64

Request

curl "https://devpack.app/v1/hash?text=hello&algorithm=sha256"

Response

{
  "ok": true,
  "data": {
    "algorithm": "sha256",
    "encoding": "hex",
    "hash": "2cf24dba5fb0a30e26e83b2ac5b9e29e1b161e5c1fa7425e73043362938b9824"
  }
}

/v1/base64

GETPOST

Encode or decode Base64.

Parameters

NameTypeRequiredDescription
textstringYesThe input, up to 100 KB
actionstringNoencode (default) or decode
url_safebooleanNoUse the URL-safe alphabet. Default false

Request

curl "https://devpack.app/v1/base64?text=hello+world&action=encode"

Response

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

/v1/url-encode

GETPOST

Percent-encode or decode a string.

Parameters

NameTypeRequiredDescription
textstringYesThe input, up to 100 KB
actionstringNoencode (default) or decode

Request

curl "https://devpack.app/v1/url-encode?text=a+b%26c%3Dd&action=encode"

Response

{
  "ok": true,
  "data": {
    "action": "encode",
    "result": "a%20b%26c%3Dd"
  }
}

/v1/slug

GETPOST

Turn text into a URL slug.

Parameters

NameTypeRequiredDescription
textstringYesThe text to convert
separatorstringNo- (default) or _

Request

curl "https://devpack.app/v1/slug?text=Hello%2C+W%C3%B6rld%21+It%E2%80%99s+2026"

Response

{
  "ok": true,
  "data": {
    "slug": "hello-world-its-2026"
  }
}

/v1/text-stats

GETPOST

Count words, characters, lines and reading time.

Parameters

NameTypeRequiredDescription
textstringYesThe text, up to 100 KB

Request

curl "https://devpack.app/v1/text-stats?text=One+two+three.+Four+five%21"

Response

{
  "ok": true,
  "data": {
    "characters": 25,
    "charactersNoSpaces": 21,
    "words": 5,
    "sentences": 2,
    "lines": 1,
    "readingTimeSeconds": 2
  }
}

/v1/json-format

GETPOST

Validate JSON, then pretty-print or minify it.

Parameters

NameTypeRequiredDescription
jsonstringYesThe JSON text, up to 100 KB
indentintegerNoSpaces per level, 0–8. Default 2
minifybooleanNoRemove all whitespace. Default false

Request

curl "https://devpack.app/v1/json-format?json=%7B%22name%22%3A%22devpack%22%2C%22tools%22%3A500%7D&indent=2"

Response

{
  "ok": true,
  "data": {
    "valid": true,
    "formatted": "{\n  \"name\": \"devpack\",\n  \"tools\": 500\n}"
  }
}

/v1/jwt-decode

GETPOST

Decode a JWT without verifying its signature.

Parameters

NameTypeRequiredDescription
tokenstringYesThe JWT

Request

curl "https://devpack.app/v1/jwt-decode?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjMiLCJuYW1lIjoiQWRhIiwiZXhwIjo0MTAyNDQ0ODAwfQ.c2lnbmF0dXJl"

Response

{
  "ok": true,
  "data": {
    "header": {
      "alg": "HS256",
      "typ": "JWT"
    },
    "payload": {
      "sub": "123",
      "name": "Ada",
      "exp": 4102444800
    },
    "expired": false,
    "signatureVerified": false
  }
}

/v1/case-convert

GETPOST

Change text case, such as camelCase or snake_case.

Parameters

NameTypeRequiredDescription
textstringYesThe text, up to 100 KB
tostringYeslower, upper, title, sentence, camel, pascal, snake, kebab or constant

Request

curl "https://devpack.app/v1/case-convert?text=Hello+big+world&to=snake"

Response

{
  "ok": true,
  "data": {
    "to": "snake",
    "result": "hello_big_world"
  }
}

/v1/html-entities

GETPOST

Escape or unescape HTML entities.

Parameters

NameTypeRequiredDescription
textstringYesThe text, up to 100 KB
actionstringNoencode (default) or decode

Request

curl "https://devpack.app/v1/html-entities?text=%3Ca+href%3D%22%2F%22%3ETom+%26+Jerry%3C%2Fa%3E&action=encode"

Response

{
  "ok": true,
  "data": {
    "action": "encode",
    "result": "<a href="/">Tom & Jerry</a>"
  }
}

/v1/csv-to-json

GETPOST

Convert CSV to JSON.

Parameters

NameTypeRequiredDescription
csvstringYesThe CSV, up to 100 KB
delimiterstringNocomma (default), semicolon, tab or pipe
headerbooleanNoFirst row holds column names. Default true

Request

curl "https://devpack.app/v1/csv-to-json?csv=name%2Cage%0AAda%2C36%0AGrace%2C45"

Response

{
  "ok": true,
  "data": {
    "rows": 2,
    "columns": [
      "name",
      "age"
    ],
    "data": [
      {
        "name": "Ada",
        "age": "36"
      },
      {
        "name": "Grace",
        "age": "45"
      }
    ]
  }
}

/v1/json-to-csv

GETPOST

Convert a JSON array of objects to CSV.

Parameters

NameTypeRequiredDescription
jsonstringYesA JSON array of objects, up to 100 KB

Request

curl "https://devpack.app/v1/json-to-csv?json=%5B%7B%22name%22%3A%22Ada%22%2C%22age%22%3A36%7D%2C%7B%22name%22%3A%22Grace%22%2C%22age%22%3A45%7D%5D"

Response

{
  "ok": true,
  "data": {
    "rows": 2,
    "columns": [
      "name",
      "age"
    ],
    "csv": "name,age\nAda,36\nGrace,45"
  }
}

Generators

/v1/uuid

GETPOST

Generate random version 4 UUIDs.

Parameters

NameTypeRequiredDescription
countintegerNo1–100. Default 1

Request

curl "https://devpack.app/v1/uuid?count=2"

Response

{
  "ok": true,
  "data": {
    "uuids": [
      "9493a179-319b-44a5-b1b1-17296a2b406f",
      "7b74780e-d89e-4a0c-8fff-9279e426b47c"
    ]
  }
}

/v1/password

GETPOST

Generate strong random passwords.

Parameters

NameTypeRequiredDescription
lengthintegerNo8–128. Default 20
countintegerNo1–50. Default 1
symbolsbooleanNoInclude symbols. Default true
numbersbooleanNoInclude digits. Default true
uppercasebooleanNoInclude capitals. Default true

Request

curl "https://devpack.app/v1/password?length=16&count=1"

Response

{
  "ok": true,
  "data": {
    "passwords": [
      "Mqt5&?EyF4i!DUBQ"
    ]
  }
}

/v1/lorem-ipsum

GETPOST

Generate placeholder text.

Parameters

NameTypeRequiredDescription
paragraphsintegerNo1–20. Default 1
wordsintegerNoWords per paragraph, 5–200. Default 40

Request

curl "https://devpack.app/v1/lorem-ipsum?paragraphs=1&words=12"

Response

{
  "ok": true,
  "data": {
    "paragraphs": [
      "Lorem ipsum dolor sit amet consectetur adipiscing elit sed do eiusmod tempor."
    ]
  }
}

/v1/random

GETPOST

Generate secure random whole numbers.

Parameters

NameTypeRequiredDescription
minintegerNoLowest value. Default 1
maxintegerNoHighest value. Default 100
countintegerNo1–100. Default 1
uniquebooleanNoNo repeats. Default false

Request

curl "https://devpack.app/v1/random?min=1&max=6&count=2"

Response

{
  "ok": true,
  "data": {
    "numbers": [
      3,
      1
    ]
  }
}

Conversion

/v1/color

GETPOST

Convert a color between hex, RGB and HSL.

Parameters

NameTypeRequiredDescription
valuestringYesFor example #ff6600, rgb(255, 102, 0) or hsl(24, 100%, 50%)

Request

curl "https://devpack.app/v1/color?value=%23ff6600"

Response

{
  "ok": true,
  "data": {
    "hex": "#ff6600",
    "rgb": {
      "r": 255,
      "g": 102,
      "b": 0
    },
    "hsl": {
      "h": 24,
      "s": 100,
      "l": 50
    },
    "css": {
      "rgb": "rgb(255, 102, 0)",
      "hsl": "hsl(24, 100%, 50%)"
    }
  }
}

/v1/timestamp

GETPOST

Convert between Unix time and ISO 8601 dates.

Parameters

NameTypeRequiredDescription
valuestringNoUnix seconds, Unix milliseconds or an ISO date. Default: now

Request

curl "https://devpack.app/v1/timestamp?value=1798761600"

Response

{
  "ok": true,
  "data": {
    "unix": 1798761600,
    "unixMs": 1798761600000,
    "iso": "2027-01-01T00:00:00.000Z",
    "utc": "Fri, 01 Jan 2027 00:00:00 GMT"
  }
}

/v1/url-parse

GETPOST

Split a URL into its parts.

Parameters

NameTypeRequiredDescription
urlstringYesThe URL to parse

Request

curl "https://devpack.app/v1/url-parse?url=https%3A%2F%2Fdevpack.app%3A8443%2Ftools%3Fq%3Djson%26page%3D2%23top"

Response

{
  "ok": true,
  "data": {
    "protocol": "https",
    "host": "devpack.app",
    "port": "8443",
    "path": "/tools",
    "query": {
      "q": "json",
      "page": "2"
    },
    "hash": "top",
    "origin": "https://devpack.app:8443"
  }
}

/v1/number-base

GETPOST

Convert a whole number between bases 2 and 36.

Parameters

NameTypeRequiredDescription
valuestringYesThe number
fromintegerNoInput base. Default 10
tointegerNoOutput base. Default 16

Request

curl "https://devpack.app/v1/number-base?value=255&from=10&to=16"

Response

{
  "ok": true,
  "data": {
    "result": "ff",
    "decimal": "255"
  }
}

/v1/unit-convert

GETPOST

Convert length, weight, temperature, data and time units.

Parameters

NameTypeRequiredDescription
valuenumberYesThe amount
fromstringYesm, km, cm, mm, in, ft, yd, mi, kg, g, mg, lb, oz, t, c, f, k, b, kb, mb, gb, tb, kib, mib, gib, ms, s, min, h, d, wk
tostringYesThe target unit, from the same type

Request

curl "https://devpack.app/v1/unit-convert?value=10&from=km&to=mi"

Response

{
  "ok": true,
  "data": {
    "value": 10,
    "from": "km",
    "to": "mi",
    "result": 6.21371192237
  }
}

/v1/date-diff

GETPOST

Find the time between two dates.

Parameters

NameTypeRequiredDescription
fromstringYesStart date, in ISO format
tostringNoEnd date. Default: now

Request

curl "https://devpack.app/v1/date-diff?from=2026-01-01&to=2026-10-30"

Response

{
  "ok": true,
  "data": {
    "days": 302,
    "weeks": 43.14,
    "hours": 7248,
    "minutes": 434880,
    "seconds": 26092800
  }
}

/v1/cron-next

GETPOST

List the next run times of a cron expression, in UTC.

Parameters

NameTypeRequiredDescription
expressionstringYesFive fields: minute hour day month weekday
countintegerNo1–20. Default 5
fromstringNoStart date. Default: now

Request

curl "https://devpack.app/v1/cron-next?expression=0+9+*+*+1&count=2&from=2026-10-30T00%3A00%3A00Z"

Response

{
  "ok": true,
  "data": {
    "expression": "0 9 * * 1",
    "runs": [
      "2026-11-02T09:00:00.000Z",
      "2026-11-09T09:00:00.000Z"
    ]
  }
}

/v1/http-status

GETPOST

Look up an HTTP status code.

Parameters

NameTypeRequiredDescription
codeintegerYes100–599

Request

curl "https://devpack.app/v1/http-status?code=404"

Response

{
  "ok": true,
  "data": {
    "code": 404,
    "name": "Not Found",
    "class": "Client error",
    "docs": "https://devpack.app/http-status-codes/404"
  }
}

/v1/user-agent

GETPOST

Parse a user agent string. Defaults to the caller’s.

Parameters

NameTypeRequiredDescription
uastringNoThe user agent string

Request

curl "https://devpack.app/v1/user-agent?ua=Mozilla%2F5.0+%28Windows+NT+10.0%3B+Win64%3B+x64%29+AppleWebKit%2F537.36+%28KHTML%2C+like+Gecko%29+Chrome%2F130.0.0.0+Safari%2F537.36"

Response

{
  "ok": true,
  "data": {
    "userAgent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.0.0 Safari/537.36",
    "browser": {
      "name": "Chrome",
      "version": "130.0.0.0"
    },
    "os": {
      "name": "Windows",
      "version": "10.0"
    },
    "device": "desktop",
    "bot": false
  }
}

Marketing

/v1/ab-test

GETPOST

Check whether an A/B test result is statistically significant.

Parameters

NameTypeRequiredDescription
visitors_aintegerYesVisitors to version A
conversions_aintegerYesConversions for version A
visitors_bintegerYesVisitors to version B
conversions_bintegerYesConversions for version B
confidenceintegerNo90, 95 (default) or 99

Request

curl "https://devpack.app/v1/ab-test?visitors_a=1000&conversions_a=100&visitors_b=1000&conversions_b=130"

Response

{
  "ok": true,
  "data": {
    "rateA": 0.1,
    "rateB": 0.13,
    "uplift": 0.3,
    "zScore": 2.1027,
    "pValue": 0.035488,
    "confidence": 95,
    "significant": true,
    "winner": "B"
  }
}

Network

/v1/ip

GETPOST

Return the IP address of the caller.

Request

curl "https://devpack.app/v1/ip"

Response

{
  "ok": true,
  "data": {
    "ip": "203.0.113.42",
    "version": "IPv4"
  }
}

/v1/dns

GETPOST

Look up DNS records. Network check

Parameters

NameTypeRequiredDescription
domainstringYesThe domain or IPv4 address
typesstringNoComma-separated: A, AAAA, CNAME, MX, TXT, NS, SOA, CAA, SRV, PTR. Default: the common set

Request

curl "https://devpack.app/v1/dns?domain=example.com&types=A%2CMX"

Response

{
  "ok": true,
  "data": {
    "domain": "example.com",
    "results": [
      {
        "type": "A",
        "status": 0,
        "records": [
          {
            "name": "example.com",
            "ttl": 300,
            "type": "A",
            "data": "93.184.215.14"
          }
        ]
      },
      {
        "type": "MX",
        "status": 0,
        "records": [
          {
            "name": "example.com",
            "ttl": 3600,
            "type": "MX",
            "data": "0 mail.example.com."
          }
        ]
      }
    ],
    "resolver": "Cloudflare 1.1.1.1 (DNS over HTTPS)"
  }
}

/v1/ssl

GETPOST

Check a site’s SSL certificate. Network check

Parameters

NameTypeRequiredDescription
domainstringYesThe host name

Request

curl "https://devpack.app/v1/ssl?domain=example.com"

Response

{
  "ok": true,
  "data": {
    "host": "example.com",
    "valid": true,
    "protocol": "TLSv1.3",
    "daysLeft": 74,
    "hostnameMatches": true,
    "sans": [
      "example.com",
      "www.example.com"
    ],
    "issuer": {
      "C": "US",
      "O": "Example CA",
      "CN": "Example CA R1"
    },
    "validFrom": "Oct 1 00:00:00 2026 GMT",
    "validTo": "Jan 12 23:59:59 2027 GMT"
  }
}

/v1/status

GETPOST

Check whether a website is up. Network check

Parameters

NameTypeRequiredDescription
urlstringYesThe page to check

Request

curl "https://devpack.app/v1/status?url=https%3A%2F%2Fexample.com"

Response

{
  "ok": true,
  "data": {
    "url": "https://example.com/",
    "finalUrl": "https://example.com/",
    "up": true,
    "status": 200,
    "time": 182,
    "ttfb": 96,
    "title": "Example Domain",
    "server": "cloudflare",
    "checkedAt": "2026-10-30T12:00:00.000Z"
  }
}

/v1/headers

GETPOST

Read HTTP headers and grade security headers. Network check

Parameters

NameTypeRequiredDescription
urlstringYesThe page to check

Request

curl "https://devpack.app/v1/headers?url=https%3A%2F%2Fexample.com"

Response

{
  "ok": true,
  "data": {
    "url": "https://example.com/",
    "status": 200,
    "headers": {
      "content-type": "text/html",
      "server": "cloudflare"
    },
    "security": {
      "score": 25,
      "grade": "E",
      "https": true,
      "missing": [
        "Content-Security-Policy",
        "X-Frame-Options"
      ]
    }
  }
}

/v1/redirects

GETPOST

Follow a URL’s redirect chain. Network check

Parameters

NameTypeRequiredDescription
urlstringYesThe URL to follow

Request

curl "https://devpack.app/v1/redirects?url=http%3A%2F%2Fexample.com"

Response

{
  "ok": true,
  "data": {
    "requested": "http://example.com/",
    "final": "https://example.com/",
    "status": 200,
    "chain": [
      {
        "url": "http://example.com/",
        "status": 301,
        "time": 88
      },
      {
        "url": "https://example.com/",
        "status": 200,
        "time": 126
      }
    ],
    "totalTime": 214
  }
}

/v1/whois

GETPOST

Look up domain or IP registration data (RDAP). Network check

Parameters

NameTypeRequiredDescription
querystringYesThe domain or IP address

Request

curl "https://devpack.app/v1/whois?query=example.com"

Response

{
  "ok": true,
  "data": {
    "kind": "domain",
    "query": "example.com",
    "domain": "EXAMPLE.COM",
    "source": "https://rdap.verisign.com/com/v1/domain/example.com",
    "status": [
      "client delete prohibited"
    ],
    "registrar": "Example Registrar",
    "ianaId": "376",
    "created": "1995-08-14T04:00:00Z",
    "updated": "2026-08-14T08:01:43Z",
    "expires": "2027-08-13T04:00:00Z",
    "dnssec": true,
    "nameservers": [
      "ns1.example.net",
      "ns2.example.net"
    ],
    "entities": []
  }
}

/v1/meta

GETPOST

Read a page’s title, description and social tags. Network check

Parameters

NameTypeRequiredDescription
urlstringYesThe page to read

Request

curl "https://devpack.app/v1/meta?url=https%3A%2F%2Fexample.com"

Response

{
  "ok": true,
  "data": {
    "url": "https://example.com/",
    "status": 200,
    "title": "Example Domain",
    "description": "An example page.",
    "canonical": "https://example.com/",
    "robots": null,
    "openGraph": {
      "title": "Example Domain",
      "description": "An example page.",
      "image": "https://example.com/og.png"
    },
    "twitter": {
      "card": "summary_large_image",
      "image": "https://example.com/og.png"
    }
  }
}

/v1/robots

GETPOST

Read a site’s robots.txt and test whether a path is allowed. Network check

Parameters

NameTypeRequiredDescription
urlstringYesThe page or site
user_agentstringNoCrawler to test. Default Googlebot

Request

curl "https://devpack.app/v1/robots?url=https%3A%2F%2Fexample.com%2F&user_agent=Googlebot"

Response

{
  "ok": true,
  "data": {
    "exists": true,
    "test": {
      "path": "/",
      "ua": "Googlebot",
      "allowed": true,
      "rule": null,
      "group": "*"
    },
    "bots": [
      {
        "bot": "Googlebot",
        "allowed": true,
        "rule": null,
        "group": "*"
      },
      {
        "bot": "GPTBot",
        "allowed": false,
        "rule": "/",
        "group": "gptbot"
      }
    ]
  }
}

/v1/email-dns

GETPOST

Check a domain’s MX, SPF and DMARC email setup. Network check

Parameters

NameTypeRequiredDescription
domainstringYesThe domain

Request

curl "https://devpack.app/v1/email-dns?domain=example.com"

Response

{
  "ok": true,
  "data": {
    "domain": "example.com",
    "checks": [
      {
        "id": "spf",
        "status": "ok",
        "title": "SPF valid · 0/10 lookups · -all",
        "detail": "v=spf1 -all"
      },
      {
        "id": "dmarc",
        "status": "ok",
        "title": "DMARC enforced · p=reject",
        "detail": "v=DMARC1;p=reject"
      }
    ]
  }
}

/v1/tech

GETPOST

Detect the technologies a website uses. Network check

Parameters

NameTypeRequiredDescription
urlstringYesThe site to check

Request

curl "https://devpack.app/v1/tech?url=https%3A%2F%2Fexample.com"

Response

{
  "ok": true,
  "data": {}
}