GunSpec

Interfaces

Interface standards resource for the GunSpec SDK. Wraps /v1/interfaces: the mount vocabulary every fit is computed from (thread:1/2x28, mag:stanag, rail:picatinny). Listing it is open; asking which firearms expose a standard is Studio.

Auth RequiredExplorer+

Every standard the vocabulary knows, optionally one kind only. Answers 304.

list(params?: ListInterfacesParams): Promise<APIResponse<InterfaceStandard[]>>
GET/v1/interfaces

  • stringheaderrequired

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

  • string

    One kind only

    Max length
    40
    Example

  • 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

Minimum tier
Explorer+
Monthly quota
200/mo
Rate limit
10/min
Daily cap
50

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.

Auth RequiredStudio+

Firearms that expose a standard at some position. Studio. The id is URL-encoded for you: thread:1/2x28 carries a colon and a slash that would otherwise be read as path separators.

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

  • stringheaderrequired

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

  • stringrequired

    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

    Accepts
    a kind-prefixed standard id such as thread:1/2x28
    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 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

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.