{
  "openapi": "3.1.0",
  "info": {
    "title": "Name Generator Plus API",
    "version": "1.0.0",
    "description": "Free, no-authentication API that generates original names with their meaning and origin across 50+ categories (baby, business, fantasy, username, pet, character, and more). No API key required.",
    "contact": {
      "name": "Name Generator Plus",
      "email": "contact@namegeneratorplus.com",
      "url": "https://namegeneratorplus.com"
    },
    "license": {
      "name": "Free to use",
      "url": "https://namegeneratorplus.com/terms-of-service/"
    }
  },
  "servers": [
    {
      "url": "https://namegeneratorplus.com",
      "description": "Production"
    }
  ],
  "paths": {
    "/api/generate": {
      "get": {
        "operationId": "generateNames",
        "summary": "Generate names for a category",
        "description": "Return a batch of original names with meanings for a category slug. No auth.",
        "parameters": [
          {
            "name": "category",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string",
              "enum": [
                "babyname-generator",
                "babyname-generator/baby-boy-name-generator",
                "babyname-generator/baby-girl-name-generator",
                "boy-name-generator",
                "boy-name-generator/boy-middle-name-generator",
                "boy-name-generator/cool-boy-name-generator",
                "girl-name-generator",
                "girl-name-generator/cool-girl-name-generator",
                "girl-name-generator/girl-middle-name-generator",
                "middle-name-generator",
                "last-name-generator",
                "surname-generator",
                "female-name-generator",
                "american-names-generator",
                "english-name-generator",
                "chinese-name-generator",
                "german-name-generator",
                "korean-name-generator",
                "country-name-generator",
                "country-name-generator/japanese-name-generator",
                "business-name-generator",
                "business-name-generator/product-name-generator",
                "business-name-generator/store-name-generator",
                "team-name-generator",
                "nickname-generator/group-name-generator",
                "nickname-generator/couple-name-generator",
                "nickname-generator/name-combiner-generator",
                "character-name-generator",
                "cowboy-name-generator",
                "viking-name-generator",
                "superhero-name-generator",
                "ship-name-generator",
                "ff-name-generator",
                "nickname-generator/elven-name-generator",
                "nickname-generator/god-name-generator",
                "nickname-generator/kingdom-name-generator",
                "nickname-generator/warrior-cat-name-generator",
                "nickname-generator/wizard-names-generator",
                "instagram-username-generator",
                "nickname-generator/youtube-name-generator",
                "nickname-generator/gamertag-generator",
                "nickname-generator/instagram-names-generator",
                "random-name-generator/random-usernames-generator",
                "nickname-generator/cool-name-generator",
                "nickname-generator/cute-name-generator",
                "nickname-generator/name-symbol-generator",
                "nickname-generator/game-name-generator",
                "nickname-generator",
                "nickname-generator/male-name-generator",
                "nickname-generator/ai-name-generator",
                "fake-name-generator",
                "fake-name-generator/fake-app-name-generator",
                "fake-name-generator/fake-female-name-generator",
                "random-name-generator",
                "pet-name-generator",
                "pet-name-generator/dog-name-generator"
              ]
            },
            "description": "Generator category slug."
          },
          {
            "name": "count",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 50,
              "default": 12
            },
            "description": "How many names (1-50)."
          }
        ],
        "responses": {
          "200": {
            "description": "Generated names",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GenerateResult"
                }
              }
            }
          },
          "400": {
            "description": "Bad request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Unknown category",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      },
      "post": {
        "operationId": "generateNamesPost",
        "summary": "Generate names (JSON body)",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "category"
                ],
                "properties": {
                  "category": {
                    "type": "string",
                    "enum": [
                      "babyname-generator",
                      "babyname-generator/baby-boy-name-generator",
                      "babyname-generator/baby-girl-name-generator",
                      "boy-name-generator",
                      "boy-name-generator/boy-middle-name-generator",
                      "boy-name-generator/cool-boy-name-generator",
                      "girl-name-generator",
                      "girl-name-generator/cool-girl-name-generator",
                      "girl-name-generator/girl-middle-name-generator",
                      "middle-name-generator",
                      "last-name-generator",
                      "surname-generator",
                      "female-name-generator",
                      "american-names-generator",
                      "english-name-generator",
                      "chinese-name-generator",
                      "german-name-generator",
                      "korean-name-generator",
                      "country-name-generator",
                      "country-name-generator/japanese-name-generator",
                      "business-name-generator",
                      "business-name-generator/product-name-generator",
                      "business-name-generator/store-name-generator",
                      "team-name-generator",
                      "nickname-generator/group-name-generator",
                      "nickname-generator/couple-name-generator",
                      "nickname-generator/name-combiner-generator",
                      "character-name-generator",
                      "cowboy-name-generator",
                      "viking-name-generator",
                      "superhero-name-generator",
                      "ship-name-generator",
                      "ff-name-generator",
                      "nickname-generator/elven-name-generator",
                      "nickname-generator/god-name-generator",
                      "nickname-generator/kingdom-name-generator",
                      "nickname-generator/warrior-cat-name-generator",
                      "nickname-generator/wizard-names-generator",
                      "instagram-username-generator",
                      "nickname-generator/youtube-name-generator",
                      "nickname-generator/gamertag-generator",
                      "nickname-generator/instagram-names-generator",
                      "random-name-generator/random-usernames-generator",
                      "nickname-generator/cool-name-generator",
                      "nickname-generator/cute-name-generator",
                      "nickname-generator/name-symbol-generator",
                      "nickname-generator/game-name-generator",
                      "nickname-generator",
                      "nickname-generator/male-name-generator",
                      "nickname-generator/ai-name-generator",
                      "fake-name-generator",
                      "fake-name-generator/fake-app-name-generator",
                      "fake-name-generator/fake-female-name-generator",
                      "random-name-generator",
                      "pet-name-generator",
                      "pet-name-generator/dog-name-generator"
                    ]
                  },
                  "count": {
                    "type": "integer",
                    "minimum": 1,
                    "maximum": 50,
                    "default": 12
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Generated names",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GenerateResult"
                }
              }
            }
          },
          "400": {
            "description": "Bad request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/api/categories": {
      "get": {
        "operationId": "listCategories",
        "summary": "List all generator categories",
        "responses": {
          "200": {
            "description": "Category list",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "count": {
                      "type": "integer"
                    },
                    "categories": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/Category"
                      }
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/ask": {
      "post": {
        "operationId": "ask",
        "summary": "Natural-language name request (NLWeb)",
        "description": "Describe what you are naming in plain language and get matching names. Supports SSE streaming via the Prefer: streaming header.",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "query"
                ],
                "properties": {
                  "query": {
                    "type": "string"
                  },
                  "prefer": {
                    "type": "object",
                    "properties": {
                      "streaming": {
                        "type": "boolean"
                      }
                    }
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Names matching the query",
            "content": {
              "application/json": {},
              "text/event-stream": {}
            }
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "Category": {
        "type": "object",
        "properties": {
          "slug": {
            "type": "string"
          },
          "label": {
            "type": "string"
          },
          "short": {
            "type": "string"
          },
          "group": {
            "type": "string"
          },
          "strategy": {
            "type": "string"
          },
          "url": {
            "type": "string",
            "format": "uri"
          }
        }
      },
      "GeneratedName": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string"
          },
          "meaning": {
            "type": "string"
          }
        }
      },
      "GenerateResult": {
        "type": "object",
        "properties": {
          "category": {
            "$ref": "#/components/schemas/Category"
          },
          "count": {
            "type": "integer"
          },
          "names": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/GeneratedName"
            }
          }
        }
      },
      "Error": {
        "type": "object",
        "properties": {
          "status": {
            "type": "integer"
          },
          "error": {
            "type": "object",
            "properties": {
              "code": {
                "type": "string"
              },
              "message": {
                "type": "string"
              },
              "hint": {
                "type": "string"
              }
            }
          }
        }
      }
    }
  }
}