Point-blank and supersonic range
Returns the maximum point-blank range of one to five firearms, the furthest distance the bullet stays within half a target's diameter of the line of sight with no holdover, with the zero that gives it, and how far the bullet stays supersonic. Computed on the same trajectory as the ballistic profile, from each firearm's own barrel, in the ICAO standard atmosphere. Use this tool for questions about point-blank range, what distance to zero at, or when a bullet goes subsonic.
Example usage
- 1
A person asks
- What is the maximum point-blank range of an HK416 against an FN SCAR-H on a 200 mm target?
- 2
The assistant calls the tool
tools/calljson{ "name": "gunspec_point_blank_range", "arguments": { "ids": [ "hk416", "fn-scar-h" ], "target_mm": 200 }} - 3
The server answers
Resultjson{ "method": { "id": "maximum-point-blank-range", "name": "Maximum point-blank range on the API trajectory", "equation": "y(d) = d·θ − D(d) − h; range = the largest R for which some θ keeps −r ≤ y(d) ≤ r for every d ≤ R, bound at each metre by (D(d) + h − r)/d ≤ θ ≤ (D(d) + h + r)/d; θ taken at its upper bound, so the path peaks at +r. D(d) the drop below the…", "citations": [ { "authors": "International Civil Aviation Organization", "year": 1993, "title": "Manual of the ICAO Standard Atmosphere (extended to 80 kilometres)", "journal": "ICAO Doc 7488/3, third edition", "doi": null, "url": null } ], "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": [ "ammo_id", "sight_height_mm" ] }, "results": [ { "firearm": { "id": "hk416", "name": "HK416", "categoryId": "assault-rifle", "barrelLengthMm": 264 }, "ammunition": { "id": "m193", "name": "M193 Ball", "caliberId": "5-56x45mm-nato", "bulletWeightG": 3.56 }, "muzzleVelocityMps": 825, "sight": { "heightMm": 38, "source": "category" }, "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, "beyondProfile": false }, "delta": null, "warnings": [], "error": null }, { "firearm": { "id": "fn-scar-h", "name": "FN SCAR-H", "categoryId": "battle-rifle", "barrelLengthMm": 406 }, "ammunition": { "id": "m80", "name": "M80 Ball", "caliberId": "7-62x51mm-nato", "bulletWeightG": 9.53 }, "muzzleVelocityMps": 785, "sight": { "heightMm": 38, "source": "category" }, "pointBlank": { "rangeM": 274, "nearZeroM": 20, "farZeroM": 232, "peakM": 126, "peakHeightMm": 100, "boreAngleMrad": 2.127, "timeOfFlightS": 0.362, "velocityMps": 730 }, "supersonic": { "rangeM": 1534, "timeOfFlightS": 2.667, "beyondProfile": false }, "delta": { "rangeM": -7, "farZeroM": -6 }, "warnings": [], "error": null } ]}Captured from the live API on Oct 22, 2026. Lists and long text are shortened for display.
Related references
Arguments
- string[]required
One to five firearm slugs.
- Sent as
- ?ids=
- string
The load every firearm fires. Leave it out to fire each with the load its ballistic profile uses.
- Sent as
- ?ammo_id=
- numberdefault
200Target diameter in mm.
- Range
- 20 – 2000
- Sent as
- ?target_mm=
- number
Sight height above the bore in mm. Leave it out for the height assumed for the category.
- Range
- 0 – 150
- Sent as
- ?sight_height_mm=
Each argument is sent to GET /v1/firearms/point-blank as the parameter shown, so the same request can be made to the API directly, with your key, if you want to shape what comes back.