GunSpec

Compatibility

Fit is computed from mount interfaces, never from names. A firearm declares what it exposes at each position (muzzle thread, rails, optic cut, stock and grip interfaces, magazine well); an attachment declares what it requires; the engine matches the two, through a named adapter where one bridges them. A caliber, bore or minimum-barrel mismatch is never bridged and never inferred.

Every fit carries `source` and `confidence`, and they are the first two fields to read. source is the weakest evidence in the chain that produced the fit; confidence is capped by the weakest interface it went through. The values, strongest first:

  • curated: a person recorded this interface or this fit against the maker's page.
  • universal: the attachment requires nothing (a sling), so every firearm fits it.
  • inherited:parent: the interface came from the firearm's parent record.
  • inherited:platform: the interface came from a platform the firearm belongs to (an AK-100 default, a mil-spec AR-15 default).
  • inferred: the interface was derived by a script from the record's own fields, at 0.6 or below. Convention rows are the weakest inferred evidence and are labelled as such: where a firearm is tagged threaded or optics-ready but names no standard, the backfill applies industry convention (a thread by cartridge and country, an optic plate by the maker's system) at 0.5 to 0.6, with a convention: note on the interface row.

A retailer or an engineering consumer should treat `inferred`, and anything below a confidence they choose, as unverified. Pass min_confidence to hide fits computed through interfaces below that figure; nothing in a response presents an inferred or convention row as verified, and neither should a product page built on it. via[] names each interface the fit went through with its own source, so a fit can be audited hop by hop; GET /v1/firearms/{id}/interfaces lists every row with its source, confidence and inheritedFrom.

Browsing the catalog (/v1/attachments, /v1/attachments/{id}, /v1/interfaces) is open to any key. Everything that answers "does this go on that" is Studio, and a lower plan receives 403 SUBSCRIPTION_REQUIRED rather than an empty list, so never read an error as "nothing fits". fits= on the attachment list is the same computation wearing a query parameter and is gated the same way.

Authentifizierung erforderlichStudio+

The mount points a firearm exposes (muzzle thread, rails, optic cut, stock and grip interfaces, magazine well), resolved from its own rows, its parent chain and its platforms. Each row carries where it came from and a confidence, so an inferred claim is never mistaken for a verified one. This is what a builder UI draws its slot panel from.

GET/v1/firearms/{id}/interfaces

  • stringHeadererforderlich

    Ihr API-Schlüssel. Authorization: Bearer <key> wird ebenfalls akzeptiert.

  • stringerforderlich

    Firearm slug

    Akzeptiert
    a lowercase slug: letters, digits and hyphens
    Beispiel

  • object

    The response payload.

  • object

    A firearm, identified by slug and name.

  • string

    Slug of the firearm.

  • string

    Display name, as the maker writes it.

  • object[]

    Platforms this firearm belongs to, whose interfaces it inherits. Reached through its own memberships and its parent chain.

  • string

    Slug of the platform.

  • string

    Display name, as the maker writes it.

  • ResolvedInterface[]

    The mount interfaces resolved for this firearm, own rows first, then inherited.

  • string

    Where on the firearm the interface sits: muzzle, rear, top, bottom.

  • string

    Id of the interface standard, kind-prefixed, e.g. thread:1/2x28. Ids are never renamed; new spellings become aliases.

  • string

    Display name, as the maker writes it.

  • string

    What sort of interface it is: thread, rail, mag, stock_mount, optic_plate. Not a media kind: the shared registry filled this with silhouette/render until the consistency check caught it.

  • InterfaceSource

    Where an interface row on a firearm came from. curated is a person; inferred is the backfill, capped at 0.6 confidence; the inherited kinds came through the parent chain or a platform.

  • number

    How well evidenced this row is, 0 to 1. A minimum, not an average: an inferred row caps every fit computed through it, and min_confidence on the endpoint hides rows below a threshold.

  • string | null

    The parent firearm or platform this interface came from, or null when the firearm declares it itself.

  • string | null

    Free-text notes that do not belong in a specific field.

  • 400VALIDATION_ERRORValidation error
  • 401UNAUTHORIZEDAPI key required
  • 403FORBIDDENValid key, not permitted
  • 404NOT_FOUNDResource not found
  • 429RATE_LIMITEDRate limit exceeded
  • 500INTERNAL_ERRORUnexpected server error

