docs / dev-utils

Developer Utilities API

Developer Utilities API

base /dev-utils/v121 endpoints
post/dev-utils/v1/hash1 credit

Hash/checksum text or binary (base64/hex) input: md5…sha3·blake2·crc32·adler32, optional HMAC keying → hex + base64 digests.

ParameterAllowed / rangeDescription
inputrequiredThe data to hash. Plain text by default; set input_encoding=base64|hex to hash binary data.
algo = sha256optionalmd5 · sha1 · sha224 · sha256 · sha384 · sha512 · sha3-256 · sha3-512 · blake2b · blake2s · crc32 · adler32Hash/checksum algorithm.
hmac_keyoptionalOptional HMAC key — returns the keyed HMAC digest instead of the plain hash (not valid for crc32/adler32).
input_encoding = textoptionaltext · base64 · hexHow to interpret `input`: utf-8 text, or base64/hex-encoded binary.
Try in playground →
post/dev-utils/v1/uuid1 credit

Generate ids: uuid v4/v7/v1(MAC-safe)/v3/v5, ULID, nanoid — up to 100.

ParameterAllowed / rangeDescription
version = v4optionalv4 · v7 · v1 · v3 · v5 · ulid · nanoidId kind. v4=random · v7=time-ordered (RFC 9562) · v1=timestamp (random multicast node — host MAC never leaks) · v3/v5=deterministic namespace+name (md5/sha1) · ulid=Crockford-base32 sortable · nanoid=21-char URL-safe.
count = 1optional1–100How many ids to generate (v3/v5 always 1 — deterministic).
namespaceoptionalv3/v5 namespace: dns|url|oid|x500 or a custom UUID.
nameoptionalv3/v5 name to hash into the namespace.
size = 21optional8–64nanoid length (nanoid only).
Try in playground →
post/dev-utils/v1/encode1 credit

Encode/decode: base64(+url-safe), hex, URL (path/component/form), HTML entities, unicode-escape, json-string.

ParameterAllowed / rangeDescription
inputrequiredThe string to encode or decode.
oprequiredbase64 · base64url · hex · url · url-component · url-form · html · unicode-escape · json-stringCodec. url=path-safe quote · url-component=encode everything (JS encodeURIComponent) · url-form=+ for spaces · html=entities · json-string=JSON string-literal escaping.
direction = encodeoptionalencode · decodeencode (default) or decode.
Try in playground →
post/dev-utils/v1/jwt_decode1 credit

Decode a JWT WITHOUT needing the key (header+payload+claims analysis); optionally verify the signature with a provided key. Decode-only — this API never signs tokens.

ParameterAllowed / rangeDescription
tokenrequiredThe JWT to decode.
verify_keyoptionalOptional verification key: the HMAC secret (HS*) or PEM public key (RS*/ES*/PS*). Algorithm is taken from the token header (whitelisted; alg=none always fails).
Try in playground →
post/dev-utils/v1/password1 credit

Generate cryptographically-secure passwords (charset controls, ambiguity filter) + entropy strength score; or score a provided password with `check`.

