Api Endpoint

Unicode Normalization

Unicode normalization and confusables check: apply NFC, NFD, NFKC or NFKD, report which forms a string is already in, list the scripts present (all Unicode scripts), and flag confusable and homoglyph characters — Cyrillic а in a Latin word, fullwidth or mathematical look-alikes, all-look-alike words — plus zero-width joiners, bidirectional overrides, invisible and blank characters. Returns per-character detail with code points, names and the ASCII character each imitates.

Open interactive test console

Offering

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

Endpoint context

URL
https://api.duoleads.com/v1/text/unicode
MIME type
application/json
First seen
2026-10-16T01:50:38.788Z
Last seen
Tags
unicode, unicode-normalization, nfc, Security, 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
294 ms
Average latency
352 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 analyse, at most 1024 characters.",
          "maxLength": 1024
        },
        "form": {
          "type": "string",
          "description": "Normalisation form to apply, default nfc.",
          "enum": [
            "nfc",
            "nfd",
            "nfkc",
            "nfkd"
          ],
          "maxLength": 64,
          "default": "nfc"
        },
        "detail": {
          "type": "string",
          "description": "summary (default) or full per-code-point detail (capped at 256 entries).",
          "enum": [
            "summary",
            "full"
          ],
          "maxLength": 64,
          "default": "summary"
        }
      },
      "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": {
            "detail": {
              "default": "summary",
              "description": "summary (default) or full per-code-point detail (capped at 256 entries).",
              "enum": [
                "summary",
                "full"
              ],
              "maxLength": 64,
              "type": "string"
            },
            "form": {
              "default": "nfc",
              "description": "Normalisation form to apply, default nfc.",
              "enum": [
                "nfc",
                "nfd",
                "nfkc",
                "nfkd"
              ],
              "maxLength": 64,
              "type": "string"
            },
            "text": {
              "description": "Text to analyse, at most 1024 characters.",
              "maxLength": 1024,
              "type": "string"
            }
          },
          "required": [
            "text"
          ],
          "type": "object"
        },
        "type": {
          "const": "http",
          "type": "string"
        }
      },
      "required": [
        "type",
        "method"
      ],
      "type": "object"
    },
    "output": {
      "properties": {
        "example": {
          "properties": {
            "data": {
              "properties": {
                "already_normalised": {
                  "properties": {
                    "nfc": {
                      "type": "boolean"
                    },
                    "nfd": {
                      "type": "boolean"
                    },
                    "nfkc": {
                      "type": "boolean"
                    },
                    "nfkd": {
                      "type": "boolean"
                    }
                  },
                  "required": [
                    "nfc",
                    "nfd",
                    "nfkc",
                    "nfkd"
                  ],
                  "type": "object"
                },
                "ascii_safe": {
                  "type": "boolean"
                },
                "characters": {
                  "items": {
                    "properties": {
                      "category": {
                        "type": "string"
                      },
                      "char": {
                        "type": "string"
                      },
                      "code_point": {
                        "type": "string"
                      },
                      "index": {
                        "type": "integer"
                      },
                      "name": {
                        "type": [
                          "string",
                          "null"
                        ]
                      },
                      "script": {
                        "type": [
                          "string",
                          "null"
                        ]
                      }
                    },
                    "required": [
                      "index",
                      "char",
                      "code_point",
                      "name",
                      "category",
                      "script"
                    ],
                    "type": "object"
                  },
                  "type": "array"
                },
                "characters_truncated": {
                  "type": "boolean"
                },
                "form": {
                  "type": "string"
                },
                "lengths": {
                  "properties": {
                    "code_points": {
                      "type": "integer"
                    },
                    "graphemes": {
                      "type": "integer"
                    },
                    "utf16_units": {
                      "type": "integer"
                    },
                    "utf8_bytes": {
                      "type": "integer"
                    }
                  },
                  "required": [
                    "code_points",
                    "graphemes",
                    "utf8_bytes",
                    "utf16_units"
                  ],
                  "type": "object"
                },
                "mixed_script": {
                  "type": "boolean"
                },
                "normalised": {
                  "type": "string"
                },
                "scripts": {
                  "items": {
                    "type": "string"
                  },
                  "type": "array"
                },
                "suspicious": {
                  "items": {
                    "properties": {
                      "category": {
                        "type": "string"
                      },
                      "char": {
                        "type": "string"
                      },
                      "code_point": {
                        "type": "string"
                      },
                      "index": {
                        "type": "integer"
                      },
                      "kind": {
                        "type": "string"
                      },
                      "looks_like": {
                        "type": [
                          "string",
                          "null"
                        ]
                      },
                      "name": {
                        "type": [
                          "string",
                          "null"
                        ]
                      }
                    },
                    "required": [
                      "index",
                      "char",
                      "code_point",
                      "name",
                      "category",
                      "kind",
                      "looks_like"
                    ],
                    "type": "object"
                  },
                  "type": "array"
                }
              },
              "required": [
                "normalised",
                "form",
                "already_normalised",
                "lengths",
                "scripts",
                "mixed_script",
                "suspicious",
                "ascii_safe"
              ],
              "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/unicode"
            },
            "version": {
              "type": "string"
            }
          },
          "required": [
            "ok",
            "route",
            "version",
            "data",
            "meta"
          ],
          "type": "object"
        },
        "type": {
          "type": "string"
        }
      },
      "required": [
        "type"
      ],
      "type": "object"
    }
  },
  "required": [
    "input"
  ],
  "type": "object"
}