Every row carries source and confidence. inherited:parent and inherited:platform rows name where they came from in inheritedFrom; inferred rows are at 0.6 or below and a convention: note marks the weakest of them.

A none:<kind> standard at a position means the firearm declares it has nothing there, which also stops a platform default from applying.

Mindeststufe
Studio+
Monatskontingent
150,000/mo
Anfragerate
120/min
Tageslimit
10,000

Die Werte gelten für die Mindeststufe dieses Endpunkts. Höhere Stufen erhöhen alle Limits.

Authentifizierung erforderlichStudio+

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.

GET/v1/firearms/{id}/attachments

  • stringHeadererforderlich

    Ihr API-Schlüssel. Authorization: Bearer <key> wird ebenfalls akzeptiert.

  • stringerforderlich

    Firearm slug

    Akzeptiert
    a lowercase slug: letters, digits and hyphens
    Beispiel

  • string

    Attachment category

    Max. Länge
    100
    Beispiel
  • string

    Manufacturer slug

    Max. Länge
    100
    Beispiel
  • stringstandardcompatible

    compatible (default) or all to include blocked candidates with blockedBy

    Akzeptiert
    Beispiel
  • numberstandard0

    Hide fits computed through interfaces below this confidence

    Bereich
    0 – 1
    Beispiel
  • string

    Restrict to one seller. me resolves to the vendor your key belongs to

    Max. Länge
    64
    Beispiel
  • boolean

    Drop anything that seller does not currently stock. Needs a resolvable vendor, and yields nothing without one

  • boolean

    Attach each item's live offers under offers, keyed by attachment id, so price and stock render beside fitment in one call

  • object

    The response payload.

  • object

    A firearm, identified by slug and name.

  • string

    Slug of the firearm.

  • string

    Display name, as the maker writes it.

  • object[]

    Platforms this firearm belongs to, whose interfaces it inherits.

  • string

    Slug of the platform.

  • string

    Display name, as the maker writes it.

  • ResolvedInterface[]

    The mount interfaces resolved for this firearm, own rows first, then inherited.

  • string

    Where on the firearm the interface sits: muzzle, rear, top, bottom.

  • string

    Id of the interface standard, kind-prefixed, e.g. thread:1/2x28. Ids are never renamed; new spellings become aliases.

  • string

    Display name, as the maker writes it.

  • string

    What sort of interface it is: thread, rail, mag, stock_mount, optic_plate. Not a media kind: the shared registry filled this with silhouette/render until the consistency check caught it.

  • InterfaceSource

    Where an interface row on a firearm came from. curated is a person; inferred is the backfill, capped at 0.6 confidence; the inherited kinds came through the parent chain or a platform.

  • number

    How well evidenced this row is, 0 to 1. A minimum, not an average: an inferred row caps every fit computed through it, and min_confidence on the endpoint hides rows below a threshold.

  • string | null

    The parent firearm or platform this interface came from, or null when the firearm declares it itself.

  • string | null

    Free-text notes that do not belong in a specific field.

  • object[]

    Fitting attachments grouped by category, so a builder UI renders one panel per slot.

  • string

    Attachment category this group holds.

  • AttachmentFit[]

    The rows this response carries.

  • object

    Fitting attachments per category

  • object | null

    With with_offers=true, live offers keyed by attachment id, the same rows /v1/attachments/{id}/offers returns; null when not requested.

  • integer

    Total records matching the query across every page.

  • 400VALIDATION_ERRORValidation error
  • 401UNAUTHORIZEDAPI key required
  • 403FORBIDDENValid key, not permitted
  • 404NOT_FOUNDResource not found
  • 429RATE_LIMITEDRate limit exceeded
  • 500INTERNAL_ERRORUnexpected server error

