GunSpec

Game Balance

Game development tools for validating game stats against real-world specifications. Identify firearms where your game balance deviates significantly from expected values.

Auth RequiredStudio+

Returns outliers and distribution warnings across the game stat set, for spotting firearms that are over- or under-tuned relative to the rest of the catalog.

GET/v1/game/balance-report

  • stringheaderrequired

    Your API key. Authorization: Bearer <key> is accepted in its place.

  • numberdefault20

    How far from the mean a stat must sit to be flagged

    Range
    0 – 100
    Example

  • object[]

    The response payload.

  • string

    Slug of the firearm this row belongs to.

  • string

    Display name of the firearm this row is about.

  • object[]

    Every stat on this firearm that sits further from the mean than threshold.

  • string

    Which statistic this row is about, named as the field is: weightEmptyG, damage.

  • number

    This firearm value for the stat.

  • number

    Arithmetic mean across the records counted.

  • number

    Standard deviation across the records counted.

  • number

    Standard deviations from the mean. Positive is above it; the sign says which way the firearm is out of line.

  • 400VALIDATION_ERRORValidation error
  • 401UNAUTHORIZEDAPI key required
  • 403FORBIDDENValid key, not permitted
  • 429RATE_LIMITEDRate limit exceeded
  • 500INTERNAL_ERRORUnexpected server error

Requires Studio tier or higher.

Only firearms with at least one deviation exceeding the threshold are included in the response.

Expected values are derived from real-world specs (muzzle energy, weight, dimensions, etc.) normalized to a 0-100 scale within each firearm category.

A lower threshold surfaces more deviations, useful for fine-tuning. A higher threshold only flags major outliers.

Minimum tier
Studio+
Monthly quota
150,000/mo
Rate limit
120/min
Daily cap
10,000

Figures shown are for this endpoint's minimum tier. Higher tiers raise every limit.

Auth RequiredBuilder+

Ranks firearms into S/A/B/C/D tiers for a single game stat.

GET/v1/game/tier-list

  • stringheaderrequired

    Your API key. Authorization: Bearer <key> is accepted in its place.

  • stringdefaultdamage

    Which stat to tier by

    Accepts
    Example
  • string

    Restrict the tier list to a category slug

    Example

  • object

    The response payload.

  • string

    Which statistic this row is about, named as the field is: weightEmptyG, damage.

  • object

    Firearms grouped into tiers, strongest first.

  • object[]

    Top tier for this stat.

  • object[]

    Second tier.

  • object[]

    Third tier.

  • object[]

    Fourth tier.

  • object[]

    Bottom tier for this stat.

  • 400VALIDATION_ERRORValidation error
  • 401UNAUTHORIZEDAPI key required
  • 403FORBIDDENValid key, not permitted
  • 429RATE_LIMITEDRate limit exceeded
  • 500INTERNAL_ERRORUnexpected server error

Requires Builder tier or higher.

Valid stats: damage, accuracy, range, fireRate, mobility, recoilControl, reloadSpeed, concealment.

Omit the stat parameter to rank by a composite score across all 8 stats.

Tiers use percentile bucketing: S (90th+), A (75-90th), B (50-75th), C (25-50th), D (<25th).

Minimum tier
Builder+
Monthly quota
25,000/mo
Rate limit
60/min
Daily cap
2,000

Figures shown are for this endpoint's minimum tier. Higher tiers raise every limit.

Auth RequiredBuilder+

Returns a per-stat verdict between two firearms using their game-balance stats, plus the overall tally.

GET/v1/game/matchups

  • stringheaderrequired

    Your API key. Authorization: Bearer <key> is accepted in its place.

  • stringrequired

    First firearm slug

    Max length
    255
    Example
  • stringrequired

    Second firearm slug

    Max length
    255
    Example

  • object

    The response payload.

  • object

    The firearm named by the a parameter.

  • string

    Slug of the first firearm.

  • string

    Display name, as the maker writes it.

  • object

    The editorial game stats, with the game prefix the column carries stripped.

  • object

    The firearm named by the b parameter.

  • string

    Slug of the second firearm.

  • string

    Display name, as the maker writes it.

  • object

    The editorial game stats, with the game prefix the column carries stripped.

  • object

    The per-stat verdict, keyed by stat rather than listed.

  • string

    Which firearm wins on damage: a, b, or draw.

  • string

    Which firearm wins on accuracy.

  • string

    Which firearm wins on range.

  • string

    Which firearm wins on rate of fire.

  • string

    Which firearm wins on mobility.

  • string

    Which firearm wins on recoil control.

  • string

    Which firearm wins on reload speed.

  • string

    Which firearm wins on concealment.

  • integer

    How many statistics the first firearm wins.

  • integer

    How many statistics the second firearm wins.

  • integer

    How many statistics are tied.

  • 400VALIDATION_ERRORValidation error
  • 401UNAUTHORIZEDAPI key required
  • 403FORBIDDENValid key, not permitted
  • 404NOT_FOUNDResource not found
  • 429RATE_LIMITEDRate limit exceeded
  • 500INTERNAL_ERRORUnexpected server error

