API 文档
使用我们的 REST API,轻松将 Passly 集成到您的应用中
基础 URL
所有请求都从该 URL 发出。无需密钥,无需注册。
120
请求 / 10 分钟
无需密钥
公开 API
v1
API 版本
…
响应时间
生产环境
https://passly.fr/api/v1接口
三个入口。展开其中之一即可查看参数、示例与响应。
根据指定条件生成一个或多个安全密码。
参数
lengthinteger4-128,默认值:16可选
countinteger1-50,默认值:1可选
formatstringrandom, pronounceable, passphrase可选
lowercaseboolean包含小写字母(默认值:true)可选
uppercaseboolean包含大写字母(默认值:true)可选
digitsboolean包含数字(默认值:true)可选
specialboolean包含特殊字符(默认值:false)可选
exclude_similarboolean排除易混淆字符(默认值:false)可选
exclude_customstring需额外排除的字符 (≤ 256)可选
capitalizeboolean可拼读:每个音节首字母大写(默认值:true)可选
include_numbersboolean可拼读:附加数字(默认值:true)可选
wordsinteger密码短语:3-10可选
separatorstring密码短语:单词分隔符 (≤ 8)可选
请求示例
curl -X POST https://passly.fr/api/v1/generate \
-H "Content-Type: application/json" \
-d '{
"length": 20,
"count": 3,
"special": true,
"exclude_similar": true
}'响应
200 OK
{
"success": true,
"data": {
"passwords": [
"K9#mP2$xQr5@nW8&zF3v",
"T4*bN7^gH6%jL3!qR9@m",
"X5&cV8#nB2$kM4@pZ7*w"
],
"entropy_bits": 131.09,
"strength": "very_strong",
"metadata": {
"format": "random",
"length": 20,
"charset_size": 88,
"possible_combinations": 1.7690923e+38,
"possible_combinations_log10": 38.248
},
"crack_time": {
"seconds": 8.8454615e+25,
"formatted": "billions of years",
"unit": "billion_years",
"value": null,
"assumptions": "1e+12 guesses/second"
},
"generated_at": "2026-01-15T10:30:45.000Z",
"locale": "fr",
"api_version": "v1"
}
}速率限制
按 IP 地址计的配额保护着服务,响应头会告知您当前的用量。
每个 IP 的限制
每 10 分钟 120 次请求
响应头
X-RateLimit-LimitX-RateLimit-RemainingX-RateLimit-Reset
错误 429
达到限制时返回。Retry-After 响应头指示需等待的时间。
错误代码
每个错误都返回结构固定的 JSON,并附带可用于判断的代码。
400Bad Request
参数无效或缺失
{
"error": true,
"message": "长度必须在4到128个字符之间",
"code": "invalid_length"
}429Too Many Requests
已超出请求限制
{
"error": true,
"message": "已达到请求限制。请等待234秒",
"retry_after": 234,
"reset_at": "2026-01-15T10:35:00.000Z"
}500Internal Server Error
服务器内部错误
{
"error": true,
"message": "发生错误。请重试。"
}503Service Unavailable
服务维护中
{
"error": true,
"message": "网站目前正在维护中。请几分钟后再试。"
}在 code 字段中返回的代码
invalid_lengthinvalid_countinvalid_formatinvalid_wordsno_charsetempty_wordlist
集成示例
同一个调用,用您选择的语言。复制、粘贴、按需调整。
// PasslyClient.js
class PasslyClient {
constructor(baseURL = 'https://passly.fr/api/v1') {
this.baseURL = baseURL;
}
async generatePassword(options = {}) {
const response = await fetch(`${this.baseURL}/generate`, {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({
length: options.length || 16,
count: options.count || 1,
lowercase: options.lowercase !== false,
uppercase: options.uppercase !== false,
digits: options.digits !== false,
special: options.special || false,
exclude_similar: options.excludeSimilar || false,
format: options.format || 'random'
})
});
if (!response.ok) {
throw new Error(`API Error: ${response.status}`);
}
return response.json();
}
async checkHealth() {
const response = await fetch(`${this.baseURL}/health`);
return response.json();
}
}
// Utilisation
const passly = new PasslyClient();
const result = await passly.generatePassword({
length: 24,
special: true,
excludeSimilar: true
});
console.log('Mot de passe:', result.data.passwords[0]);
console.log('Force:', result.data.strength);
console.log('Entropie:', result.data.entropy_bits, 'bits');