Read source and confidence on every item before anything else. source is the weakest evidence behind the fit (curated, universal, inherited:parent, inherited:platform or inferred) and confidence is capped by the weakest interface it went through; via[] names each interface with its own source. inferred means a script derived the interface the fit went through; a product page should say so or hide it.

min_confidence=0.7 is the usual retail setting: it drops every fit that went through a convention row.

A retailer adds vendor=me&only_offered=true&with_offers=true to answer "what fits this gun, that I stock, at what price" in one call.

Mindeststufe
Studio+
Monatskontingent
150,000/mo
Anfragerate
120/min
Tageslimit
10,000

Die Werte gelten für die Mindeststufe dieses Endpunkts. Höhere Stufen erhöhen alle Limits.

Authentifizierung erforderlichExplorer+

The attachment catalog: stocks, grips, handguards, optics, mounts, muzzle devices, suppressors, magazines, lights, bipods, slings, triggers and adapters. requires=<standard> narrows to what needs a given interface. Browsing is open to any key. fits=<firearm> runs the compatibility engine and therefore needs Studio, the same as the dedicated fit endpoints.

GET/v1/attachments

  • stringHeadererforderlich

    Ihr API-Schlüssel. Authorization: Bearer <key> wird ebenfalls akzeptiert.

  • integerstandard1

    Page number, from 1 to 10,000

    Bereich
    1 – 10000
    Beispiel
  • integerstandard20

    Items per page (max 100)

    Bereich
    1 – 100
    Beispiel
  • string

    Attachment category

    Max. Länge
    100
    Beispiel
  • string

    Manufacturer slug

    Max. Länge
    100
    Beispiel
  • string

    Only attachments that fit this firearm

    Max. Länge
    100
    Beispiel
  • string

    Only attachments requiring this interface standard

    Max. Länge
    80
    Beispiel
  • string

    Substring match on name

    Max. Länge
    60
    Beispiel
  • boolean

    Only factory parts (true) or only aftermarket (false)

  • string

    Production status. The catalog keeps discontinued parts on purpose, so a store front asks for in_production

    Akzeptiert
    Beispiel
  • string

    Restrict to one seller. me resolves to the vendor your key belongs to

    Max. Länge
    64
    Beispiel
  • boolean

    Drop anything that seller does not currently stock. Needs a resolvable vendor, and yields nothing without one

  • Attachment[]

    One page of results

  • string

    URL-safe slug identifying the part, e.g. magpul-zhukov-s-stock.

  • string

    Display name, as the maker writes it.

  • string

    What kind of part it is: stock, optic, muzzle, magazine, grip.

  • ManufacturerRef | null

    Who makes it.

  • string | null

    The maker's own SKU, where they publish one.

  • number | null

    Weight in grams.

  • number | null

    Length in millimetres.

  • integer | null

    Magazines only

  • number | null

    Suppressors and muzzle devices

  • string | null

    The mount position this part occupies, or null when it takes none.

  • boolean

    True when the part ships on the firearm from the factory. A factory part carries no statMods or specDeltas, because the firearm's own figures already include it.

  • string | null

    The firearm this is the factory part for, when isFactoryPart is true.

  • object

    Editorial adjustments to the game statistics once fitted, keyed by stat. Same status as game_* on a firearm: not measured.

  • object

    Specification changes once fitted, keyed by field: a folding stock changes the folded length, for example.

  • string | null

    Absolute URL of the manufacturer product photo on the assets CDN, ready to render. Null when no photo has been sourced yet.

  • AttachmentStatus

    Production status of an attachment. limited corresponds to a firearm's limited_production.

  • 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

    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.

  • string[]

    Standard ids this adds to the firearm once fitted. Resolved to { id, name, kind } rows on /v1/attachments/{id}.

  • number

    Current page number

  • number

    Items per page

  • number

    Total matching records (Builder and above)

  • 400VALIDATION_ERRORValidation error
  • 401UNAUTHORIZEDAPI key required
  • 403FORBIDDENValid key, not permitted
  • 429RATE_LIMITEDRate limit exceeded
  • 500INTERNAL_ERRORUnexpected server error

Mindeststufe
Explorer+
Monatskontingent
200/mo
Anfragerate
10/min
Tageslimit
50

