Compare the point-blank and supersonic range of each firearm
Returns, for each of up to 5 firearms firing a load, its maximum point-blank range: the furthest distance at which the bullet stays within half the target's diameter of the line of sight all the way from the muzzle, at the zero that makes that distance longest. With it come that zero (the far zero), the near zero where the bullet first rises through the line of sight, the peak, the time of flight and the velocity at the range, and the supersonic range.
The trajectory is the one /v1/firearms/{id}/load flies: the same load, the firearm's own barrel and the same solver, in the ICAO standard atmosphere at sea level (15 °C, 101.325 kPa). It is flown at every metre, so every distance is to the metre. With no ammo_id, each firearm fires the load its ballistic profile uses; the sights sit at the height that profile assumes for the firearm's category unless sight_height_mm says otherwise.
Every input has a default, and target.defaulted names the ones the answer assumed. Each trajectory is flown to 2500 m; a range that reaches it is at least that far, and the answer says so.
Requires Builder tier or higher.
Request
- Base URL: https://api.gunspec.io
- URL: https://api.gunspec.io/v1/firearms/point-blank
- Auth: one of:
- API key in header X-API-Key
- HTTP bearer
Query parameters
Comma-separated firearm slugs, maximum 5.
The load every firearm fires. Without it, each fires the load its ballistic profile uses.
The target's diameter in mm: the bullet must stay within half of it above and below the line of sight.
Height of the sights above the bore in mm. Default: the height the ballistic profile assumes for the firearm's category.
Headers
The ETag from a previous response. If the body would be byte-identical, the API answers 304 Not Modified with no body. A 304 counts toward the per-minute rate limit but not the daily request allowance.
Response
Compare the point-blank and supersonic range of each firearm
Example response
{
"success": true,
"data": {
"method": {
"id": "maximum-point-blank-range",
"name": "Maximum point-blank range on the API trajectory",
"citations": [
{
"authors": "Sporting Arms and Ammunition Manufacturers' Institute (SAAMI)",
"year": 2018,
"title": "Gun Recoil, Technical: Free Recoil Energy",
"journal": "SAAMI technical sheet, Rev. 7/9/2018",
"url": "https://saami.org/wp-content/uploads/2025/03/Gun-Recoil-Formulae-2018-07-9.pdf"
}
],
"resolutionM": 1,
"maxRangeM": 2500
},
"atmosphere": {
"name": "ICAO standard atmosphere at sea level",
"temperatureC": 15,
"pressureKpa": 101.325,
"airDensityKgM3": 1.225,
"speedOfSoundMps": 340.294
},
"target": {
"diameterMm": 200,
"radiusMm": 100,
"defaulted": [
"sight_height_mm"
]
},
"results": [
{
"firearm": {
"id": "hk416",
"name": "HK416",
"categoryId": "assault-rifle",
"barrelLengthMm": 264
},
"ammunition": {
"id": "m855",
"name": "M855 Ball (SS109)",
"caliberId": "5-56x45mm-nato",
"bulletWeightG": 4.02
},
"muzzleVelocityMps": 825,
"sight": {
"heightMm": 38
},
"pointBlank": {
"rangeM": 281,
"nearZeroM": 21,
"farZeroM": 238,
"peakM": 138,
"peakHeightMm": 100,
"boreAngleMrad": 2.043,
"timeOfFlightS": 0.36,
"velocityMps": 738
},
"supersonic": {
"rangeM": 1105,
"timeOfFlightS": 1.856
},
"delta": {
"rangeM": -7,
"farZeroM": -6
}
}
]
}
}Changes
No recorded changes to this operation across all 1 revision of this API.