List attachments that fit a firearm
Every catalogued attachment that fits the firearm, grouped by category. A retailer embeds this on a product page with vendor=me&only_offered=true&with_offers=true, which answers "what fits this gun, that I stock, at what price" in one request. Full detail: each with how it fits (direct, through a named adapter, or curated), which interface satisfied it, and a confidence. include=all adds the candidates that do not fit with the reason they were blocked, which is how a builder shows a greyed-out part. Rated items (suppressors, magazines) pass a caliber, bore and minimum-barrel gate that no adapter can bridge.
Requires Studio tier or higher.
Request
- Base URL: https://api.gunspec.io
- URL: https://api.gunspec.io/v1/firearms/{id}/attachments
- Auth: one of:
- API key in header X-API-Key
- HTTP bearer
Path parameters
Firearm slug
Query parameters
Attachment category
Manufacturer slug
compatible (default) or all to include blocked candidates with blockedBy
Hide fits computed through interfaces below this confidence
Restrict to one seller. me resolves to the vendor your key belongs to
Drop anything that seller does not currently stock. Needs a resolvable vendor, and yields nothing without one
Attach each item's live offers under offers, keyed by attachment id, so price and stock render beside fitment in one call
Response
List attachments that fit a firearm
Example response
{
"success": true,
"data": {
"firearm": {
"id": "ak-74m",
"name": "AK-74M"
},
"platforms": [
{
"id": "ak-100",
"name": "AK-100 series (AK-74M pattern)"
}
],
"interfaces": [
{
"position": "muzzle",
"standardId": "thread:m24x1.5-rh",
"name": "M24x1.5 right hand (AK-74, AK-100 series)",
"kind": "thread",
"confidence": 1
}
],
"groups": [
{
"category": "stock",
"items": [
{
"id": "magpul-zhukov-s-stock",
"name": "Zhukov-S Stock",
"category": "stock",
"manufacturer": {
"id": "magpul",
"name": "Magpul Industries"
},
"modelNumber": "MAG585",
"weightG": 490,
"lengthMm": 240,
"statMods": {
"mobility": 3,
"recoil_control": 2
},
"specDeltas": {
"folded_length_mm": 705
},
"imageUrl": "https://assets.gunspec.io/content/attachments/optic/aimpoint-acro-p-2/01-product.webp",
"dataConfidence": 0.9,
"updatedAt": "2026-09-07 12:56:03",
"version": "e27e61b4b373f5a621d6ae5c67d521096131f2cf56300a1b2c3d4e5f6a7b8c9d",
"provenance": {
"sources": [
"https://www.glock.com/en/products/pistols/g17-gen5"
],
"sourceKinds": [
{
"url": "https://www.glock.com/en/products/pistols/g17-gen5",
"kind": "manufacturer",
"archivedFrom": null,
"rank": 0,
"tier": "authority",
"basis": "declared",
"evidence": null
}
],
"makerSource": "https://www.glock.com/en/products/pistols/g17-gen5",
"evidence": "maker",
"checks": {
"raised": 3,
"history": [
{
"task": "verify:firearms:glock-g17-gen5",
"number": 1204,
"check": "quality:firearm-weight-fits-its-size",
"kind": "verify",
"agent": "redback",
"worker": "redback-046535",
"status": "resolved",
"decidedAt": "2026-09-25 07:42:39",
"proposed": "Read https://us.glock.com/en/pistols/g17-gen5: agrees on barrel_length, weight.",
"fields": [
"barrel_length_mm",
"weight_empty_g"
],
"sources": [
"https://us.glock.com/en/pistols/g17-gen5"
],
"finding": {
"why": "2.22 g/cm3 against a submachine-gun / carbon-steel median of 0.64; check the weight and the dimensions",
"evidence": {
"apparentDensity": 2.218,
"categoryMedian": 0.635
}
}
}
]
},
"dataConfidence": 0.95,
"verifiedAt": "2026-09-08",
"verifiedFields": [
"barrel_length_mm",
"weight_empty_g"
],
"updatedAt": "2026-09-08 04:10:22",
"version": "ba5c1d9e06c279a5"
},
"provides": [],
"fits": true,
"via": [
{
"position": "rear",
"standardId": "stock:ak-100-folder"
}
],
"adapter": {
"id": "rs-regulate-ak-303m",
"name": "RS Regulate AK-303M"
},
"confidence": 1,
"reason": "Mounts on AK-100 series polymer side-folder trunnion (rear)",
"routes": [
{
"fitType": "adapter",
"adapter": {
"id": "rs-regulate-ak-303m",
"name": "RS Regulate AK-303M"
},
"via": [
{
"position": "rear",
"standardId": "stock:ak-100-folder"
}
],
"confidence": 1,
"adapterConfidence": 0.95,
"caveats": [
"Needs 30 mm rings, not listed here"
]
}
],
"caveats": []
}
]
}
],
"counts": {
"stock": 4,
"optic": 12,
"suppressor": 1
},
"total": 42
}
}Changes
No recorded changes to this operation across all 1 revision of this API.