Die Werte gelten für die Mindeststufe dieses Endpunkts. Höhere Stufen erhöhen alle Limits.

Dieser Aufruf beantwortet bedingte Anfragen. Speichern Sie das ETag einer Antwort und senden Sie es als If-None-Match zurueck: ein unveraenderter Datensatz liefert 304 Not Modified ohne Body. Das zaehlt auf Ihr Minutenlimit, aber nicht auf Ihr Tageskontingent.

Authentifizierung erforderlichExplorer+

One attachment with its requirement groups (any of the standards within a group, every group across groups), what it provides once fitted, its caliber ratings and its stat and spec effects.

GET/v1/attachments/{id}

  • stringHeadererforderlich

    Ihr API-Schlüssel. Authorization: Bearer <key> wird ebenfalls akzeptiert.

  • stringerforderlich

    Attachment slug

    Akzeptiert
    a lowercase slug: letters, digits and hyphens
    Beispiel

  • AttachmentDetail

    The response payload

  • string

    URL-safe slug identifying the part, e.g. magpul-zhukov-s-stock.

  • string

    Display name, as the maker writes it.

  • string

    What kind of part it is: stock, optic, muzzle, magazine, grip.

  • ManufacturerRef | null

    Who makes it.

  • string | null

    The maker's own SKU, where they publish one.

  • number | null

    Weight in grams.

  • number | null

    Length in millimetres.

  • integer | null

    Magazines only

  • number | null

    Suppressors and muzzle devices

  • string | null

    The mount position this part occupies, or null when it takes none.

  • boolean

    True when the part ships on the firearm from the factory. A factory part carries no statMods or specDeltas, because the firearm's own figures already include it.

  • string | null

    The firearm this is the factory part for, when isFactoryPart is true.

  • object

    Editorial adjustments to the game statistics once fitted, keyed by stat. Same status as game_* on a firearm: not measured.

  • object

    Specification changes once fitted, keyed by field: a folding stock changes the folded length, for example.

  • string | null

    Absolute URL of the manufacturer product photo on the assets CDN, ready to render. Null when no photo has been sourced yet.

  • AttachmentStatus

    Production status of an attachment. limited corresponds to a firearm's limited_production.

  • 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

    When a field we serve last changed.

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

  • string | null

    Prose summary of the record, where one has been written.

  • object

    Category-specific facts

  • string[]

    JSON array of the pages the figures were taken from, as a string.

  • string | null

    Page the asset or document was taken from.

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

  • integer | null

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

  • StandardRef[][]

    Requirement groups. One standard from each group must be present on the firearm. Empty means universal fit.

  • StandardRef[]

    Standards this adds to the firearm once fitted, resolved to { id, name, kind }.

  • string

    Kind-prefixed standard id.

  • string

    Display name, as the maker writes it.

  • string

    What sort of interface it is.

  • object[]

    What this part is rated for, where being rated matters, meaning suppressors and magazines. The caliber, bore and minimum-barrel gate is checked against these and is never bridged or inferred.

  • string

    Slug of the cartridge. Resolve against /v1/calibers/{id}.

  • string | null

    Display name of the cartridge.

  • number | null

    Shortest barrel in millimetres this part is rated for in that cartridge. Null where the maker states none.

  • boolean

    Whether the maker rates it for automatic fire in that cartridge.

  • string | null

    Free-text notes that do not belong in a specific field.

  • integer

    Number of firearms with a curated override for this attachment

  • string

    When the record was first added, YYYY-MM-DD HH:MM:SS in UTC.

  • 400VALIDATION_ERRORValidation error
  • 401UNAUTHORIZEDAPI key required
  • 403FORBIDDENValid key, not permitted
  • 404NOT_FOUNDResource not found
  • 429RATE_LIMITEDRate limit exceeded
  • 500INTERNAL_ERRORUnexpected server error

Mindeststufe
Explorer+
Monatskontingent
200/mo
Anfragerate
10/min
Tageslimit
50

Die Werte gelten für die Mindeststufe dieses Endpunkts. Höhere Stufen erhöhen alle Limits.

