Api Endpoint

Slug Generator (Slugify)

Slug generator: turn arbitrary text into a URL-safe slug. Decomposes accents, transliterates German umlauts, Scandinavian and Turkish letters, the ligatures that lose meaning under plain NFD, and Cyrillic (Russian, Ukrainian, Belarusian, Bulgarian, Serbian, Macedonian; language from lang or inferred from the letters). Lowercases, collapses separators, truncates on a word boundary. Returns the slug plus what was removed.

Open interactive test console

Offering

Provider
api.duoleads.com
Method
GET
Offering type
Api Endpoint
Transport type
http
Category
General Utilities
Delivery
Not provided
Pricing model
Not provided
x402 version
2

Endpoint context

URL
https://api.duoleads.com/v1/text/slug
MIME type
application/json
First seen
2026-10-16T01:50:38.788Z
Last seen
Tags
slug, slugify, url-slug, unicode, Text

Payment pricing

x402 payment terms are the authoritative price for calling this endpoint.

Payment option 1
0.05 USDC
Atomic price: 50000 · Network: eip155:8453 · Asset: USDC · Scheme: exact
Raw x402 terms
[
  {
    "scheme": "exact",
    "network": "eip155:8453",
    "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
    "amount": "50000",
    "payTo": "0xCD673f7e1daD254347AEab6be0DEFe8b9C6b3A39"
  }
]

Observed health

Status
Healthy
Latest latency
307 ms
Average latency
734 ms
HTTP status
402
Last checked
Reachability
100% over 13 checks

Latency is measured to the first response headers. A reachable result does not verify response accuracy or merchant identity.

Input schema

{
  "type": "object",
  "properties": {
    "type": {
      "type": "string",
      "const": "http"
    },
    "method": {
      "type": "string",
      "enum": [
        "GET"
      ]
    },
    "queryParams": {
      "type": "object",
      "properties": {
        "text": {
          "type": "string",
          "description": "Text to slugify, at most 2048 characters.",
          "maxLength": 2048
        },
        "separator": {
          "type": "string",
          "description": "Separator: - (default), _, . or empty.",
          "enum": [
            "-",
            "_",
            ".",
            ""
          ],
          "maxLength": 64,
          "default": "-"
        },
        "max": {
          "type": "string",
          "description": "Maximum slug length 1-512, default 96. Truncates at the last complete word.",
          "pattern": "^[+-]?\\d+$",
          "maxLength": 64,
          "default": "96"
        },
        "case": {
          "type": "string",
          "description": "lower (default), preserve or upper.",
          "enum": [
            "lower",
            "preserve",
            "upper"
          ],
          "maxLength": 64,
          "default": "lower"
        },
        "lang": {
          "type": "string",
          "description": "ISO 639-1 code for locale-sensitive folding (de: ü->ue) and the Cyrillic table (ru, uk, be, bg, sr, mk). Default locale-neutral; for Cyrillic the language is then inferred from letters unique to Ukrainian, Belarusian, Serbian or Macedonian, else Russian BGN/PCGN letters with ISO 9 (accents folded) for the rest.",
          "maxLength": 16
        }
      },
      "required": [
        "text"
      ]
    }
  },
  "required": [
    "type",
    "method"
  ],
  "additionalProperties": false
}

Output schema

{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "properties": {
    "input": {
      "additionalProperties": false,
      "properties": {
        "method": {
          "enum": [
            "GET"
          ],
          "type": "string"
        },
        "queryParams": {
          "properties": {
            "case": {
              "default": "lower",
              "description": "lower (default), preserve or upper.",
              "enum": [
                "lower",
                "preserve",
                "upper"
              ],
              "maxLength": 64,
              "type": "string"
            },
            "lang": {
              "description": "ISO 639-1 code for locale-sensitive folding (de: ü->ue) and the Cyrillic table (ru, uk, be, bg, sr, mk). Default locale-neutral; for Cyrillic the language is then inferred from letters unique to Ukrainian, Belarusian, Serbian or Macedonian, else Russian BGN/PCGN letters with ISO 9 (accents folded) for the rest.",
              "maxLength": 16,
              "type": "string"
            },
            "max": {
              "default": "96",
              "description": "Maximum slug length 1-512, default 96. Truncates at the last complete word.",
              "maxLength": 64,
              "pattern": "^[+-]?\\d+$",
              "type": "string"
            },
            "separator": {
              "default": "-",
              "description": "Separator: - (default), _, . or empty.",
              "enum": [
                "-",
                "_",
                ".",
                ""
              ],
              "maxLength": 64,
              "type": "string"
            },
            "text": {
              "description": "Text to slugify, at most 2048 characters.",
              "maxLength": 2048,
              "type": "string"
            }
          },
          "required": [
            "text"
          ],
          "type": "object"
        },
        "type": {
          "const": "http",
          "type": "string"
        }
      },
      "required": [
        "type",
        "method"
      ],
      "type": "object"
    },
    "output": {
      "properties": {
        "example": {
          "properties": {
            "data": {
              "properties": {
                "length": {
                  "type": "integer"
                },
                "removed": {
                  "type": "string"
                },
                "slug": {
                  "type": "string"
                },
                "source_length": {
                  "type": "integer"
                },
                "transliterated": {
                  "items": {
                    "properties": {
                      "from": {
                        "type": "string"
                      },
                      "to": {
                        "type": "string"
                      }
                    },
                    "required": [
                      "from",
                      "to"
                    ],
                    "type": "object"
                  },
                  "type": "array"
                },
                "truncated": {
                  "type": "boolean"
                }
              },
              "required": [
                "slug",
                "length",
                "truncated",
                "source_length",
                "transliterated",
                "removed"
              ],
              "type": "object"
            },
            "meta": {
              "properties": {
                "computed_at": {
                  "description": "RFC 3339 UTC with milliseconds",
                  "type": "string"
                },
                "deterministic": {
                  "type": "boolean"
                },
                "disclaimer": {
                  "type": "string"
                },
                "price_usd": {
                  "type": "string"
                },
                "request_id": {
                  "type": "string"
                },
                "sources": {
                  "items": {
                    "required": [
                      "id",
                      "version",
                      "published"
                    ],
                    "type": "object"
                  },
                  "type": "array"
                }
              },
              "required": [
                "request_id",
                "computed_at",
                "price_usd",
                "deterministic",
                "disclaimer"
              ],
              "type": "object"
            },
            "ok": {
              "const": true
            },
            "route": {
              "const": "/v1/text/slug"
            },
            "version": {
              "type": "string"
            }
          },
          "required": [
            "ok",
            "route",
            "version",
            "data",
            "meta"
          ],
          "type": "object"
        },
        "type": {
          "type": "string"
        }
      },
      "required": [
        "type"
      ],
      "type": "object"
    }
  },
  "required": [
    "input"
  ],
  "type": "object"
}