Get Firearm
Returns the full specification for a single firearm, including its manufacturer, category, calibers, images, and known users.
- stringheaderrequired
Your API key.
Authorization: Bearer <key>is accepted in its place.
- stringrequired
Resource slug ID
- Accepts
- a lowercase slug: letters, digits and hyphens
- Example
- FirearmDetail
A firearm as stored: every specification column we serve, with no nested relations.
FirearmDetailis this plus them, and/v1/firearms/{id}/family-treereturns this shape forcurrent, since the walk reads the row and does not load the relations. - integer
Integer flag,
1when a 3D model is on file. Stored as the database holds it rather than as a boolean. - string | null
Line-art silhouette, or null where none has been drawn.
- string | null
GLB model, or null where none is on file.
- string | null
The ammunition load ballistics figures are quoted against, where one is nominated.
- number | null
Muzzle velocity in metres per second exactly as the source stated it, kept beside our own figure so a reader can see what was quoted and what was derived.
- number | null
Muzzle energy in joules exactly as the source stated it.
- number | null
Effective range in metres exactly as the source stated it.
- number | null
Maximum range in metres exactly as the source stated it.
- string | null
Where the ballistics figures came from, named in prose.
- string | null
URL of the ballistics source, where it is a page rather than a book.
- string
URL-safe slug identifying the firearm, e.g.
glock-17-gen5. Stable: it is what a mirror keys on. - string
Display name, as the maker writes it.
- string
Slug of the manufacturer that makes it. Resolve against
/v1/manufacturers/{id}. - string
Slug of the category it belongs to. Resolve against
/v1/categories. - string | null
The firearm this one is a variant of, or null when it is not a variant. Variant relationships are what
firearm.variant.updatedwebhooks and/v1/firearms/{id}/variantsfollow. - string | null
How this record differs from its parent:
optics_ready,compact,threadedand so on. Null when the record has no parent. - integer | null
Year it entered production or service. Null where the date is disputed or unknown.
- integer | null
Year production ended, or null while it is still made.
- FirearmStatus | null
Production status, one of
in_production,discontinued,out_of_production,in_service,limited_production,prototype. Discontinued records are kept deliberately: a rifle built in 2004 wears parts nobody sells today. - string | null
ISO 3166-1 alpha-2 code of where it was designed, e.g.
AT. - number | null
Unloaded weight in grams, without magazine.
- number | null
Loaded weight in grams, with a full magazine.
- number | null
Overall length in millimetres, stock extended where it folds or collapses.
- number | null
Barrel length in millimetres, measured from the breech face.
- number | null
Height in millimetres, including sights and a fitted magazine.
- number | null
Width in millimetres at the widest point.
- number | null
Distance between front and rear iron sights in millimetres. Null on a record with no iron sights.
- string | null
How the action cycles:
short_recoil,gas_operated,blowback,bolt_actionand so on. An open vocabulary: the values in use are published on the schema asx-gunspec-vocabulary, andGET /v1/firearms/action-typesis the live list. - string | null
What releases the striker or hammer:
striker_fired,hammer_fired. - string | null
Trigger arrangement:
single_action,double_action,safe_action. - number | null
Trigger pull weight in newtons. Divide by 4.448 for pounds-force.
- integer | null
Rounds in the standard magazine. Null where the firearm is not magazine-fed.
- string | null
Magazine pattern:
detachable_box,internal,drum,belt. - number | null
Muzzle velocity in metres per second, for the default load.
- number | null
Muzzle energy in joules, for the default load.
- number | null
Effective range in metres against a point target.
- number | null
Maximum range in metres. Where the projectile lands, not where it is useful.
- integer | null
Cyclic rate in rounds per minute. Null on anything that is not automatic.
- string | null
Rifling description, e.g.
6 grooves, right-hand twist. - number | null
Rifling twist rate in millimetres per turn. Divide by 25.4 for inches.
- integer | null
Number of grooves cut in the bore.
- string | null
What the frame or receiver is made of.
- string | null
What the slide is made of. Null on anything without one.
- string | null
What the barrel is made of.
- string | null
What the stock or furniture is made of.
- string | null
Surface finish, e.g.
nitride,parkerized,cerakote. - string | null
JSON array of safety mechanisms
- string | null
JSON array of features
- string | null
JSON array of feed systems
- integer | null
Editorial game statistic, 0-100. Not a measured figure. These are balance numbers for game use and are not derived from the ballistics above.
- integer | null
Editorial game statistic, 0-100. Not a measured figure.
- integer | null
Editorial game statistic, 0-100. Not a measured figure.
- integer | null
Editorial game statistic, 0-100. Not a measured figure.
- integer | null
Editorial game statistic, 0-100. Not a measured figure.
- integer | null
Editorial game statistic, 0-100. Not a measured figure.
- integer | null
Editorial game statistic, 0-100. Not a measured figure.
- integer | null
Editorial game statistic, 0-100. Not a measured figure.
- string | null
Prose summary of the record, where one has been written.
- string | null
Free-text notes that do not belong in a specific field.
- string | null
Person or team credited with the design, where it is known.
- number | null
Length with stock folded (mm)
- string | null
JSON array of alternate names/designations
- string | null
JSON array of firing modes
- string | null
JSON array of conflict objects with name, years, and sides
- string | null
JSON object with estimated_total, production_years, and notes
- string | null
Historical trivia / game-dev flavor text
- string | null
JSON array of source URLs the record was compiled from. Check a specific figure against these rather than against
dataConfidence. - number | null
How completely the record is specified and how well it is sourced, 0 to 1. A record-level completeness and provenance measure, not a per-field probability of correctness. Use it to rank and triage; use
sourcesto verify an individual number. - string
When the record was first added,
YYYY-MM-DD HH:MM:SSin UTC. - string
When a field we serve last changed. Maintained by the database rather than by whatever wrote the row, so it moves for a corrected specification and does not move for a re-run of the importer.
- string | null
Opaque fingerprint of this record. It changes when and only when a field we serve changes, so a client holding the same value already has the record and need not fetch it. Equality is the only supported operation: do not parse it, and do not assume how it is computed. Null means the record has not been written since versioning began, not that it is unchanged.
- Provenance
Where a record's figures came from and how far they have been checked, in one place.
sourcesare the pages consulted; check a specific figure against those.sourceKindssays what each page is andbestSourceKindthe strongest of them, on the hierarchySourceKinddefines: a maker or standards-body page is evidence for a figure, a retailer or forum page is evidence the item exists.dataConfidenceis the 0 to 1 score set from what was actually sourced and never raised by hand.verifiedAtandverifiedFieldssay when a source was last read against the record and which fields it stated; null means the row is still seed knowledge.updatedAtandversionare the same cache signals the record carries at the top level. - string[]
The pages consulted when the record was compiled, as an array. Check a specific figure against these rather than against
dataConfidence. - object[]
What each cited page is, in
sourcesorder, on theSourceKindhierarchy. A host not in the source map isother, never guessed. - SourceKind | null
The strongest kind among the citations, or null when nothing is cited.
manufacturerorstandards_bodymeans a figure can be checked against an authority;retailerorcommunityalone means the record is still supported by copies of copies. - number | null
The 0 to 1 score set from what was actually sourced, never raised by hand. See the confidence bands in the docs.
- string | null
When a source was last read against this record. Null means the row is still seed knowledge.
- string[]
Which fields the source stated, as an array. Everything else on a verified row is still unverified. Null where no source has been read.
- string | null
Cartridges only: the page the drawing figures were taken from. Null on every other kind of record.
- string
When a served column last changed; the same value the record carries at the top level.
- string | null
The record's content version, equal to the top-level
version; equal versions mean equal data. - Manufacturer | null
Null when the record names a manufacturer id the catalog no longer holds.
- Category | null
Null when the record names a category id the catalog no longer holds.
- FirearmCaliber[]
Every cartridge this firearm is chambered for, primary first.
- string
Slug of the cartridge. Resolve against
/v1/calibers/{id}. - integer
Integer flag,
1on the chambering the firearm is normally sold in. A firearm may be chambered for several cartridges but has at most one primary. - string
Display name, as the maker writes it.
- string | null
NATO designation where the cartridge has one, e.g.
9mm NATO. Null otherwise. - number | null
Bullet diameter in millimetres.
- number | null
Case length in millimetres.
- string | null
Head type:
rimmed,rimless,semi_rimmed,rebated_rim,belted, plus historical values likecap_and_ball. Not the broad class. The registry saidpistol/rifle/shotgununtil the column was read, and it holds neither. - number | null
Case neck outside diameter in millimetres.
- number | null
Bottleneck cases only.
- number | null
Case base diameter in millimetres, ahead of the extractor groove.
- number | null
Rim diameter in millimetres.
- number | null
Rim thickness in millimetres.
- FirearmImage[]
Every image on file, silhouette first. Each carries an absolute, directly fetchable
url. - integer
Autoincrementing image id. Numeric, unlike the catalog slugs.
- string
Slug of the firearm this row belongs to.
- string
Absolute, directly fetchable URL.
- ImageType | null
Role of the image:
primary,gallery,thumbnail,svg,render. - string | null
Where the record came from: a curated entry, an inference, or an import.
- string | null
Licence the asset is held under, where one is recorded.
- MediaKind | null
What the asset is:
silhouette,render,photo,schematic,model./v1/firearms/{id}/media/{selector}addresses an asset by this. - string | null
Where the bytes live:
cdnfor a static path,r2for an upload we serve. - string | null
Who made the asset, where it is credited.
- string | null
Page the asset or document was taken from.
- string | null
Alt text, where one has been written. Null otherwise, so do not render an empty string.
- integer | null
Pixel width, where it is known.
- FirearmUser[]
Forces and agencies that have adopted it.
- integer
Autoincrementing row id.
- string
Slug of the firearm this row belongs to.
- string
The force, agency or organisation that adopted it.
- string | null
What kind of user:
military,police,civilian. - string | null
ISO 3166-1 alpha-2 code of the user's country.
- integer | null
Year of adoption, where it is known.
- string | null
What that user calls it, where it differs from the maker's name.
- FirearmSchematic[]
Exploded-view and parts diagrams on file, empty where none have been sourced.
- integer
Autoincrementing schematic id.
- string
Slug of the firearm this row belongs to.
- string
What the document is called.
- SchematicType
What a schematic document is.
- string
Absolute, directly fetchable URL.
- string | null
File format, e.g.
pdf. - string | null
Revision of the document, where the publisher versions it.
- string | null
Publisher of the document, often but not always the maker.
- string | null
Where the document came from.
- string | null
Page the asset or document was taken from.
- string | null
Who made the asset, where it is credited.
- string | null
Licence the asset is held under, where one is recorded.
- 400
VALIDATION_ERROR - 401
UNAUTHORIZED - 403
FORBIDDEN - 404
NOT_FOUND - 429
RATE_LIMITED - 500
INTERNAL_ERROR
Requires an API key with Builder tier or higher.
alternateNames, firingModes, conflicts, and productionNumbers are JSON-encoded strings. Parse them client-side.
conflicts contains objects with name, years, and sides (array of belligerent strings).
productionNumbers contains estimated_total (number), production_years (string), and notes (string).
The schematics array (blueprints, spec sheets) is included only for Studio tier or higher; it is omitted otherwise. See the Schematics endpoint for the full document shape.
- 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.