Dieser Aufruf beantwortet bedingte Anfragen. Speichern Sie das ETag einer Antwort und senden Sie es als If-None-Match zurueck: ein unveraenderter Datensatz liefert 304 Not Modified ohne Body. Das zaehlt auf Ihr Minutenlimit, aber nicht auf Ihr Tageskontingent.

Authentifizierung erforderlichStudio+

The reverse lookup: every catalogued firearm the attachment fits, with fit type, confidence and reason. Candidates come from the interface index and are confirmed by the same engine as the forward endpoint, so the two never disagree. meta.universal is true for an item with no requirements and no ratings (a sling), in which case the whole catalog is listed; meta.truncated is true when the candidate set hit its cap.

GET/v1/attachments/{id}/firearms

  • stringHeadererforderlich

    Ihr API-Schlüssel. Authorization: Bearer <key> wird ebenfalls akzeptiert.

  • stringerforderlich

    Attachment slug

    Akzeptiert
    a lowercase slug: letters, digits and hyphens
    Beispiel

  • integerstandard1

    Page number, from 1 to 10,000

    Bereich
    1 – 10000
    Beispiel
  • integerstandard20

    Items per page (max 100)

    Bereich
    1 – 100
    Beispiel

  • object[]

    One page of results

  • string

    Slug of the firearm the attachment fits.

  • string

    Display name, as the maker writes it.

  • FitType | null

    How it fits: direct on the firearm own interface, adapter through the part named in adapter, or curated from an override on the attachment. Null when it does not fit.

  • FitSource | null

    The weakest evidence behind the fit.

  • number

    How well evidenced this row is, 0 to 1. A minimum, not an average: an inferred row caps every fit computed through it, and min_confidence on the endpoint hides rows below a threshold.

  • string

    Plain-language account of why it fits, safe to show in a UI.

  • FitVia[]

    The interfaces that satisfied the attachment requirements, with where each came from.

  • string

    Where on the firearm the interface sits: muzzle, rear, top, bottom.

  • string

    Id of the interface standard, kind-prefixed, e.g. thread:1/2x28. Ids are never renamed; new spellings become aliases.

  • InterfaceSource

    Where an interface row on a firearm came from. curated is a person; inferred is the backfill, capped at 0.6 confidence; the inherited kinds came through the parent chain or a platform.

  • string | null

    The adapter that bridges this fit, or null when none is needed. Threads, magazine wells and the caliber gate are never bridged.

  • AdapterRef | null

    The adapter the fit goes through, when fitType is adapter. Null for a direct or curated fit.

  • ManufacturerRef | null

    Who makes it.

  • string | null

    Display name of the firearm category.

  • InlineMediaItem[]

    Renders and photographs of the firearm, ordered so images[0] is the frame to show at rest.

  • integer

    Autoincrementing image id.

  • string

    Absolute, directly fetchable URL.

  • MediaKind

    What kind of asset a media row is.

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

  • integer | null

    Pixel height, where it is known.

  • string | null

    Line-art silhouette, or null where none has been drawn.

  • integer

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

  • number

    Current page number

  • number

    Items per page

  • number

    Total matching records (Builder and above)

  • 400VALIDATION_ERRORValidation error
  • 401UNAUTHORIZEDAPI key required
  • 403FORBIDDENValid key, not permitted
  • 404NOT_FOUNDResource not found
  • 429RATE_LIMITEDRate limit exceeded
  • 500INTERNAL_ERRORUnexpected server error

Every row carries source and confidence with the same meaning as the forward endpoint: source is the weakest evidence behind the fit and inferred is unverified. Confirmed by the same engine, so the two never disagree about a pair.

meta.universal is true for an item that requires nothing (a sling); every listed fit then carries source: universal.

Mindeststufe
Studio+
Monatskontingent
150,000/mo
Anfragerate
120/min
Tageslimit
10,000

Die Werte gelten für die Mindeststufe dieses Endpunkts. Höhere Stufen erhöhen alle Limits.

Authentifizierung erforderlichExplorer+

