Docs/APIs/Game Character Generator

Game Character Generator

Generate RPG-style characters

OperationalCredits 1 per callp50 143msGamesStar

Overview

Characters come with names, racial traits, class abilities, personality traits, and motivations for rich storytelling.

Endpoint

One host, one path per API. The block below shows this call in four languages; every one of them is the same HTTP request. Making requests covers the timeouts, retries and parameter rules that apply to all of them. The SDKs wrap the same call in a typed client.

GEThttps://api.apiverve.com/v1/gamecharacter
curl "https://api.apiverve.com/v1/gamecharacter?race=elf&class=mage" \
  -H "x-api-key: your_api_key_here"
const res = await fetch('https://api.apiverve.com/v1/gamecharacter?race=elf&class=mage', {
  headers: { 'x-api-key': 'your_api_key_here' },
});

if (!res.ok) throw new Error(`${res.status} ${await res.text()}`);

const { data } = await res.json();
console.log(data);
import requests

res = requests.get(
    "https://api.apiverve.com/v1/gamecharacter?race=elf&class=mage",
    headers={"x-api-key": "your_api_key_here"},
    timeout=15,
)
res.raise_for_status()

print(res.json()["data"])
package main

import (
	"fmt"
	"io"
	"net/http"
)

func main() {
	req, _ := http.NewRequest("GET", "https://api.apiverve.com/v1/gamecharacter?race=elf&class=mage", nil)
	req.Header.Set("x-api-key", "your_api_key_here")

	res, err := http.DefaultClient.Do(req)
	if err != nil {
		panic(err)
	}
	defer res.Body.Close()

	out, _ := io.ReadAll(res.Body)
	fmt.Println(string(out))
}

Replace your_api_key_here with the key from your dashboard. When the inputs arrive as a list rather than one at a time, batch requests run up to 200 of them through this same API in a single call.

Authentication

Send your key in the x-api-key header. That is the only auth step — there is no token exchange and no per-endpoint scope to configure. Authentication covers creating, rotating and revoking keys.

401 is the only auth verdict

A 401 means the key is missing, invalid or expired. A 403 means the key is valid but not permitted here — blocked by a key restriction or an IP allow-list. Running out of credits is a 429.

Parameters

Sent in the query string. Premium parameters are accepted on every plan but only take effect on plans that include them.

ParameterTypeDescription
raceOptionalstringCharacter race: Human, Elf, Dwarf, Halfling, Orc, Gnome, Tiefling, Dragonborn, Half-Elf, Goblin
classOptionalstringCharacter class: Warrior, Mage, Rogue, Cleric, Ranger, Paladin, Barbarian, Bard, Druid, Monk, Warlock, Necromancer

Response

Every API returns the same three top-level keys, so one response handler covers your whole integration: status, error and data. Only data changes shape. Response format covers the envelope, the other output formats and how premium fields are withheld.

Sample response
{
  "status": "ok",
  "error": null,
  "data": {
    "name": "Nimara Goldenbough",
    "race": {
      "name": "Elf",
      "traits": [
        "Graceful",
        "Keen Senses",
        "Long-lived"
      ]
    },
    "class": {
      "name": "Mage",
      "description": "Wielder of arcane magic",
      "primaryStat": "intelligence",
      "hitDie": "d6"
    },
    "background": "Criminal",
    "personality": "Ambitious and driven",
    "motivation": "Protect the innocent",
    "stats": {
      "strength": {
        "value": 13,
        "modifier": 1
      },
      "dexterity": {
        "value": 12,
        "modifier": 1
      },
      "constitution": {
        "value": 9,
        "modifier": -1
      },
      "intelligence": {
        "value": 11,
        "modifier": 0
      },
      "wisdom": {
        "value": 4,
        "modifier": -3
      },
      "charisma": {
        "value": 8,
        "modifier": -1
      }
    },
    "hp": 5,
    "totalStatPoints": 57,
    "highestStat": "strength",
    "lowestStat": "wisdom"
  }
}

Response fields

Paths are relative to data. Premium fields are absent rather than zeroed on plans that do not include them, so check for presence instead of comparing to 0.

FieldTypeExampleDescription
namestring"Nimara Goldenbough"Generated character name combining race and fantasy elements
raceobject{...}The character's race, with its traits
namestring"Elf"Character race type selected from available options
traitsarray[Graceful, ...]Array of racial traits and bonuses specific to race
classobject{...}The character's class, with its description and primary attribute
namestring"Mage"Character class determining abilities and role
descriptionstring"Wielder of arcane magic"Character class role and primary purpose description
primaryStatstring"intelligence"Primary ability score stat for class abilities
hitDiePremiumstring"d6"Hit die size determining health points per level
backgroundPremiumstring"Criminal"Character background determining skills and expertise
personalitystring"Ambitious and driven"Character personality traits and behavioral characteristics
motivationstring"Protect the innocent"Character motivation driving actions and goals
statsobject{...}Rolled ability scores, each with its value and derived modifier
strengthobject{...}Strength score and modifier
valuenumber13Strength ability score (base 3-18 from 3d6)
modifiernumber1Strength modifier derived from ability score
dexterityobject{...}Dexterity score and modifier
valuenumber12Dexterity ability score (base 3-18 from 3d6)
modifiernumber1Dexterity modifier derived from ability score
constitutionobject{...}Constitution score and modifier
valuenumber9Constitution ability score (base 3-18 from 3d6)
modifiernumber-1Constitution modifier derived from ability score
intelligenceobject{...}Intelligence score and modifier
valuenumber11Intelligence ability score (base 3-18 from 3d6)
modifiernumber0Intelligence modifier derived from ability score
wisdomobject{...}Wisdom score and modifier
valuenumber4Wisdom ability score (base 3-18 from 3d6)
modifiernumber-3Wisdom modifier derived from ability score
charismaobject{...}Charisma score and modifier
valuenumber8Charisma ability score (base 3-18 from 3d6)
modifiernumber-1Charisma modifier derived from ability score
hpnumber5Hit points determined by class hit die and constitution
totalStatPointsPremiumnumber57Sum of all six ability scores combined
highestStatPremiumstring"strength"Name of the ability score with highest value
lowestStatPremiumstring"wisdom"Name of the ability score with lowest value

Errors

Read the HTTP status first, then error for the specific reason. The body names the parameter that has to change. Error handling covers the full status list and which of them are worth retrying.

StatusMeaningWhat to do
400Input was rejectedRead error; it names the parameter.
401Key missing or invalidCheck the header name and the key value.
403Key valid, but not permittedA key restriction or IP allow-list; see key scoping.
429Rate limited, or out of creditsRead error to tell them apart; see rate limits.

Use cases

Tabletop Gaming
Quickly generate NPCs or backup characters
Game Development
Create diverse character rosters for games
Creative Writing
Generate character concepts for stories
Teaching
Demonstrate character creation mechanics

Other ways to use Game Character Generator

Set up Game Character Generator on APIVerve, or reach the same source a different way. Your APIVerve account and credits work on all of them — one key, one balance.

Give it to an AI agentConnect over MCP and your agent calls it as a native tool — Claude, Cursor, ChatGPT.VerveKitReference →

More in Games:

Was this page helpful?