GunSpec

Calibers

Browse ammunition calibers with ballistic data, dimensions, and linked firearms. Useful for filtering, cross-referencing, and ammunition compatibility checks.

Auth RequiredBuilder+

Walks the parent-cartridge links upward, returning the lineage a cartridge was derived from (e.g. .300 Blackout back to .223 Remington).

GET/v1/calibers/{id}/parent-chain

  • stringheaderrequired

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

  • stringrequired

    Caliber slug

    Accepts
    a lowercase slug: letters, digits and hyphens
    Example

  • Caliber[]

    The response payload.

  • string

    URL-safe slug identifying the cartridge, e.g. 9x19mm-parabellum.

  • string

    Display name, as the maker writes it.

  • string | null

    JSON array of aliases

  • string | null

    NATO designation where the cartridge has one, e.g. 9mm NATO. Null otherwise.

  • number | null

    Bullet diameter in millimetres.

  • 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.

  • number | null

    Case length in millimetres.

  • number | null

    Overall length in millimetres, stock extended where it folds or collapses.

  • number | null

    Typical projectile length.

  • number | null

    Maximum average pressure in megapascals, as the standards body specifies it.

  • number | null

    The same pressure in pounds per square inch, converted.

  • number | null

    Representative bullet weight in grams. Divide by 0.0648 for grains.

  • number | null

    Representative muzzle velocity in metres per second.

  • number | null

    Representative muzzle energy in joules.

  • string | null

    Primer size and type, e.g. small_pistol, large_rifle, rimfire.

  • string | null

    Head type: rimmed, rimless, semi_rimmed, rebated_rim, belted, plus historical values like cap_and_ball. Not the broad class. The registry said pistol/rifle/shotgun until the column was read, and it holds neither.

  • string | null

    Case profile: straight, bottleneck, tapered, belted.

  • string | null

    What the case is made of: brass, steel, aluminium, polymer.

  • string | null

    none is a blank.

  • string | null

    Bullet shape: fmj, hollow_point, soft_point, spitzer, round_nose.

  • string | null

    What seals the case mouth; a blank is a star crimp.

  • string | null

    Paint that identifies the load: crimp lacquer on a blank, tip colour on a military round.

  • string | null

    What that colour signifies, where the marking is a standard one.

  • string | null

    The cartridge this one was derived from, or null. A wildcat and its parent case, for example.

  • integer | null

    Year it entered production or service. Null where the date is disputed or unknown.

  • string | null

    Person or team credited with the design, where it is known.

  • string | null

    Page the dimensions were read from.

  • string | null

    The standards body whose figures these are (SAAMI, CIP), where the source names one.

  • 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 sources to verify an individual number.

  • string | null

    When a person last checked this record against its source. Null means nobody has: the row is model knowledge until then.

  • string | null

    JSON array of the fields the source stated.

  • string

    When the record was first added, YYYY-MM-DD HH:MM:SS in 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. sources are the pages consulted; check a specific figure against those. sourceKinds says what each page is and bestSourceKind the strongest of them, on the hierarchy SourceKind defines: a maker or standards-body page is evidence for a figure, a retailer or forum page is evidence the item exists. dataConfidence is the 0 to 1 score set from what was actually sourced and never raised by hand. verifiedAt and verifiedFields say when a source was last read against the record and which fields it stated; null means the row is still seed knowledge. updatedAt and version are 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 sources order, on the SourceKind hierarchy. A host not in the source map is other, never guessed.

  • SourceKind | null

    The strongest kind among the citations, or null when nothing is cited. manufacturer or standards_body means a figure can be checked against an authority; retailer or community alone 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.

  • 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.

The first item in the array is the requested caliber; subsequent items are ancestors.

Traversal stops at 20 levels or when a caliber with no parent is reached.

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.