The controlled vocabulary of mount interfaces: rails, muzzle threads, optic footprints, stock and grip mounts, handguard mounts, magazine wells, side mounts, sight dovetails, bipod studs, sling points, trigger pockets and charging handles. Ids are kind-prefixed and stable.

GET/v1/interfaces

  • stringHeadererforderlich

    Ihr API-Schlüssel. Authorization: Bearer <key> wird ebenfalls akzeptiert.

  • string

    One kind only

    Max. Länge
    40
    Beispiel

  • InterfaceStandard[]

    The response payload.

  • string

    Kind-prefixed standard id, e.g. thread:1/2x28. URL-encode it when addressing /v1/interfaces/{id}/firearms.

  • string

    What sort of interface it is: thread, rail, mag, stock_mount, optic_plate.

  • string

    Display name, as the maker writes it.

  • string[]

    JSON array of alternative spellings of this standard id, as a string. Ids are never renamed; a new spelling becomes an alias.

  • string | null

    Free-text notes that do not belong in a specific field.

  • 400VALIDATION_ERRORValidation error
  • 401UNAUTHORIZEDAPI key required
  • 403FORBIDDENValid key, not permitted
  • 429RATE_LIMITEDRate limit exceeded
  • 500INTERNAL_ERRORUnexpected server error

Mindeststufe
Explorer+
Monatskontingent
200/mo
Anfragerate
10/min
Tageslimit
50

Die Werte gelten für die Mindeststufe dieses Endpunkts. Höhere Stufen erhöhen alle Limits.

Dieser Aufruf beantwortet bedingte Anfragen. Speichern Sie das ETag einer Antwort und senden Sie es als If-None-Match zurueck: ein unveraenderter Datensatz liefert 304 Not Modified ohne Body. Das zaehlt auf Ihr Minutenlimit, aber nicht auf Ihr Tageskontingent.

Authentifizierung erforderlichStudio+

Every firearm that exposes the interface standard, directly or through a platform, confirmed through the resolver so a member that has declared none for the position is not listed. The id is URL-encoded: thread%3A1%2F2x28.

GET/v1/interfaces/{id}/firearms

  • stringHeadererforderlich

    Ihr API-Schlüssel. Authorization: Bearer <key> wird ebenfalls akzeptiert.

  • stringerforderlich

    Interface standard id. URL-encode it in the path: the colon and any slash must be escaped, so thread:1/2x28 is sent as thread%3A1%2F2x28

    Akzeptiert
    a kind-prefixed standard id such as thread:1/2x28
    Beispiel

  • integerstandard1

    Page number, from 1 to 10,000

    Bereich
    1 – 10000
    Beispiel
  • integerstandard20

    Items per page (max 100)

    Bereich
    1 – 100
    Beispiel

  • object[]

    One page of results

  • string

    Slug of the firearm exposing the standard.

  • string

    Display name, as the maker writes it.

  • string

    Where on the firearm the interface sits: muzzle, rear, top, bottom.

  • InterfaceSource

    Where an interface row on a firearm came from. curated is a person; inferred is the backfill, capped at 0.6 confidence; the inherited kinds came through the parent chain or a platform.

  • number

    How well evidenced this row is, 0 to 1. A minimum, not an average: an inferred row caps every fit computed through it, and min_confidence on the endpoint hides rows below a threshold.

  • ManufacturerRef | null

    Who makes it.

  • string | null

    Display name of the firearm category.

  • InlineMediaItem[]

    Renders and photographs of the firearm, ordered so images[0] is the frame to show at rest.

  • integer

    Autoincrementing image id.

  • string

    Absolute, directly fetchable URL.

  • MediaKind

    What kind of asset a media row is.

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

  • integer | null

    Pixel height, where it is known.

  • string | null

    Line-art silhouette, or null where none has been drawn.

  • integer

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

  • number

    Current page number

  • number

    Items per page

  • number

    Total matching records (Builder and above)

  • 400VALIDATION_ERRORValidation error
  • 401UNAUTHORIZEDAPI key required
  • 403FORBIDDENValid key, not permitted
  • 404NOT_FOUNDResource not found
  • 429RATE_LIMITEDRate limit exceeded
  • 500INTERNAL_ERRORUnexpected server error

