Looking for the overview — what this API returns, what it costs, and a call you can run without a key? See the Developer Utilities API page →
Developer Tools

Developer Utilities API & Scraper

The Developer Utilities API returns 20+ deterministic developer and AI-agent tools as clean JSON.

21 actionsLive JSON1,000 free credits$0.67–$1.50 / 1,000 creditsMCP-ready
Get a free keyOpen in playground

🤖 Using an AI assistant? Copy this link into ChatGPT / Claude / Cursor — it reads every endpoint and parameter instantly and tells you if this API fits your use case.

The primary hash endpoint returns a value's hash across algorithms (hex, base64, base64url, bit length, HMAC), and the set covers UUIDs, encoding, JWT decode, password generation, cron parsing, slugify, regex testing, formatting and conversion. It is built for developer tools and AI agents that need one reliable endpoint for common utility operations without pulling in a dozen libraries. One ReefAPI key, one shared credit pool, the standard envelope.

Reference

Every action and the vocabulary it accepts

These are local computations, not fetches — a measured hash call returned in 2.2 ms and nothing leaves for a third-party site. What people actually need before writing a call is the exact list of values each action recognizes, so here it is.

ActionAccepted valuesWorth knowing
hashmd5 · sha1 · sha224 · sha256 (default) · sha384 · sha512 · sha3-256 · sha3-512 · blake2b · blake2s · crc32 · adler32hmac_key switches to a keyed HMAC digest; not valid for crc32/adler32
uuidv4 · v7 · v1 · v3 · v5 · ulid · nanoidup to 100 per call; v3/v5 are deterministic and always return exactly 1
encodebase64 · base64url · hex · url · url-component · url-form · html · unicode-escape · json-stringdirection is encode or decode; url-component matches JS encodeURIComponent, url-form uses + for spaces
formatJSON · YAML · XML · SQLpretty-print, minify or validate — string level, not files
convertJSON · YAML · CSV · XMLstring level, 512 KB ceiling
case_convertcamel · pascal · snake · kebab · constant · dot · title · sentence · upper · lowerreports the input casing it detected as well as converting
base_convertany base 2–360x, 0b and 0o prefixes are detected, so from_base is optional
colorhex · rgb() · hsl() · CSS3 color namereturns every other format plus luminance and the nearest named color
qrSVG · base64-PNG data URI · terminal ASCIIall textual output — nothing binary to handle
text_analyze97 languages detectedreadability scores and profanity flags, algorithmic, no model involved
mock_data70+ Faker localespreset bundles or a field-by-field schema
batchup to 100 mixed callsany combination of the actions above in one request

Parameter names differ per action and most carry aliases, so hash accepts input, text, value or data for the same thing. When a name is wrong the response is an explicit MISSING_PARAM naming the parameter it wanted — passing user_agent to the user_agent action returns 'missing: input', because the payload parameter there is input.

Live example

Real request and response JSON

Captured from the indexed primary action, hash, on .

Captured request
{
  "method": "POST",
  "url": "https://api.reefapi.com/dev-utils/v1/hash",
  "headers": {
    "x-api-key": "$REEF_KEY",
    "content-type": "application/json"
  },
  "body": {
    "input": "hello world",
    "algo": "sha256"
  }
}
Captured response
{
  "ok": true,
  "meta": {
    "api": "dev-utils",
    "endpoint": "hash",
    "mode": "live",
    "latency_ms": 56.1,
    "record_count": 1,
    "bytes": 0,
    "cache_hit": false,
    "algo": "sha256"
  },
  "data": {
    "algo": "sha256",
    "hex": "b94d27b9934d3e08a52e52d7da7dabfac484efe37a5380ee9088f7ace2efcde9",
    "base64": "uU0nuZNNPgilLlLX2n2r+sSE7+N6U4DukIj3rOLvzek=",
    "base64url": "uU0nuZNNPgilLlLX2n2r-sSE7-N6U4DukIj3rOLvzek",
    "length_bits": 256,
    "hmac": false,
    "input_bytes": 11
  }
}
Actions

What the Developer Utilities API does