Requires Builder tier or higher.

Verdicts cover all 8 game stats: damage, accuracy, range, fireRate, mobility, recoilControl, reloadSpeed, concealment. Each value is a, b or draw.

Minimum tier
Builder+
Monthly quota
25,000/mo
Rate limit
60/min
Daily cap
2,000

Figures shown are for this endpoint's minimum tier. Higher tiers raise every limit.

Auth RequiredBuilder+

Returns the firearms best suited to a gameplay role, scored against that role weighting of the game stats.

GET/v1/game/role-roster

  • stringheaderrequired

    Your API key. Authorization: Bearer <key> is accepted in its place.

  • stringrequired

    Gameplay role

    Accepts
    Example
  • integerdefault5

    How many to return

    Range
    1 – 25
    Example

  • object[]

    The best-scoring firearms for the role, strongest first.

  • string

    Slug of the firearm.

  • string

    Display name, as the maker writes it.

  • number

    Fit for this role, 0 to 100, from the role weighting of the game stats.

  • object

    The editorial game stats, with the game prefix the column carries stripped.

  • integer | null

    Editorial damage rating, 0-100. Not a measured figure.

  • integer | null

    Editorial accuracy rating, 0-100.

  • integer | null

    Editorial range rating, 0-100.

  • integer | null

    Editorial rate-of-fire rating, 0-100.

  • integer | null

    Editorial mobility rating, 0-100.

  • integer | null

    Editorial recoil-control rating, 0-100.

  • integer | null

    Editorial reload-speed rating, 0-100.

  • integer | null

    Editorial concealment rating, 0-100.

  • 400VALIDATION_ERRORValidation error
  • 401UNAUTHORIZEDAPI key required
  • 403FORBIDDENValid key, not permitted
  • 429RATE_LIMITEDRate limit exceeded
  • 500INTERNAL_ERRORUnexpected server error

Requires Builder tier or higher.

Valid roles: sniper, assault, tank, support, stealth, speedster.

Each role uses different stat weights for scoring (e.g. sniper: range 0.30, accuracy 0.25, damage 0.25).

Use this to auto-populate role-based loadout screens in your game.

Minimum tier
Builder+
Monthly quota
25,000/mo
Rate limit
60/min
Daily cap
2,000

Figures shown are for this endpoint's minimum tier. Higher tiers raise every limit.

Auth RequiredStudio+

Returns mean, median, standard deviation, percentiles, and a histogram for a single game stat across the catalog.

GET/v1/game/stat-distribution

  • stringheaderrequired

    Your API key. Authorization: Bearer <key> is accepted in its place.

  • stringrequired

    Which stat to profile

    Accepts
    Example

  • object

    The response payload.

  • string

    Which statistic this row is about, named as the field is: weightEmptyG, damage.

  • integer

    How many records fall in this bucket.

  • number

    Arithmetic mean across the records counted.

  • number

    Middle value of the stat across the catalog.

  • number

    Standard deviation across the records counted.

  • number

    Lowest value of the stat across the catalog.

  • number

    Highest value of the stat across the catalog.

  • object

    Percentile cut points for the stat.

  • number

    10th percentile.

  • number

    25th percentile.

  • number

    50th percentile, equal to median.

  • number

    75th percentile.

  • number

    90th percentile.

  • object[]

    Firearm counts across ten fixed bands of width 10, from 0-10 to 90-100.

  • string

    The band this bucket covers, lo-hi. Half-open, so a value equal to hi falls in the next bucket, except 90-100, which includes 100.

  • integer

    How many records fall in this bucket.

  • 400VALIDATION_ERRORValidation error
  • 401UNAUTHORIZEDAPI key required
  • 403FORBIDDENValid key, not permitted
  • 429RATE_LIMITEDRate limit exceeded
  • 500INTERNAL_ERRORUnexpected server error

Requires Studio tier or higher.

Valid stats: damage, accuracy, range, fireRate, mobility, recoilControl, reloadSpeed, concealment.

Histogram uses 10-point buckets from 0 to 100.

Useful for identifying stat clusters and balance issues.

Minimum tier
Studio+
Monthly quota
150,000/mo
Rate limit
120/min
Daily cap
10,000

Figures shown are for this endpoint's minimum tier. Higher tiers raise every limit.