Developer Tools

Developer Utilities API API

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

21 actionsLive JSON1,000 free 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.

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 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.Ops 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.Developer tools 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.Validation workflows 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.Data-quality teams 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`.Ops 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).Developer tools 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).Validation workflows 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.Data-quality teams 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).Ops 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.Developer tools 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.Validation workflows 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.Data-quality teams 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.Ops 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.Developer tools 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.Validation workflows 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.Data-quality teams 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).Ops 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).Developer tools 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.Validation workflows 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).Data-quality teams 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.Ops 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

What is the Developer Utilities API API?

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

Is the Developer Utilities API API free to try?

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

Do I need a Developer Utilities API login or account?

No login to Developer Utilities API 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 API 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 API use?

Developer Utilities API 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 API 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.

Is the Developer Utilities API API a Developer Utilities API scraper?

It is the managed alternative to a DIY Developer Utilities API scraper. Instead of building and maintaining your own scraper — proxies, headless browsers, captcha and constant breakage — you call one ReefAPI endpoint and get the same developer utilities api back as clean JSON.

Why does my Developer Utilities API scraper keep getting blocked?

Most Developer Utilities API scrapers break on anti-bot defenses, rate limits and IP bans that need rotating residential proxies and browser fingerprinting to clear. ReefAPI handles all of that for you — no proxies, no captchas, no maintenance — and returns live JSON. Blocked or failed calls are free.

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 →