ActionDescriptionConcrete use caseKey params
hashHash/checksum text or binary (base64/hex) input: md5…sha3·blake2·crc32·adler32, optional HMAC keying → hex + base64 digests.Platform and DevOps teams call hash to get hash/checksum text or binary (base64/hex) input.input, algo, hmac_key, input_encoding
uuidGenerate ids: uuid v4/v7/v1(MAC-safe)/v3/v5, ULID, nanoid — up to 100.Security and supply-chain teams call uuid to generate ids.version, count, namespace, name, size
encodeEncode/decode: base64(+url-safe), hex, URL (path/component/form), HTML entities, unicode-escape, json-string.Developer-tool builders call encode to get encode/decode.input, op, direction
jwt_decodeDecode 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.AI-agent developers call jwt_decode to get decode a JWT WITHOUT needing the key (header+payload+claims analysis); optionally verify the….token, verify_key
passwordGenerate cryptographically-secure passwords (charset controls, ambiguity filter) + entropy strength score; or score a provided password with `check`.Platform and DevOps teams call password to generate cryptographically-secure passwords (charset controls, ambiguity filter) + entropy st….length, count, lowercase, uppercase, digits, ...
cronExplain a cron expression in plain language (15 locales) + compute the next N run times in any IANA timezone (DST-correct).Security and supply-chain teams call cron to get explain a cron expression in plain language (15 locales) + compute the next N run times in an….expression, runs, tz, locale, from_time
slugifyURL-safe slug from any-script text (CJK/Cyrillic/Arabic → ASCII via anyascii transliteration).Developer-tool builders call slugify to get uRL-safe slug from any-script text (CJK/Cyrillic/Arabic → ASCII via anyascii transliteration)..input, separator, lowercase, max_length
regex_testTest a regex against text: matches + groups + named groups, optional replace. User patterns run with a hard 1s timeout (ReDoS-guarded) + size caps.AI-agent developers call regex_test to get test a regex against text.pattern, input, flags, replacement, max_matches
formatPretty-print, minify or validate JSON / YAML / XML / SQL (string-level; file/data CONVERSION lives in the file-convert API).Platform and DevOps teams call format to get pretty-print, minify or validate JSON / YAML / XML / SQL (string-level; file/data CONVERSION….input, type, op, indent, sort_keys, ...
convertConvert 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.Security and supply-chain teams call convert to convert structured data between JSON / YAML / CSV / XML at the string level (paste-in, ≤512KB).input, from, to, indent, sort_keys
qrGenerate 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.Developer-tool builders call qr to generate a QR code as SVG (text), base64-PNG (text data-URI), or terminal ASCII.input, kind, error_correction, scale, border
colorParse any CSS color (hex/rgb()/hsl()/name) → every format + CSS3 name + luminance; optional second color → WCAG 2.x contrast ratio + AA/AAA.AI-agent developers call color to parse any CSS color (hex/rgb()/hsl()/name) → every format + CSS3 name + luminance; optional s….input, contrast_with
mock_dataGenerate 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.Platform and DevOps teams call mock_data to generate fake/test records (Faker, 70+ locales).preset, schema, count, locale, seed
text_diffUnified diff between two texts + change stats + similarity ratio.Security and supply-chain teams call text_diff to get unified diff between two texts + change stats + similarity ratio..a, b, context, label_a, label_b
text_analyzeAlgorithmic text analysis (no LLM): language detect (97 langs) · readability (Flesch & co) · profanity flag/censor · keyword extraction · full stats. Pick checks or get all.Developer-tool builders call text_analyze to get algorithmic text analysis (no LLM).input, checks, top_keywords
timestampParse/convert any timestamp ('now', unix s/ms/µs, ISO-8601, RFC-2822) → every format + timezone conversion + relative time.AI-agent developers call timestamp to get parse/convert any timestamp ('now', unix s/ms/µs, ISO-8601, RFC-2822) → every format + timezo….value, tz
case_convertConvert identifier/text casing: camel·pascal·snake·kebab·constant·dot·title·sentence·upper·lower (+ detected input case).Platform and DevOps teams call case_convert to convert identifier/text casing.input, target
base_convertConvert integers between bases 2-36 (arbitrary precision; 0x/0b/0o prefixes accepted).Security and supply-chain teams call base_convert to convert integers between bases 2-36 (arbitrary precision; 0x/0b/0o prefixes accepted)..input, from_base, to_base
markdownRender CommonMark+tables markdown → sanitized HTML (raw HTML escaped, XSS-safe) + heading TOC with slugs.Developer-tool builders call markdown to render CommonMark+tables markdown → sanitized HTML (raw HTML escaped, XSS-safe) + heading TOC….input
user_agentParse a User-Agent string → browser/OS/device families + versions + bot flag (uap-core database).AI-agent developers call user_agent to parse a User-Agent string → browser/OS/device families + versions + bot flag (uap-core databa….input
batchRun up to 100 mixed dev-utils calls in one request.Platform and DevOps teams call batch to get run up to 100 mixed dev-utils calls in one request..items
Code samples

Call hash from your stack

curl -X POST https://api.reefapi.com/dev-utils/v1/hash \
  -H "x-api-key: $REEF_KEY" \
  -H "content-type: application/json" \
  -d '{"input":"hello world","algo":"sha256"}'
MCP one-liner
Ask your MCP-connected assistant: call reefapi.dev-utils.hash with {"input":"hello world","algo":"sha256"}.
Use cases

Who uses this API and why

  • AI agents call these deterministic tools (hash, uuid, jwt_decode, cron) instead of guessing the result.
  • Developer tools use encode, convert and format to normalize data inside a workflow.
  • Automation pipelines use slugify, regex_test and password to handle common string operations reliably.
FAQ

Questions developers ask before integrating

Can jwt_decode read a token without the signing key?

Yes, that is the point — header and payload are base64url, not encrypted. A measured decode of the standard HS256 sample returned header {alg: HS256, typ: JWT}, the payload, and claims with iat expanded to both unix 1516239022 and ISO-8601 2018-01-18T01:30:22+00:00. Note what signature_valid is in that case: null, not false. null means the signature was never checked; false would mean it was checked and failed. The response also carries trust: 'unverified' and an explicit warning string so an unverified decode cannot be mistaken for an authenticated one in a log.

Does this API sign or issue JWTs?

No. jwt_decode is decode-and-optionally-verify only. Pass verify_key with the HMAC secret for HS* or a PEM public key for RS*/ES*/PS* and the algorithm is taken from the token header against a whitelist — alg=none always fails verification rather than trivially passing, which is the classic JWT vulnerability. There is no signing action, deliberately: a signing key should never travel to somebody else's API.

What is the difference between UUID v4, v7 and ULID here?

v4 is pure random and sorts arbitrarily, which fragments a database index. v7 and ULID both embed a millisecond timestamp so ids generated close together sort close together; the response flags this as time_ordered: true. A measured batch of three v7 ids came back as 01a04005-30ca-74ca-…, 01a04005-30ca-72fa-… and 01a04005-30ca-72da-… — the shared leading segment is the timestamp. v1 is also timestamped but uses a random multicast node id, so the host MAC address never leaks into your ids. v3 and v5 are deterministic: same namespace plus name always yields the same UUID, so count is fixed at 1.

What does slugify do with Turkish, Chinese or Cyrillic text?

It transliterates to ASCII rather than dropping the characters. A measured call on 'Ürün Değerlendirmesi 2026 — 東京' returned slug 'urun-degerlendirmesi-2026-dongjing', and the response also exposes the intermediate transliterated form 'Urun Degerlendirmesi 2026 - DongJing' so you can see what happened. Turkish diacritics fold to their base letters, the em dash becomes a hyphen, and CJK is romanized. If a slug looks wrong, read transliterated first — the problem is almost always in that step, not the slug step.

Are cron next-run times timezone-correct?

Yes, and the offsets are in the output rather than implied. A measured call on '0 9 * * 1-5' with timezone Europe/Istanbul returned the description 'At 09:00, Monday through Friday', a fields breakdown of each of the five positions, and next_runs as fully-offset timestamps: 2026-08-27T09:00:00+03:00, 2026-08-28T09:00:00+03:00, then 2026-08-31 — correctly skipping the weekend. Any IANA zone name works, and the explanation is available in 15 locales.

Why does a crc32 hash return different fields than sha256?

Because a checksum and a cryptographic digest are different objects. A measured crc32 of 'hello world' returned hex '0d4a1185', decimal 222957957, base64 'DUoRhQ==', hmac false and input_bytes 11 — decimal is there because CRC values are conventionally compared as integers. The SHA and BLAKE families instead return length_bits and no decimal. Read the algo field before you index into the response, and never treat crc32 or adler32 as security primitives; they detect accidental corruption, not tampering.

How do I convert a number between bases without knowing the input base?

Pass the prefix. A measured base_convert of '0xFF' to base 2 returned output '11111111' and reported from_base 16, which it detected from the 0x — 0b and 0o work the same way. The response is not just the requested base either: it returns decimal '255', binary, octal and hex together plus bits: 8. Values are arbitrary precision, so a 300-digit integer converts without overflow, and decimal comes back as a string for that reason.

Can I tell a crawler apart from a real browser with user_agent?

Yes — the parse runs against the uap-core database and sets is_bot. A measured parse of Googlebot's own string returned browser {family: 'Googlebot', version: '2.1'}, device {family: 'Spider', brand: 'Spider', model: 'Desktop'}, os.family 'Other' with a null version, and is_bot true. The 'Other' os family is normal for crawlers rather than a parse failure — a bot string usually declares no operating system, so treat null version fields as absent data, not an error.

What is the Developer Utilities API?

Developer Utilities API is a ReefAPI endpoint group for developer utilities It returns live JSON through POST requests under /dev-utils/v1.

Is the Developer Utilities API free to try?

Yes. ReefAPI starts with 1,000 free credits, no card required. Developer Utilities calls use the same shared credit balance as every other ReefAPI engine.

Do I need a Developer Utilities login or account?

No login to Developer Utilities is needed for the API response. You call ReefAPI with your x-api-key header, and the playground can run live examples before you create a production key.

How fresh is the Developer Utilities data?

The page example is captured from a live hash call, and production requests fetch live data through ReefAPI rather than a static sample.

How many credits does the Developer Utilities API use?

Developer Utilities actions currently cost 1-2 credits per successful call. Failed or blocked calls are free, and all APIs draw from one credit pool.

Can I call Developer Utilities from an AI assistant or MCP client?

Yes. Connect ReefAPI once through MCP and your assistant can call dev-utils actions with the same key, credit pool and JSON envelope used by normal REST requests.

docs / dev-utils

Developer Utilities

Developer Utilities

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 →