Attest tools · Developer utilities: cron, regex, UUID, slug and JSON

Generate a URL slug

Turn a page title with accents into an ASCII URL slug.

0 credits per successful call

Input JSON

{
  "operation": "slugify",
  "text": "Café tools & tips"
}

Captured output JSON

{
  "operation": "slugify",
  "slug": "cafe-tools-tips",
  "unicode_slug": "café-tools-tips",
  "separator": "-",
  "max_length": 80,
  "length": 15,
  "truncated": false,
  "source_length": 17,
  "non_latin_scripts": [],
  "limits": {
    "max_text_length": 10000,
    "max_slug_length": 1000
  },
  "source": "Unicode normalisation from this runtime's ICU (Unicode 16.0), plus the transliteration map in lib/dev_utils-slug.mjs.",
  "notes": [
    "Accents are folded with Unicode NFKD (é to e, ½ to 1-2); letters with no decomposition (ß, æ, ø, đ, þ, ł) use a small built-in map. Symbols are removed rather than spelled out, so \"Tom & Jerry\" becomes tom-jerry, not tom-and-jerry."
  ],
  "notice": "General information only, computed from the caller's own input. Nothing sent here is stored.",
  "checked_at": "2026-10-20T20:47:47.507Z"
}

API call

curl -s -X POST https://getattest.com.au/api/v1/dev \
  -H "authorization: Bearer $ATTEST_API_KEY" \
  -H "content-type: application/json" \
  --data-raw '{"operation":"slugify","text":"Café tools & tips"}'

Run this call with your own bearer key. Issue an API key.

About this example

The input was validated and run locally through the registered service. The output above is a display preview of the captured service result. File bytes are described instead of printed, and strings longer than 400 characters are truncated; the HTTP API also adds call_id, credits_charged and credits_remaining. Timestamps and generated identifiers will vary.

Source: apps/api/svc/dev_utils.mjs

Tool reference and limits · API key guide