Developer Utilities API
Developer Utilities API
/dev-utils/v1/hash1 creditHash/checksum text or binary (base64/hex) input: md5…sha3·blake2·crc32·adler32, optional HMAC keying → hex + base64 digests.
| Parameter | Allowed / range | Description | |
|---|---|---|---|
| input | required | — | The data to hash. Plain text by default; set input_encoding=base64|hex to hash binary data. |
| algo = sha256 | optional | md5 · sha1 · sha224 · sha256 · sha384 · sha512 · sha3-256 · sha3-512 · blake2b · blake2s · crc32 · adler32 | Hash/checksum algorithm. |
| hmac_key | optional | — | Optional HMAC key — returns the keyed HMAC digest instead of the plain hash (not valid for crc32/adler32). |
| input_encoding = text | optional | text · base64 · hex | How to interpret `input`: utf-8 text, or base64/hex-encoded binary. |
/dev-utils/v1/uuid1 creditGenerate ids: uuid v4/v7/v1(MAC-safe)/v3/v5, ULID, nanoid — up to 100.
| Parameter | Allowed / range | Description | |
|---|---|---|---|
| version = v4 | optional | v4 · v7 · v1 · v3 · v5 · ulid · nanoid | Id 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 = 1 | optional | 1–100 | How many ids to generate (v3/v5 always 1 — deterministic). |
| namespace | optional | — | v3/v5 namespace: dns|url|oid|x500 or a custom UUID. |
| name | optional | — | v3/v5 name to hash into the namespace. |
| size = 21 | optional | 8–64 | nanoid length (nanoid only). |
/dev-utils/v1/encode1 creditEncode/decode: base64(+url-safe), hex, URL (path/component/form), HTML entities, unicode-escape, json-string.
| Parameter | Allowed / range | Description | |
|---|---|---|---|
| input | required | — | The string to encode or decode. |
| op | required | base64 · base64url · hex · url · url-component · url-form · html · unicode-escape · json-string | Codec. url=path-safe quote · url-component=encode everything (JS encodeURIComponent) · url-form=+ for spaces · html=entities · json-string=JSON string-literal escaping. |
| direction = encode | optional | encode · decode | encode (default) or decode. |
/dev-utils/v1/jwt_decode1 creditDecode 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.
| Parameter | Allowed / range | Description | |
|---|---|---|---|
| token | required | — | The JWT to decode. |
| verify_key | optional | — | Optional 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). |
/dev-utils/v1/password1 creditGenerate cryptographically-secure passwords (charset controls, ambiguity filter) + entropy strength score; or score a provided password with `check`.
| Parameter | Allowed / range | Description | |
|---|---|---|---|
| length = 16 | optional | 4–128 | Password length. |
| count = 1 | optional | 1–50 | How many passwords. |
| lowercase = true | optional | — | Include a-z. |
| uppercase = true | optional | — | Include A-Z. |
| digits = true | optional | — | Include 0-9. |
| symbols = true | optional | — | Include symbols (!@#$%^&*()-_=+[]{};:,.<>?/~). |
| exclude_ambiguous = false | optional | — | Drop look-alikes (Il1O0o`'"|). |
| check | optional | — | Score THIS password instead of generating (entropy heuristic; the password is not stored or logged). |
/dev-utils/v1/cron1 creditExplain a cron expression in plain language (15 locales) + compute the next N run times in any IANA timezone (DST-correct).
| Parameter | Allowed / range | Description | |
|---|---|---|---|
| expression | required | — | 5-field cron (min hour dom month dow), @aliases (@daily, @hourly…), or 6-field with seconds first. |
| runs = 5 | optional | 1–50 | How many upcoming run times to return. |
| tz = UTC | optional | — | IANA timezone for the run times (DST handled). |
| locale = en | optional | en · de · es · fr · it · nl · pl · pt · ro · ru · tr · uk · ja · ko · zh | Language of the human explanation. |
| from_time | optional | — | Compute runs after this ISO-8601 instant (default now). Pin it for reproducible output. |
/dev-utils/v1/slugify1 creditURL-safe slug from any-script text (CJK/Cyrillic/Arabic → ASCII via anyascii transliteration).
| Parameter | Allowed / range | Description | |
|---|---|---|---|
| input | required | — | Text to slugify. |
| separator = - | optional | — | Word separator (default '-'). |
| lowercase = true | optional | — | Lowercase the slug (default true). |
| max_length = 0 | optional | 0–500 | Truncate at a word boundary (0 = no limit). |
/dev-utils/v1/regex_test1 creditTest a regex against text: matches + groups + named groups, optional replace. User patterns run with a hard 1s timeout (ReDoS-guarded) + size caps.
| Parameter | Allowed / range | Description | |
|---|---|---|---|
| pattern | required | — | The regular expression (≤2000 chars; Python `regex` syntax — PCRE-compatible incl. \p{...}). |
| input | required | — | The subject text to scan. |
| flags | optional | — | Flag letters, any of: i (ignorecase), m (multiline), s (dotall), x (verbose). E.g. 'im'. |
| replacement | optional | — | Optional replacement template — when set, `replaced` holds the substituted text (backrefs \1, \g<name>). |
| max_matches = 100 | optional | 1–500 | Cap on returned matches. |
/dev-utils/v1/format1 creditPretty-print, minify or validate JSON / YAML / XML / SQL (string-level; file/data CONVERSION lives in the file-convert API).
| Parameter | Allowed / range | Description | |
|---|---|---|---|
| input | required | — | The document text. |
| type | required | json · yaml · xml · sql | Document type. |
| op = pretty | optional | pretty · minify · validate | pretty | minify | validate (sql: pretty/minify only — sqlparse is non-validating). |
| indent = 2 | optional | 1–8 | Indent width for pretty (json/yaml/xml). |
| sort_keys = false | optional | — | Sort object keys (json/yaml). |
| keyword_case = upper | optional | upper · lower · capitalize | SQL keyword casing (sql only). |
/dev-utils/v1/convert1 creditConvert 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.
| Parameter | Allowed / range | Description | |
|---|---|---|---|
| input | required | — | The source document text. |
| from | required | json · yaml · csv · xml | Source format. |
| to | required | json · yaml · csv · xml | Target format. |
| indent = 2 | optional | 0–8 | Indent width for json/yaml/xml output (0=compact). |
| sort_keys = false | optional | — | Sort object keys (json/yaml). |
/dev-utils/v1/qr1 creditGenerate 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.
| Parameter | Allowed / range | Description | |
|---|---|---|---|
| input | required | — | The data to encode (URL, text, vCard, wifi string…). |
| kind = svg | optional | svg · png_base64 · text | Output: svg (scalable vector text) · png_base64 (base64 + data-URI) · text (terminal ASCII art). |
| error_correction = m | optional | l · m · q · h | Recovery level: l~7% · m~15% · q~25% · h~30%. |
| scale = 4 | optional | 1–20 | Module pixel size (png/svg). |
| border = 4 | optional | 0–16 | Quiet-zone width in modules (spec default 4). |
/dev-utils/v1/color1 creditParse any CSS color (hex/rgb()/hsl()/name) → every format + CSS3 name + luminance; optional second color → WCAG 2.x contrast ratio + AA/AAA.
| Parameter | Allowed / range | Description | |
|---|---|---|---|
| input | required | — | The color: '#1a2b3c', '#abc', 'rgb(26,43,60)', 'hsl(210,40%,17%)' or a CSS3 name ('rebeccapurple'). |
| contrast_with | optional | — | Optional second color — returns the WCAG contrast ratio + AA/AAA pass flags for normal/large text. |
/dev-utils/v1/mock_data2 creditsGenerate 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.
| Parameter | Allowed / range | Description | |
|---|---|---|---|
| preset | optional | person · address · company · internet · profile · product · lorem | Ready-made record shape (ignored when `schema` is given). |
| schema | optional | — | Custom 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 = 5 | optional | 1–100 | How many records. |
| locale = en_US | optional | — | Faker locale (en_US, tr_TR, de_DE, ja_JP…). Unknown locales fall back to en_US. |
| seed | optional | — | Seed for deterministic output (same seed+schema+locale +count+faker-version → same records). |
/dev-utils/v1/text_diff1 creditUnified diff between two texts + change stats + similarity ratio.
| Parameter | Allowed / range | Description | |
|---|---|---|---|
| a | required | — | The original text. |
| b | required | — | The changed text. |
| context = 3 | optional | 0–20 | Context lines around each hunk. |
| label_a = a | optional | — | Label for the original. |
| label_b = b | optional | — | Label for the changed text. |
/dev-utils/v1/text_analyze2 creditsAlgorithmic text analysis (no LLM): language detect (97 langs) · readability (Flesch & co) · profanity flag/censor · keyword extraction · full stats. Pick checks or get all.
| Parameter | Allowed / range | Description | |
|---|---|---|---|
| input | required | — | The text to analyze. |
| checks | optional | — | Which analyses to run (default all): language, readability, profanity, keywords, stats. |
| top_keywords = 10 | optional | 1–50 | How many keywords to extract. |
/dev-utils/v1/timestamp1 creditParse/convert any timestamp ('now', unix s/ms/µs, ISO-8601, RFC-2822) → every format + timezone conversion + relative time.
| Parameter | Allowed / range | Description | |
|---|---|---|---|
| value = now | optional | — | The timestamp. 'now' (default), unix seconds (≤10 digits), unix ms (12-14), unix µs (15-17), ISO 8601, or RFC 2822. |
| tz = UTC | optional | — | IANA timezone for the local-time outputs. |
/dev-utils/v1/case_convert1 creditConvert identifier/text casing: camel·pascal·snake·kebab·constant·dot·title·sentence·upper·lower (+ detected input case).
| Parameter | Allowed / range | Description | |
|---|---|---|---|
| input | required | — | The text/identifier to convert. |
| target | required | camel · pascal · snake · kebab · constant · dot · title · sentence · upper · lower | Target case style. |
/dev-utils/v1/base_convert1 creditConvert integers between bases 2-36 (arbitrary precision; 0x/0b/0o prefixes accepted).
| Parameter | Allowed / range | Description | |
|---|---|---|---|
| input | required | — | The number (string). Prefixes 0x/0b/0o override from_base. |
| from_base = 10 | optional | 2–36 | Source base (ignored if input has a prefix). |
| to_base = 10 | optional | 2–36 | Target base. |
/dev-utils/v1/markdown1 creditRender CommonMark+tables markdown → sanitized HTML (raw HTML escaped, XSS-safe) + heading TOC with slugs.
| Parameter | Allowed / range | Description | |
|---|---|---|---|
| input | required | — | The markdown source. |
/dev-utils/v1/user_agent1 creditParse a User-Agent string → browser/OS/device families + versions + bot flag (uap-core database).
| Parameter | Allowed / range | Description | |
|---|---|---|---|
| input | required | — | The User-Agent header value. |
/dev-utils/v1/batch1 creditRun up to 100 mixed dev-utils calls in one request.
| Parameter | Allowed / range | Description | |
|---|---|---|---|
| items | required | — | Up to 100 items, each {action, params}. Items run independently — a bad item yields its own error entry, never fails the batch. |
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"}'{
"ok": true,
"data": { /* the result */ },
"meta": {
"latency_ms": 240,
"record_count": 12,
"completeness_pct": 100
},
"error": null
}