---
title: "Use this when you need strong passwords with Web Crypto randomness: mode=\"random\" builds character-set passwords (length plus uppercase/lowercase/numbers/symbols toggles); mode=\"memorable\" builds word passphrases (words, separator, addNumber, addSymbol)."
method: POST
path: "/v1/generate_password"
tags: ["random"]
---

# Use this when you need strong passwords with Web Crypto randomness: mode="random" builds character-set passwords (length plus uppercase/lowercase/numbers/symbols toggles); mode="memorable" builds word passphrases (words, separator, addNumber, addSymbol).

`POST /v1/generate_password`

## Request

- Base URL: `https://api.clean.tools`
- URL: `https://api.clean.tools/v1/generate_password`
- Auth: none declared

Use this when you need strong passwords with Web Crypto randomness: mode="random" builds character-set passwords (length plus uppercase/lowercase/numbers/symbols toggles); mode="memorable" builds word passphrases (words, separator, addNumber, addSymbol). Cryptographically random via Web Crypto (NOT deterministic). For test/dev fixtures — for real credentials prefer the client-side web tool at clean.tools/password-generator/ so the password never crosses the network. Example: {mode: "random", length: 16} -> mode "random", length 16, count 1, passwords ["NXqtsn6MrsfG9d2i"].

## Request body

- object
  - `mode` 'random' | 'memorable': Password style (default random).
  - `count` integer: How many passwords (default 1).
  - `length` integer: [random] Character length (default 16).
  - `uppercase` boolean: [random] Include A-Z (default true).
  - `lowercase` boolean: [random] Include a-z (default true).
  - `numbers` boolean: [random] Include 0-9 (default true).
  - `symbols` boolean: [random] Include symbols (default false).
  - `words` integer: [memorable] Number of words (default 4).
  - `separator` string: [memorable] Word separator (default "-").
  - `addNumber` boolean: [memorable] Insert a random number (default true).
  - `addSymbol` boolean: [memorable] Insert a random symbol (default false).

## Response `200`

Structured tool result.

- object
  - `tool` string
  - `result` object
    - `mode` 'random' | 'memorable', required: Which generator produced the passwords.
    - `count` integer, required: Number of passwords generated (matches passwords.length).
    - `passwords` string[], required: The generated passwords/passphrases, length = count.
    - `length` integer: [random mode only] character length of each password.
    - `words` integer: [memorable mode only] number of words in each passphrase.

## Other responses

- `400`: Invalid input or the tool reported an error.
- `413`: Request body exceeds the 128 KB limit.
- `429`: Rate limit exceeded; the response carries Retry-After and RateLimit-* headers — honor them and add jitter.

---

[API](https://skmtc.dev/clean/apis/clean-tools-api.md) · [All operations](https://skmtc.dev/clean/apis/clean-tools-api/llms.txt) · [OpenAPI document](https://skmtc.dev/clean/apis/clean-tools-api/revisions/a24a01d2833c?raw)
