DinoPass API Documentation
A simple, free REST API for generating memorable passwords. Perfect for educational applications, password resets, and bulk operations.
Overview
The DinoPass API generates memorable passwords using a combination of adjectives and nouns, making them easy to remember while maintaining reasonable security. All endpoints return plain text responses, one password per line when using bulk operations.
Base URL: https://www.dinopass.com
Rate Limits
1,000 requests per hour per IP address
Rate limits are tracked per IP address using a sliding window. When the limit is exceeded, the API returns a 429 Too Many Requests status code with helpful headers:
X-RateLimit-Limit- Maximum requests allowedX-RateLimit-Remaining- Remaining requests in current windowX-RateLimit-Reset- ISO timestamp when the limit resetsRetry-After- Seconds until you can retry
Tip: Use the bulk n parameter to get multiple passwords in a single request, reducing your API calls significantly!
API Endpoints
GET
/password/simple
Generates simple, easy-to-remember passwords. Format: adjective + noun + 2-digit number
Example: happycat42
n(optional) - Number of passwords to generate. Default: 1, Maximum: 1,000format(optional) - Response format. Options:text(default) orjson
GET /password/simple
GET /password/simple?n=100
GET /password/simple?format=json
GET /password/simple?n=5&format=json
happycat42
bravedog78
cleverbird91
{
"passwords": [
"happycat42",
"bravedog78",
"cleverbird91"
],
"count": 3,
"type": "simple"
}
GET
/password/strong
Generates stronger passwords with varied capitalization, leet speak substitutions, separators, and flexible number placement for enhanced security.
Example: Br@v3D0g-42
- Variable capitalization patterns (4 different styles)
- Leet speak character substitutions (e.g., @ for a, 3 for e)
- Random separators (dashes, numbers)
- Flexible number placement (start, middle, or end)
- Variable number of digits (1-3 digits)
n(optional) - Number of passwords to generate. Default: 1, Maximum: 1,000format(optional) - Response format. Options:text(default) orjson
GET /password/strong
GET /password/strong?n=500
GET /password/strong?format=json
Cl3v3rB1rd-99
42@ngryL10n
W1s3W0lf7
{
"passwords": [
"Cl3v3rB1rd-99",
"42@ngryL10n",
"W1s3W0lf7"
],
"count": 3,
"type": "strong"
}
GET
/password/custom
Generates customizable passwords with configurable length, character sets, and complexity options.
length(optional) - Password length. Default: 12, Range: 7-20useNumbers(optional) - Include digits 0-9. Default:trueuseSymbols(optional) - Include special characters (!@#$%^&+). Default:falseuseCapitals(optional) - Include uppercase letters A-Z. Default:falsen(optional) - Number of passwords to generate. Default: 1, Maximum: 100format(optional) - Response format. Options:text(default) orjson
GET /password/custom
GET /password/custom?length=16&useSymbols=true&useCapitals=true
GET /password/custom?length=20&useNumbers=false&useSymbols=true
GET /password/custom?length=16&useSymbols=true&useCapitals=false&n=5&format=json
happycat42@xyz
bravedog78!abc
{
"passwords": [
"happycat42@xyz",
"bravedog78!abc"
],
"count": 2,
"type": "custom"
}
GET
/hasword
Checks if a word exists in the DinoPass word database (adjectives or nouns).
word(required) - The word to checkformat(optional) - Response format. Options:text(default) orjson
GET /hasword?word=happy
GET /hasword?word=happy&format=json
true
Returns true if the word exists, false otherwise.
{
"word": "happy",
"exists": true
}
Bulk Operations
All password endpoints support bulk generation using the n parameter. This is the recommended approach for generating multiple passwords, as it counts as a single API request toward your rate limit.
GET /password/simple?n=1000
GET /password/simple?n=300
This generates 1,300 passwords using only 2 API requests instead of 1,300!
/password/simpleand/password/strong: Up to 1,000 passwords per request/password/custom: Up to 100 passwords per request
Response Formats
All endpoints support two response formats: text (default) and JSON. Use the format query parameter to specify your preferred format.
Text Format (Default)
- Content-Type:
text/plain - Encoding: UTF-8
- Format: One password per line (when using bulk operations)
- Example:
happycat42
nbravedog78
JSON Format
- Content-Type:
application/json - Encoding: UTF-8
- Structure: Object with
passwordsarray,count, andtypefields - Example:
{ "passwords": ["happycat42", "bravedog78"], "count": 2, "type": "simple" }
Usage: Add ?format=json to any endpoint URL to receive JSON responses.
200 OK- Success429 Too Many Requests- Rate limit exceeded500 Internal Server Error- Server error
Error Handling
When rate limited (429), the response includes helpful headers and a message:
HTTP/1.1 429 Too Many Requests
X-RateLimit-Limit: 1000
X-RateLimit-Remaining: 0
X-RateLimit-Reset: 2024-01-15T14:30:00.000Z
Retry-After: 1800
Rate limit exceeded. Maximum 1000 requests per hour. Try again after 2:30:00 PM
Code Examples
cURL
# Single password (text format)
curl https://www.dinopass.com/password/simple
# Single password (JSON format)
curl "https://www.dinopass.com/password/simple?format=json"
# Bulk passwords (100, JSON format)
curl "https://www.dinopass.com/password/simple?n=100&format=json"
# Custom password (JSON format)
curl "https://www.dinopass.com/password/custom?length=16&useSymbols=true&useCapitals=true&format=json"
PowerShell
# Single password
Invoke-RestMethod -Uri "https://www.dinopass.com/password/simple"
# Bulk passwords (1000)
$passwords = (Invoke-RestMethod -Uri "https://www.dinopass.com/password/simple?n=1000") -split "`n"
$passwords.Count # Should be 1000
JavaScript (Fetch API)
// Single password (text format)
fetch('https://www.dinopass.com/password/simple')
.then(response => response.text())
.then(password => console.log(password));
// Single password (JSON format)
fetch('https://www.dinopass.com/password/simple?format=json')
.then(response => response.json())
.then(data => {
console.log('Password:', data.passwords[0]);
console.log('Type:', data.type);
});
// Bulk passwords with JSON format
fetch('https://www.dinopass.com/password/simple?n=100&format=json')
.then(response => {
if (response.status === 429) {
const retryAfter = response.headers.get('Retry-After');
console.error(`Rate limited. Retry after ${retryAfter} seconds`);
return;
}
return response.json();
})
.then(data => {
if (data) {
console.log(`Generated ${data.count} passwords of type ${data.type}`);
console.log('Passwords:', data.passwords);
}
});
Python
import requests
import json
# Single password (text format)
response = requests.get('https://www.dinopass.com/password/simple')
print(response.text)
# Single password (JSON format)
response = requests.get('https://www.dinopass.com/password/simple?format=json')
data = response.json()
print(f"Password: {data['passwords'][0]}")
print(f"Type: {data['type']}")
# Bulk passwords (JSON format)
response = requests.get('https://www.dinopass.com/password/simple?n=1000&format=json')
data = response.json()
print(f"Generated {data['count']} passwords")
print(f"Type: {data['type']}")
# Check rate limit headers
if response.status_code == 200:
print(f"Remaining: {response.headers.get('X-RateLimit-Remaining')}")
print(f"Reset at: {response.headers.get('X-RateLimit-Reset')}")
Common Use Cases
- Bulk Password Resets: Generate passwords for multiple users at once using the
nparameter - Educational Applications: Create memorable passwords for student accounts
- Automated Systems: Integrate password generation into user onboarding workflows
- Password Management: Generate initial passwords that users can easily remember
Support & Feedback
For questions, issues, or feature requests, please contact us. The API is provided free of charge for legitimate use cases.