API Documentation
Generate Star Wars character names programmatically with our free REST API.
No authentication required. No rate limits for reasonable use.
Free & Open
No API key or signup needed. Completely free to use.
Edge-Deployed
Globally distributed. Sub-100ms response times.
Deterministic
Pass a seed parameter for reproducible results every time.
Overview
The Star Wars Name Generator API is a free REST API that generates lore-friendly Star Wars character names. It supports 15 species (see our naming glossary for conventions), 6 style presets, gender filtering, era-specific naming conventions, and fine-grained control over phonetics via syllable count and harshness parameters. Learn more about the linguistic research behind it on our methodology page.
The API is stateless — no data is stored, no accounts are required, and every request is independent. It uses a seeded random number generator, so passing the same seed will always return the same names.
- Generate up to 50 unique names per request
- CORS enabled — works from any frontend, mobile app, or server
- JSON request and response format
- No API key, no authentication, no signup
Base URL
All API requests should be made to the following base URL:
https://vqcjvexnwxnwvaoeofka.supabase.co/functions/v1/generate-namesThe API is served over HTTPS only. HTTP requests will not be accepted.
Import the machine-readable spec into Postman, Insomnia, Swagger UI, or your code generator of choice.
Authentication
This API is completely free and open. No API key, bearer token, or any form of authentication is needed to make requests.
Simply send your request to the endpoint — no headers beyond Content-Type: application/json are required for POST requests.
Available Endpoints
/generate-namesGenerate Star Wars character names based on the provided parameters. Send a JSON body with your configuration.
Content-Type: application/json
Request Body: JSON object with optional parameters (see Parameters section)
Response: JSON object with names array and meta object
/generate-namesReturns API documentation in JSON format, including available parameters, valid options, and endpoint descriptions. Useful for programmatic discovery.
Response: JSON object describing the API schema, parameter options, and available species list
Request Parameters
All parameters are optional. If omitted, defaults are applied. Send as a JSON body with a POST request.
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| species | string | No | "human" | The species type. Options: human, twilek, wookiee, zabrak, mandalorian, droid, sith, jedi, hutt, rodian, moncalamari, chiss, togruta, gamorrean, planet |
| preset | string | No | "classic" | Name style preset. Options: classic, dark, heroic, droid, ancient, pirate |
| count | number | No | 5 | Number of names to generate (1–50) |
| gender | string | No | "neutral" | Gender influence on name phonetics. Options: male, female, neutral |
| era | string | No | "imperial" | Star Wars era for naming conventions. Options: old-republic, clone-wars, imperial, new-republic |
| syllableCount | number | No | 3 | Number of syllables per name (2–5) |
| harshness | number | No | 50 | Phonetic harshness: 0 (soft/melodic) to 100 (harsh/guttural) |
| seed | string | No | Random UUID | Seed for deterministic output. Same seed = same names |
Available Species
Response Format
Successful responses return a JSON object with two keys:
Success Response (200 OK)
{
"names": [
"Darth Vadious",
"Lord Revanus",
"Dark Nihilix",
"Darth Malak",
"Lord Sidias"
],
"meta": {
"species": "sith",
"preset": "dark",
"gender": "neutral",
"era": "imperial",
"syllableCount": 3,
"harshness": 50,
"count": 5,
"seed": "a1b2c3d4-e5f6-7890-abcd-ef1234567890"
}
}| Field | Type | Description |
|---|---|---|
| names | string[] | Array of generated Star Wars names |
| meta | object | Echo of the parameters used, including the auto-generated seed if none was provided |
| meta.seed | string | The seed used — save this to reproduce the exact same names later |
Error Handling
Errors return a JSON object with an error field describing the issue.
| Status Code | Meaning | When It Occurs |
|---|---|---|
| 200 | OK | Request successful — names generated |
| 400 | Bad Request | Invalid species, invalid preset, or malformed JSON body |
| 405 | Method Not Allowed | Using a method other than GET or POST (e.g., PUT, DELETE) |
Error Response Examples
Invalid species:
{
"error": "Unknown species \"ewok\". Valid: human, twilek, wookiee, zabrak, mandalorian, droid, sith, jedi, hutt, rodian, moncalamari, chiss, togruta, gamorrean, planet"
}Invalid preset:
{
"error": "Unknown preset \"steampunk\". Valid: classic, dark, heroic, droid, ancient, pirate"
}Malformed JSON:
{
"error": "Invalid request body. Send JSON."
}Wrong HTTP method:
{
"error": "Method not allowed. Use POST."
}Rate Limits
There are currently no enforced rate limits. The API is free for reasonable use.
However, please follow these guidelines for fair usage:
- Avoid sending more than 60 requests per minute from a single client
- Use the
countparameter (up to 50) to batch names in a single request instead of making many small requests - Cache results on your end when possible — use the
seedparameter for deterministic results - Excessive abuse may result in temporary IP-based throttling
If you're building an application that requires guaranteed uptime or higher throughput, contact us to discuss dedicated access.
Interactive Playground
Configure parameters below and hit Send Request to test the API live.
Parameters
Request Body
{
"species": "sith",
"preset": "dark",
"count": 5,
"gender": "neutral",
"era": "imperial",
"syllableCount": 3,
"harshness": 50
}Response
// Click "Send Request" to see the responseCode Examples
Copy-paste examples for common languages. Parameters update dynamically based on your playground selections above.
curl -X POST https://vqcjvexnwxnwvaoeofka.supabase.co/functions/v1/generate-names \
-H "Content-Type: application/json" \
-d '{"species":"sith","preset":"dark","count":5,"gender":"neutral","era":"imperial"}'