Mindeststufe
Studio+
Monatskontingent
150,000/mo
Anfragerate
120/min
Tageslimit
10,000

Die Werte gelten für die Mindeststufe dieses Endpunkts. Höhere Stufen erhöhen alle Limits.

Authentifizierung erforderlichStudio+

Groups of firearms that share mount interfaces by construction (AKM-pattern stamped receivers, mil-spec AR-15s, Gen5 9mm Glocks). A platform's default interfaces are inherited by every member unless the member declares its own for that position.

GET/v1/platforms

  • stringHeadererforderlich

    Ihr API-Schlüssel. Authorization: Bearer <key> wird ebenfalls akzeptiert.

  • object[]

    The response payload.

  • string

    Slug of the platform.

  • string

    Display name, as the maker writes it.

  • string | null

    Prose summary of the record, where one has been written.

  • integer

    How many firearms belong to the platform.

  • 400VALIDATION_ERRORValidation error
  • 401UNAUTHORIZEDAPI key required
  • 403FORBIDDENValid key, not permitted
  • 429RATE_LIMITEDRate limit exceeded
  • 500INTERNAL_ERRORUnexpected server error

Mindeststufe
Studio+
Monatskontingent
150,000/mo
Anfragerate
120/min
Tageslimit
10,000

Die Werte gelten für die Mindeststufe dieses Endpunkts. Höhere Stufen erhöhen alle Limits.

Dieser Aufruf beantwortet bedingte Anfragen. Speichern Sie das ETag einer Antwort und senden Sie es als If-None-Match zurueck: ein unveraenderter Datensatz liefert 304 Not Modified ohne Body. Das zaehlt auf Ihr Minutenlimit, aber nicht auf Ihr Tageskontingent.

Authentifizierung erforderlichStudio+

A platform with its default interfaces and its member firearms.

GET/v1/platforms/{id}

  • stringHeadererforderlich

    Ihr API-Schlüssel. Authorization: Bearer <key> wird ebenfalls akzeptiert.

  • stringerforderlich

    Platform slug

    Akzeptiert
    a lowercase slug: letters, digits and hyphens
    Beispiel

  • object

    The response payload.

  • string

    Slug of the platform.

  • string

    Display name, as the maker writes it.

  • string | null

    Prose summary of the record, where one has been written.

  • object[]

    The mount interfaces resolved for this firearm, own rows first, then inherited.

  • string

    Where on the firearm the interface sits: muzzle, rear, top, bottom.

  • string

    Id of the interface standard, kind-prefixed, e.g. thread:1/2x28. Ids are never renamed; new spellings become aliases.

  • string

    Display name, as the maker writes it.

  • string

    What the asset is: silhouette, render, photo, schematic, model. /v1/firearms/{id}/media/{selector} addresses an asset by this.

  • number

    How well evidenced this row is, 0 to 1. A minimum, not an average: an inferred row caps every fit computed through it, and min_confidence on the endpoint hides rows below a threshold.

  • string | null

    Free-text notes that do not belong in a specific field.

  • object[]

    The firearms belonging to this platform, which inherit its default interfaces.

  • string

    Slug of the firearm.

  • string

    Display name, as the maker writes it.

  • 400VALIDATION_ERRORValidation error
  • 401UNAUTHORIZEDAPI key required
  • 403FORBIDDENValid key, not permitted
  • 404NOT_FOUNDResource not found
  • 429RATE_LIMITEDRate limit exceeded
  • 500INTERNAL_ERRORUnexpected server error

Mindeststufe
Studio+
Monatskontingent
150,000/mo
Anfragerate
120/min
Tageslimit
10,000

Die Werte gelten für die Mindeststufe dieses Endpunkts. Höhere Stufen erhöhen alle Limits.

Dieser Aufruf beantwortet bedingte Anfragen. Speichern Sie das ETag einer Antwort und senden Sie es als If-None-Match zurueck: ein unveraenderter Datensatz liefert 304 Not Modified ohne Body. Das zaehlt auf Ihr Minutenlimit, aber nicht auf Ihr Tageskontingent.