GunSpec

Attachments

Resource class for attachments and their compatibility.

Auth RequiredStudio+

List the firearms an attachment fits, with how each fit was reached. Studio.

getFirearms(id: string, params?: PaginationParams): Promise<PaginatedResponse<AttachmentFirearmFit>>
GET/v1/attachments/{id}/firearms

  • stringheaderrequired

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

  • stringrequired

    Attachment slug

    Accepts
    a lowercase slug: letters, digits and hyphens
    Example

  • integerdefault1

    Page number, from 1 to 10,000

    Range
    1 – 10000
    Example
  • integerdefault20

    Items per page (max 100)

    Range
    1 – 100
    Example

  • 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

Minimum tier
Studio+
Monthly quota
150,000/mo
Rate limit
120/min
Daily cap
10,000

Figures shown are for this endpoint's minimum tier. Higher tiers raise every limit.