GunSpec

Firearms

Browse, search, compare and retrieve detailed specifications for 8,500+ firearms, variants included.

Auth RequiredBuilder+

Returns the metabolic cost of a foot march carrying each of up to 5 firearms, by a published load-carriage equation, from the masses the catalogue records.

GET/v1/firearms/load-carriage

  • stringheaderrequired

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

  • stringrequired

    Comma-separated firearm slugs, maximum 5.

    Example
  • numberdefault80

    Soldier body mass in kg.

    Range
    40 – 160
    Example
  • numberdefault15

    Body fat as a percentage of body mass; the LCDA resting rate is computed from lean mass.

    Range
    3 – 50
    Example
  • numberdefault0

    Everything else carried, in kg: armour, pack, water.

    Range
    0 – 120
    Example
  • integerdefault1

    Full magazines carried in total, the one in the firearm included. 0 carries it unloaded.

    Range
    0 – 20
    Example
  • string

    Comma-separated attachment slugs, maximum 10, added to every firearm by their recorded weight.

    Example
  • numberdefault4.8

    Marching speed in km/h.

    Range
    1 – 10
    Example
  • numberdefault0

    Slope as a percentage, rise over run: negative is downhill.

    Range
    -30 – 30
    Example
  • stringdefaultpaved

    Surface: paved (paved road or treadmill), dirt_road (dirt road), light_brush (light brush), heavy_brush (heavy brush), swampy_bog (swampy bog), loose_sand (loose sand).

    Accepts
    Example
  • numberdefault20

    March distance in km.

    Range
    0.1 – 200
    Example
  • stringdefaultlcda

    Equation: lcda (default) or pandolf, which refuses a downhill grade.

    Accepts
    Example

  • object

    The response payload.

  • object

    The equation behind every figure in the answer.

  • string

    The model the costs were computed with.

  • string

    The model by name.

  • string

    The equation as written, with its units, so the figures can be reproduced.

  • object[]

    Where the equation and its constants are from.

  • object | null

    The range the equation was fitted on. Null for a model whose paper states none here.

  • object

    The march every firearm was costed on.

  • number

    Soldier body mass in kg.

  • number

    Body fat as a percentage of body mass.

  • number

    Other equipment carried, in kg.

  • integer

    Full magazines carried in total.

  • number

    Marching speed in km/h.

  • number

    Marching speed in m/s, as the equations read it.

  • number

    Slope as a percentage.

  • string

    Surface id.

  • number

    The terrain factor (Soule and Goldman 1972) the moving cost is multiplied by.

  • number

    March distance in km.

  • integer

    How long the march takes at this speed, in seconds.

  • string[]

    The query parameters not sent, answered from their defaults.

  • object[]

    The attachments added to every firearm.

  • string

    Attachment slug.

  • string

    Attachment name.

  • number

    Recorded weight in grams.

  • object[]

    One result per firearm, in the order their ids were given.

  • object

    The firearm this result is for.

  • object

    What is carried, piece by piece.

  • object | null

    What the march costs this soldier with this firearm. Null when a mass it needs is not recorded; error says which.

  • object | null

    Against the option with the lightest carried load. Null on that option, on a lone firearm, and where no cost could be computed.

  • string[]

    Where an input lies outside the fitted range, or a count needs qualifying.

  • string | null

    Why this firearm could not be costed. Null when it was.

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

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.

This read answers conditional requests. Keep the ETag from a response and send it back as If-None-Match: an unchanged record returns 304 Not Modified with no body, which counts toward your per-minute rate limit but not your daily allowance.