ParameterAllowed / rangeDescription
length = 16optional4–128Password length.
count = 1optional1–50How many passwords.
lowercase = trueoptionalInclude a-z.
uppercase = trueoptionalInclude A-Z.
digits = trueoptionalInclude 0-9.
symbols = trueoptionalInclude symbols (!@#$%^&*()-_=+[]{};:,.<>?/~).
exclude_ambiguous = falseoptionalDrop look-alikes (Il1O0o`'"|).
checkoptionalScore THIS password instead of generating (entropy heuristic; the password is not stored or logged).
Try in playground →
post/dev-utils/v1/cron1 credit

Explain a cron expression in plain language (15 locales) + compute the next N run times in any IANA timezone (DST-correct).

ParameterAllowed / rangeDescription
expressionrequired5-field cron (min hour dom month dow), @aliases (@daily, @hourly…), or 6-field with seconds first.
runs = 5optional1–50How many upcoming run times to return.
tz = UTCoptionalIANA timezone for the run times (DST handled).
locale = enoptionalen · de · es · fr · it · nl · pl · pt · ro · ru · tr · uk · ja · ko · zhLanguage of the human explanation.
from_timeoptionalCompute runs after this ISO-8601 instant (default now). Pin it for reproducible output.
Try in playground →
post/dev-utils/v1/slugify1 credit

URL-safe slug from any-script text (CJK/Cyrillic/Arabic → ASCII via anyascii transliteration).

ParameterAllowed / rangeDescription
inputrequiredText to slugify.
separator = -optionalWord separator (default '-').
lowercase = trueoptionalLowercase the slug (default true).
max_length = 0optional0–500Truncate at a word boundary (0 = no limit).
Try in playground →
post/dev-utils/v1/regex_test1 credit

Test a regex against text: matches + groups + named groups, optional replace. User patterns run with a hard 1s timeout (ReDoS-guarded) + size caps.

ParameterAllowed / rangeDescription
patternrequiredThe regular expression (≤2000 chars; Python `regex` syntax — PCRE-compatible incl. \p{...}).
inputrequiredThe subject text to scan.
flagsoptionalFlag letters, any of: i (ignorecase), m (multiline), s (dotall), x (verbose). E.g. 'im'.
replacementoptionalOptional replacement template — when set, `replaced` holds the substituted text (backrefs \1, \g<name>).
max_matches = 100optional1–500Cap on returned matches.
Try in playground →
post/dev-utils/v1/format1 credit

Pretty-print, minify or validate JSON / YAML / XML / SQL (string-level; file/data CONVERSION lives in the file-convert API).

ParameterAllowed / rangeDescription
inputrequiredThe document text.
typerequiredjson · yaml · xml · sqlDocument type.
op = prettyoptionalpretty · minify · validatepretty | minify | validate (sql: pretty/minify only — sqlparse is non-validating).
indent = 2optional1–8Indent width for pretty (json/yaml/xml).
sort_keys = falseoptionalSort object keys (json/yaml).
keyword_case = upperoptionalupper · lower · capitalizeSQL keyword casing (sql only).
Try in playground →
post/dev-utils/v1/convert1 credit

Convert structured data between JSON / YAML / CSV / XML at the string level (paste-in, ≤512KB). CSV↔JSON is tabular (array of flat objects). For file/Excel/multi-MB conversion use the file-convert API.

ParameterAllowed / rangeDescription
inputrequiredThe source document text.
fromrequiredjson · yaml · csv · xmlSource format.
torequiredjson · yaml · csv · xmlTarget format.
indent = 2optional0–8Indent width for json/yaml/xml output (0=compact).
sort_keys = falseoptionalSort object keys (json/yaml).
Try in playground →
post/dev-utils/v1/qr1 credit

Generate a QR code as SVG (text), base64-PNG (text data-URI), or terminal ASCII — all textual output, no binary asset. Up to QR version 40.

ParameterAllowed / rangeDescription
inputrequiredThe data to encode (URL, text, vCard, wifi string…).
kind = svgoptionalsvg · png_base64 · textOutput: svg (scalable vector text) · png_base64 (base64 + data-URI) · text (terminal ASCII art).
error_correction = moptionall · m · q · hRecovery level: l~7% · m~15% · q~25% · h~30%.
scale = 4optional1–20Module pixel size (png/svg).
border = 4optional0–16Quiet-zone width in modules (spec default 4).
Try in playground →
post/dev-utils/v1/color1 credit

Parse any CSS color (hex/rgb()/hsl()/name) → every format + CSS3 name + luminance; optional second color → WCAG 2.x contrast ratio + AA/AAA.

ParameterAllowed / rangeDescription
inputrequiredThe color: '#1a2b3c', '#abc', 'rgb(26,43,60)', 'hsl(210,40%,17%)' or a CSS3 name ('rebeccapurple').
contrast_withoptionalOptional second color — returns the WCAG contrast ratio + AA/AAA pass flags for normal/large text.
Try in playground →
post/dev-utils/v1/mock_data2 credits

Generate fake/test records (Faker, 70+ locales): preset bundles (person/address/company/internet/profile/product/lorem) or a custom field→type schema; seed for reproducible output.

ParameterAllowed / rangeDescription
presetoptionalperson · address · company · internet · profile · product · loremReady-made record shape (ignored when `schema` is given).
schemaoptionalCustom shape: {output_field: type}. Types: address, bool, catch_phrase, city, color_hex, color_name, company, company_email, country, country_code, credit_card_full, credit_card_number, currency_code, date, date_of_birth, domain, email, emoji, file_name, first_name, float, free_email, iban, int, ipv4, ipv6, iso8601, job, language_code, last_name, latitude, locale, longitude, mac, mime_type, name, paragraph, password, phone, sentence, slug, ssn, state, street, text, time, url, user_agent, username, uuid, word, zip.
count = 5optional1–100How many records.
locale = en_USoptionalFaker locale (en_US, tr_TR, de_DE, ja_JP…). Unknown locales fall back to en_US.
seedoptionalSeed for deterministic output (same seed+schema+locale +count+faker-version → same records).
Try in playground →
post/dev-utils/v1/text_diff1 credit

Unified diff between two texts + change stats + similarity ratio.

ParameterAllowed / rangeDescription
arequiredThe original text.
brequiredThe changed text.
context = 3optional0–20Context lines around each hunk.
label_a = aoptionalLabel for the original.
label_b = boptionalLabel for the changed text.
Try in playground →
post/dev-utils/v1/text_analyze2 credits

Algorithmic text analysis (no LLM): language detect (97 langs) · readability (Flesch & co) · profanity flag/censor · keyword extraction · full stats. Pick checks or get all.

ParameterAllowed / rangeDescription
inputrequiredThe text to analyze.
checksoptionalWhich analyses to run (default all): language, readability, profanity, keywords, stats.
top_keywords = 10optional1–50How many keywords to extract.
Try in playground →
post/dev-utils/v1/timestamp1 credit

Parse/convert any timestamp ('now', unix s/ms/µs, ISO-8601, RFC-2822) → every format + timezone conversion + relative time.

ParameterAllowed / rangeDescription
value = nowoptionalThe timestamp. 'now' (default), unix seconds (≤10 digits), unix ms (12-14), unix µs (15-17), ISO 8601, or RFC 2822.
tz = UTCoptionalIANA timezone for the local-time outputs.
Try in playground →
post/dev-utils/v1/case_convert1 credit

Convert identifier/text casing: camel·pascal·snake·kebab·constant·dot·title·sentence·upper·lower (+ detected input case).

ParameterAllowed / rangeDescription
inputrequiredThe text/identifier to convert.
targetrequiredcamel · pascal · snake · kebab · constant · dot · title · sentence · upper · lowerTarget case style.
Try in playground →
post/dev-utils/v1/base_convert1 credit

Convert integers between bases 2-36 (arbitrary precision; 0x/0b/0o prefixes accepted).

ParameterAllowed / rangeDescription
inputrequiredThe number (string). Prefixes 0x/0b/0o override from_base.
from_base = 10optional2–36Source base (ignored if input has a prefix).
to_base = 10optional2–36Target base.
Try in playground →
post/dev-utils/v1/markdown1 credit

Render CommonMark+tables markdown → sanitized HTML (raw HTML escaped, XSS-safe) + heading TOC with slugs.

ParameterAllowed / rangeDescription
inputrequiredThe markdown source.
Try in playground →
post/dev-utils/v1/user_agent1 credit

Parse a User-Agent string → browser/OS/device families + versions + bot flag (uap-core database).

ParameterAllowed / rangeDescription
inputrequiredThe User-Agent header value.
Try in playground →
post/dev-utils/v1/batch1 credit

Run up to 100 mixed dev-utils calls in one request.

ParameterAllowed / rangeDescription
itemsrequiredUp to 100 items, each {action, params}. Items run independently — a bad item yields its own error entry, never fails the batch.
Try in playground →