GunSpec

Content

Public, key-free reads for GunSpec editorial content: blog posts and the product changelog. Both return only published entries and support pagination and category filtering. Use them to embed news, release notes, or articles directly in your own app.

Authentifizierung optionalExplorer+

Returns published product changelog entries, newest first. Also available as RSS at /changelog.xml.

GET/v1/changelog

  • stringHeader

    Optional. Ohne Schlüssel antwortet dieser Endpunkt nach der öffentlichen Richtlinie; ein Schlüssel erhöht Ihre Limits und schaltet planabhängige Felder frei. 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

    Filter by entry category

    Akzeptiert
    Max. Länge
    60

  • ChangelogEntry[]

    One page of results

  • string

    Slug of the entry, taken from the file it was authored in.

  • string

    Entry headline.

  • string

    Entry body, in Markdown.

  • string | null

    What kind of change: feature, improvement, bugfix, data, breaking.

  • string

    When it was published, ISO 8601.

  • integer

    Integer flag, 1 when the entry is live. The public feed only returns published entries, so this is 1 on every row a consumer sees.

  • string

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

  • string

    When it last changed, ISO 8601.

  • number

    Current page number

  • number

    Items per page

  • number

    Total matching records (Builder and above)

  • 400VALIDATION_ERRORValidation error
  • 429RATE_LIMITEDRate limit exceeded
  • 500INTERNAL_ERRORUnexpected server error

No API key required. Only published entries are returned.

Categories: feature, improvement, bugfix, data, breaking.

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.

Authentifizierung optionalExplorer+

Returns a single changelog entry.

GET/v1/changelog/{id}

  • stringHeader

    Optional. Ohne Schlüssel antwortet dieser Endpunkt nach der öffentlichen Richtlinie; ein Schlüssel erhöht Ihre Limits und schaltet planabhängige Felder frei. Authorization: Bearer <key> wird ebenfalls akzeptiert.

  • stringerforderlich

    Changelog entry id

    Beispiel

  • ChangelogEntry

    The response payload

  • string

    Slug of the entry, taken from the file it was authored in.

  • string

    Entry headline.

  • string

    Entry body, in Markdown.

  • string | null

    What kind of change: feature, improvement, bugfix, data, breaking.

  • string

    When it was published, ISO 8601.

  • integer

    Integer flag, 1 when the entry is live. The public feed only returns published entries, so this is 1 on every row a consumer sees.

  • string

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

  • string

    When it last changed, ISO 8601.

  • 400VALIDATION_ERRORValidation error
  • 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.

Authentifizierung optionalExplorer+

Returns published posts about the service, pinned first and then newest. This is the editorial feed behind gunspec.io/updates: what is happening with the catalogue, the platform or the company, and why. /v1/changelog is the separate, narrower record of what shipped.

GET/v1/updates

  • stringHeader

    Optional. Ohne Schlüssel antwortet dieser Endpunkt nach der öffentlichen Richtlinie; ein Schlüssel erhöht Ihre Limits und schaltet planabhängige Felder frei. Authorization: Bearer <key> wird ebenfalls akzeptiert.

  • integerstandard1

    Page number, from 1 to 10,000

    Bereich
    1 – 10000
    Beispiel
  • integerstandard20

    Updates per page

    Bereich
    1 – 50
    Beispiel
  • string

    Filter by what the post is about

    Akzeptiert

  • SiteUpdate[]

    A dated post about the service: what is happening with the catalogue, the platform or the company, and why. Distinct from /v1/changelog, which records what shipped, and from a site notice, which is one line of chrome.

  • string

    The slug, and the URL: gunspec.io/updates/{id}.

  • string

    The headline, as the post is listed.

  • string

    One or two sentences under the headline, for a list or a feed.

  • UpdateKind

    What a site update is about: the catalogue, the platform, a policy, the company, or an incident.

  • UpdateBlock[]

    The post, as typed blocks in reading order rather than markup: see UpdateBlock.

  • UpdateBlockType

    The kind of block in a site update body. Each maps to a renderer on the website.

  • string

    The words, on a paragraph, heading or quote.

  • string[]

    The entries of a list.

  • boolean

    Whether a list is numbered.

  • string

    Who a quote is from.

  • string

    The source of a code block.

  • string

    How to highlight a code block.

  • UpdateFigure

    The figure beside an update. Either a picture, or a character-field pattern the website draws itself: most posts have no photograph, and a named drawing is the honest alternative to a stock image. Read kind to tell them apart.

  • string

    The line under a figure.

  • UpdateFigure

    The figure beside an update. Either a picture, or a character-field pattern the website draws itself: most posts have no photograph, and a named drawing is the honest alternative to a stock image. Read kind to tell them apart.

  • string

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

  • string

    Where the picture is. Present when kind is image.

  • string

    What the picture shows. Present when kind is image.

  • UpdateGlyphPattern

    A character-field pattern an update may name in place of a photograph. The website draws it.

  • string

    Seeds the drawing. The same seed always draws the same field, so a post keeps its figure between loads.

  • string[]

    What the words pattern spells. Ignored by the others.

  • string | null

    The day the post is dated, as YYYY-MM-DD. A later edit does not re-date it.

  • integer

    Held at the top of the list regardless of date.

  • number

    Current page number

  • number

    Items per page

  • number

    Total matching records (Builder and above)

  • 400VALIDATION_ERRORValidation error
  • 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.

Authentifizierung optionalExplorer+

Returns one published post, with its body blocks.

GET/v1/updates/{id}

  • stringHeader

    Optional. Ohne Schlüssel antwortet dieser Endpunkt nach der öffentlichen Richtlinie; ein Schlüssel erhöht Ihre Limits und schaltet planabhängige Felder frei. Authorization: Bearer <key> wird ebenfalls akzeptiert.

  • stringerforderlich

    The update slug

    Akzeptiert
    a lowercase slug: letters, digits and hyphens
    Beispiel

  • object

    The response payload.

  • SiteUpdate

    A dated post about the service: what is happening with the catalogue, the platform or the company, and why. Distinct from /v1/changelog, which records what shipped, and from a site notice, which is one line of chrome.

  • string

    The slug, and the URL: gunspec.io/updates/{id}.

  • string

    The headline, as the post is listed.

  • string

    One or two sentences under the headline, for a list or a feed.

  • UpdateKind

    What a site update is about: the catalogue, the platform, a policy, the company, or an incident.

  • UpdateBlock[]

    The post, as typed blocks in reading order rather than markup: see UpdateBlock.

  • UpdateFigure

    The figure beside an update. Either a picture, or a character-field pattern the website draws itself: most posts have no photograph, and a named drawing is the honest alternative to a stock image. Read kind to tell them apart.

  • string | null

    The day the post is dated, as YYYY-MM-DD. A later edit does not re-date it.

  • integer

    Held at the top of the list regardless of date.

  • 400VALIDATION_ERRORValidation error
  • 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.

Authentifizierung optionalExplorer+

Returns the operator-authored banners the website is currently showing, best first. Only published notices inside their display window appear, so an empty array is the normal state.

GET/v1/notices

  • stringHeader

    Optional. Ohne Schlüssel antwortet dieser Endpunkt nach der öffentlichen Richtlinie; ein Schlüssel erhöht Ihre Limits und schaltet planabhängige Felder frei. Authorization: Bearer <key> wird ebenfalls akzeptiert.

  • object

    The response payload.

  • SiteNotice[]

    Published notices inside their display window, best first: highest priority, then newest.

  • string

    Row id of the notice. The website keys its dismissal on this, so a new notice is seen even by a reader who dismissed the last one.

  • string

    Short label shown before the message.

  • string

    The sentence shown in the banner.

  • string

    A second line, shown under the highlight where one is set.

  • NoticeVariant

    How prominently a site notice is shown.

  • string | null

    Text of the call to action, or null when the banner has none.

  • string | null

    Where the call to action goes.

  • integer

    Higher sorts first. Ties break on newest.

  • string | null

    When the notice becomes visible. Null means immediately.

  • string | null

    When it stops being shown. This is why notices are rows rather than copy: an end date is the only version of "take this down later" that does not rely on somebody remembering.

  • 400VALIDATION_ERRORValidation error
  • 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.

Authentifizierung optionalExplorer+

Every example on the SDK reference is executed against this API on a schedule and after each SDK release: the published package, a fresh project, the snippet exactly as printed. This returns the most recent run for each language, with the outcome of each example. Write examples are never run against production, since they would create a real ticket, webhook endpoint or seller offer, and are reported as skipped with that reason, so the counts never imply coverage the run does not have.

GET/v1/sdk/verification

  • stringHeader

    Optional. Ohne Schlüssel antwortet dieser Endpunkt nach der öffentlichen Richtlinie; ein Schlüssel erhöht Ihre Limits und schaltet planabhängige Felder frei. Authorization: Bearer <key> wird ebenfalls akzeptiert.

  • object

    The response payload.

  • SdkVerificationRun[]

    The latest run per language, ordered by language.

  • string

    Which promise the run is about: sdk for the published packages, api for the cURL commands the reference prints.

  • string

    The sample's own language. On an SDK run, typescript or python for the published package. On an API run, the tab of the reference it came from: curl, javascript (the TypeScript tab's generated fetch), python (its generated requests), or unity, unreal and godot, which are checked rather than executed.

  • string

    How the run arrived at its results. executed ran the sample against this API. static could not, and checked the sample against the operation it documents instead: the Unity, Unreal and GDScript samples are fragments meant for a class, an actor or a scene, so running one would mean wrapping it in code the reference does not print.

  • string

    What was exercised: the release installed from the registry on an SDK run, and the spec version the samples were generated from on an API run. The release rather than the version in our tree, because the badge vouches for what a reader gets today.

  • string

    The API the run was executed against. Production, so the badge vouches for the live service rather than a preview.

  • string

    When the run finished, ISO 8601.

  • string | null

    The commit of this repository the run was started from, or null where CI did not report one.

  • string | null

    The CI run, so the claim can be checked rather than taken.

  • integer

    Examples that ran and returned what the page prints.

  • integer

    Examples that ran and did not. A non-zero count is what takes the badge down.

  • integer

    Write examples, which are never run against production: each would create a real ticket, webhook endpoint or seller offer.

  • integer

    Examples this SDK has no method for. The reference shows no sample for them either.

  • 400VALIDATION_ERRORValidation error
  • 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.

Authentifizierung optionalExplorer+

The receipts behind the "verified" badges in the documentation, for every surface. The SDK surface installs the published package into a fresh project and runs each sample exactly as printed; the API surface runs the cURL command exactly as the reference prints it, with the key substituted at run time; the MCP surface calls every tool on the hosted MCP server with its documented example arguments. This returns the most recent run for each surface and language, with the outcome of every example. Examples that would write are never run against production, since each would create a real ticket, webhook endpoint or seller offer, and are reported as skipped with that reason, so the counts never imply coverage the run does not have.

GET/v1/examples/verification

  • stringHeader

    Optional. Ohne Schlüssel antwortet dieser Endpunkt nach der öffentlichen Richtlinie; ein Schlüssel erhöht Ihre Limits und schaltet planabhängige Felder frei. Authorization: Bearer <key> wird ebenfalls akzeptiert.

  • string

    Narrow to one surface: sdk for the SDK references, api for the reference samples, mcp for the hosted MCP server's tools. Omitted returns every surface.

    Akzeptiert
    Beispiel
  • string

    samples adds sample to each example: what it answered when the run executed it, trimmed for display. Only the MCP surface stores answers today; every example says whether it has one in hasSample either way.

    Akzeptiert

  • object

    The response payload.

  • SdkVerificationRun[]

    The latest run per surface and language, ordered by surface then language.

  • string

    Which promise the run is about: sdk for the published packages, api for the cURL commands the reference prints.

  • string

    The sample's own language. On an SDK run, typescript or python for the published package. On an API run, the tab of the reference it came from: curl, javascript (the TypeScript tab's generated fetch), python (its generated requests), or unity, unreal and godot, which are checked rather than executed.

  • string

    How the run arrived at its results. executed ran the sample against this API. static could not, and checked the sample against the operation it documents instead: the Unity, Unreal and GDScript samples are fragments meant for a class, an actor or a scene, so running one would mean wrapping it in code the reference does not print.

  • string

    What was exercised: the release installed from the registry on an SDK run, and the spec version the samples were generated from on an API run. The release rather than the version in our tree, because the badge vouches for what a reader gets today.

  • string

    The API the run was executed against. Production, so the badge vouches for the live service rather than a preview.

  • string

    When the run finished, ISO 8601.

  • string | null

    The commit of this repository the run was started from, or null where CI did not report one.

  • string | null

    The CI run, so the claim can be checked rather than taken.

  • integer

    Examples that ran and returned what the page prints.

  • integer

    Examples that ran and did not. A non-zero count is what takes the badge down.

  • integer

    Write examples, which are never run against production: each would create a real ticket, webhook endpoint or seller offer.

  • integer

    Examples this SDK has no method for. The reference shows no sample for them either.

  • 400VALIDATION_ERRORValidation error
  • 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.

Authentifizierung optionalExplorer+

The latest run's verdict as an SVG badge, for a README or a directory listing: green with the number of checks that passed, red with the number that failed, or grey when nothing has been run. Drawn by this API from the same record GET /v1/contract serves, so the badge and the page cannot disagree. Cached for five minutes.

GET/v1/contract/badge.svg

  • stringHeader

    Optional. Ohne Schlüssel antwortet dieser Endpunkt nach der öffentlichen Richtlinie; ein Schlüssel erhöht Ihre Limits und schaltet planabhängige Felder frei. Authorization: Bearer <key> wird ebenfalls akzeptiert.

  • string

    Which product or data suite to report: api for this REST API, mcp for the hosted MCP server, fitment for the attachment compatibility suite, catalogue for the catalogue record checks: every file against its schema, no company under two ids, and no firearm whose fields cannot all be true, integrity for the integrity checks: figures, prose and feature lists copied between unrelated guns, citations that are not evidence, timelines, weight against size, and confidence against evidence, plausibility for the plausibility checks: a loaded weight against the empty one and its magazine, a gun older than its cartridge, figures in the wrong unit, energy against velocity, variants that disagree with their family, and the same gun filed twice, anomalies for the statistical anomaly checks: a figure unusually far from its family's or its cohort's median, and a barrel an unusual share of its gun's length; each a figure to verify, not one shown wrong, cartridges for the cartridge checks: energy against bullet and velocity, pressure in MPa against psi, dimensions no case can have, a bullet against the calibre its name states, a cartridge older than its parent, and each load against its cartridge, materials for the materials registry: every material's density quoted from a page that still states it, within the range it declares, and every material value the catalogue uses covered, so the mass checks read sourced densities, corroboration for the corroboration checks: firearm figures compared with a second, independent source (Wikidata), sources for the source checks: how many records cite their own maker or another authority, and which heavily cited sites the source hierarchy cannot yet name, manufacturers for the manufacturer checks: every manufacturer record held against Wikidata for its website, founding year, country and whether it still trades, links for the link checks: every manufacturer website and every cited source asked whether it still answers and is still the page cited.

    Akzeptiert
  • string

    Which environment's run to report. Production unless asked otherwise.

    Akzeptiert
  • string

    The wording on the grey half. Defaults to api contract or mcp health. Bounded because it is drawn into an image.

    Max. Länge
    40
    Beispiel
  • string

    Set 0 to draw the badge without the mark, for a row of badges that carry their own.

    Akzeptiert
    Beispiel

  • 400VALIDATION_ERRORValidation error
  • 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.

Authentifizierung optionalExplorer+

Every finding one check made in the latest run of a surface, a page at a time. A run carries a sample of twenty per check; the data check suites publish every finding as well, and this is where the whole list is read: one line per finding, the record first. For a run published before findings were stored, the sample is returned instead, and published says how many that is.

GET/v1/contract/findings

  • stringHeader

    Optional. Ohne Schlüssel antwortet dieser Endpunkt nach der öffentlichen Richtlinie; ein Schlüssel erhöht Ihre Limits und schaltet planabhängige Felder frei. Authorization: Bearer <key> wird ebenfalls akzeptiert.

  • stringerforderlich

    The check id, as the run lists it under systemChecks.

    Beispiel
  • string

    Which product or data suite the run measured: api for this REST API, mcp for the hosted MCP server, fitment for the attachment compatibility suite, catalogue for the catalogue record checks: every file against its schema, no company under two ids, and no firearm whose fields cannot all be true, integrity for the integrity checks: figures, prose and feature lists copied between unrelated guns, citations that are not evidence, timelines, weight against size, and confidence against evidence, plausibility for the plausibility checks: a loaded weight against the empty one and its magazine, a gun older than its cartridge, figures in the wrong unit, energy against velocity, variants that disagree with their family, and the same gun filed twice, anomalies for the statistical anomaly checks: a figure unusually far from its family's or its cohort's median, and a barrel an unusual share of its gun's length; each a figure to verify, not one shown wrong, cartridges for the cartridge checks: energy against bullet and velocity, pressure in MPa against psi, dimensions no case can have, a bullet against the calibre its name states, a cartridge older than its parent, and each load against its cartridge, materials for the materials registry: every material's density quoted from a page that still states it, within the range it declares, and every material value the catalogue uses covered, so the mass checks read sourced densities, corroboration for the corroboration checks: firearm figures compared with a second, independent source (Wikidata), sources for the source checks: how many records cite their own maker or another authority, and which heavily cited sites the source hierarchy cannot yet name, manufacturers for the manufacturer checks: every manufacturer record held against Wikidata for its website, founding year, country and whether it still trades, links for the link checks: every manufacturer website and every cited source asked whether it still answers and is still the page cited. Defaults to api.

    Akzeptiert
    Beispiel
  • string

    Which environment to report. Production unless asked otherwise.

    Akzeptiert
    Beispiel
  • integerstandard1

    The page, from 1.

    Minimum
    1
    Beispiel
  • integerstandard100

    Findings per page.

    Bereich
    1 – 1000
    Beispiel

  • object[]

    The response payload.

  • string

    The check.

  • string

    When the run started.

  • integer

    How many the check found in all.

  • integer

    How many findings the run published; the rest were not stored.

  • integer

    This page.

  • integer

    Findings per page.

  • integer

    How many pages there are.

  • string[]

    The findings on this page, one line each, the record first.

  • object | null[]

    Beside each item, where the record's data task for this check has got to, or null when it has none.

  • string

    Queued for the data agent, being worked, proposed and waiting on a person, or accepted and on its way into the catalogue.

  • string

    Research a value from a source, or review a judgement.

  • integer

    How many tasks the record has for this check; a research task is one per field.

  • string | null

    The agent working it, while it is worked or proposed.

  • object[]

    Each task behind the mark, most active first. Load one at /v1/data/tasks/{number}.

  • number

    Current page number

  • number

    Items per page

  • number

    Total matching records (Builder and above)

  • 400VALIDATION_ERRORValidation error
  • 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.

Authentifizierung optionalExplorer+

Every documented operation is called against this API on a schedule and held against this document: the status, the media type, the schema, the envelope, the fields promised against the fields sent, the cache contract, and the plan gates. This returns the most recent run, with the verdict for each operation, the checks that failed, and what happened when each gate was exercised with a key above it, at it and below it.

GET/v1/contract

  • stringHeader

    Optional. Ohne Schlüssel antwortet dieser Endpunkt nach der öffentlichen Richtlinie; ein Schlüssel erhöht Ihre Limits und schaltet planabhängige Felder frei. Authorization: Bearer <key> wird ebenfalls akzeptiert.

  • string

    Which environment to report. Production unless asked otherwise; a staging run is never mixed into it.

    Akzeptiert
    Beispiel
  • string

    Which product or data suite the run measured: api for this REST API, mcp for the hosted MCP server, fitment for the attachment compatibility suite, catalogue for the catalogue record checks: every file against its schema, no company under two ids, and no firearm whose fields cannot all be true, integrity for the integrity checks: figures, prose and feature lists copied between unrelated guns, citations that are not evidence, timelines, weight against size, and confidence against evidence, plausibility for the plausibility checks: a loaded weight against the empty one and its magazine, a gun older than its cartridge, figures in the wrong unit, energy against velocity, variants that disagree with their family, and the same gun filed twice, anomalies for the statistical anomaly checks: a figure unusually far from its family's or its cohort's median, and a barrel an unusual share of its gun's length; each a figure to verify, not one shown wrong, cartridges for the cartridge checks: energy against bullet and velocity, pressure in MPa against psi, dimensions no case can have, a bullet against the calibre its name states, a cartridge older than its parent, and each load against its cartridge, materials for the materials registry: every material's density quoted from a page that still states it, within the range it declares, and every material value the catalogue uses covered, so the mass checks read sourced densities, corroboration for the corroboration checks: firearm figures compared with a second, independent source (Wikidata), sources for the source checks: how many records cite their own maker or another authority, and which heavily cited sites the source hierarchy cannot yet name, manufacturers for the manufacturer checks: every manufacturer record held against Wikidata for its website, founding year, country and whether it still trades, links for the link checks: every manufacturer website and every cited source asked whether it still answers and is still the page cited. Defaults to api.

    Akzeptiert
    Beispiel

  • object

    The response payload.

  • ApiContractRun | null

    The latest run, or null when nothing has been checked on this environment yet.

  • 400VALIDATION_ERRORValidation error
  • 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.

Authentifizierung erforderlichExplorer+

Returns what the API reference says about calling an operation: its parameters and what each accepts, the request body, the plan it needs, whether it answers 304 Not Modified, every failure it can return with the error.reason values a client branches on, and the languages a sample is printed in. path may be a documented template (/v1/firearms/{id}), a concrete path (/v1/firearms/glock-g17) or a full URL. A path that names no operation returns the operations under it, so /v1/vendor lists what a seller integration can call. Generated from the reference itself, so it cannot describe an operation differently from the page.

GET/v1/docs/operations

  • stringHeadererforderlich

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

  • stringerforderlich

    The operation's path: a documented template, a concrete path or a full URL. A path that names no operation is matched as a prefix.

    Max. Länge
    300
    Beispiel
  • string

    Narrow to one HTTP method. Omitted returns every method the path answers.

    Akzeptiert
    Beispiel

  • object

    The response payload.

  • string

    exact when the path named an operation, prefix when it did not and these are the operations under it (at most 25).

  • string

    The version of this document the reference was rendered from.

  • object[]

    The matching operations.

  • string

    HTTP method.

  • string

    The documented path template.

  • string

    The operation's title in the reference.

  • string

    What the operation does, as the reference states it.

  • string

    The lowest plan that may call it: public, account (a key attached to a user account), explorer, builder, studio or enterprise.

  • string

    Whether a key is required, optional or not used (none).

  • boolean

    Whether it answers 304 Not Modified to an If-None-Match carrying the ETag it sent.

  • string

    The operation's page in the reference.

  • object[]

    Path, query and header parameters, as the reference lists them.

  • object | null

    The request body, or null for an operation that takes none.

  • object

    What success looks like.

  • object[]

    Every failure the operation documents.

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

Authentifizierung erforderlichExplorer+

Returns the sample the reference prints for an operation in one language, exactly as printed, with the result of the last run that checked it. The cURL, TypeScript fetch and Python requests samples and the TypeScript and Python SDK samples are executed against production on a schedule; the Unity, Unreal and Godot samples are checked, not executed. A sample is never composed for the request: a language the reference does not print for that operation is a 404 naming the languages it does.

GET/v1/docs/samples

  • stringHeadererforderlich

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

  • stringerforderlich

    The operation's path: a documented template, a concrete path or a full URL.

    Max. Länge
    300
    Beispiel
  • string

    The HTTP method. Needed only when the path answers more than one.

    Akzeptiert
    Beispiel
  • stringerforderlich

    curl, javascript (TypeScript with fetch), python (requests), unity, unreal, godot, or sdk-typescript / sdk-python for the SDKs.

    Akzeptiert
    Beispiel

  • object

    The response payload.

  • string

    HTTP method of the operation.

  • string

    Its documented path template.

  • string

    The lowest plan that may call it.

  • string

    The operation's page in the reference.

  • string

    The language asked for.

  • string | null

    How to fill in the key placeholder, or null for an operation that takes no key.

  • object[]

    One sample, or one per SDK method for an operation more than one method calls.

  • string

    What the sample is: the tab name, or the SDK call.

  • string

    The sample, exactly as the reference prints it.

  • object | null

    The last run that checked this sample, or null when none has.

  • string | null

    Anything to know before using it, such as why it is not executed, or null.

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

Authentifizierung erforderlichExplorer+

Returns what each plan allows, from the configuration the API enforces: requests per minute, per day and per month, MCP calls per day, how deep a list may be paged, and whether list responses carry a total count. Also how a burst of paging is limited, how long to wait after each refusal, and the headers a key may be sent in. A limit a plan does not have is null.

GET/v1/docs/limits

  • stringHeadererforderlich

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

  • object

    The response payload.

  • object[]

    Every plan, cheapest first.

  • string

    Plan id.

  • string

    Plan name.

  • integer

    Monthly price in US cents.

  • integer

    Requests allowed per minute, per key.

  • integer

    Requests allowed per day, per key.

  • integer

    Requests included per month.

  • integer

    Calls through the hosted MCP server allowed per day, inside the daily request allowance.

  • integer | null

    The deepest page a list may be read to, or null for no limit.

  • boolean

    Whether paginated responses include the total count.

  • object

    Limits on a caller that sends no key.

  • integer

    Requests allowed per day to the endpoints that need no key.

  • integer | null

    The deepest page a list may be read to without a key.

  • object

    How fast a list may be paged through before PAGINATION_BURST is returned.

  • integer

    Pages that may be read in quick succession.

  • integer

    The window those pages are counted over.

  • object

    How long to wait after a 429.

  • integer

    The Retry-After sent with a per-minute refusal.

  • integer

    The longest Retry-After a daily refusal sends. The value sent is the seconds left until the next midnight UTC, when the counters return to zero, so it is never more than this.

  • string[]

    The headers a key may be sent in.

  • string

    The rate limits page in the docs.

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

Authentifizierung erforderlichExplorer+

Returns every guide the documentation renders, with the headings each is divided into. Use it to see what is documented before searching, or to find the id and anchor of a section to read. The text is the page's own, so a guide cannot say something here that it does not say to a reader.

GET/v1/docs/guides

  • stringHeadererforderlich

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

  • object

    The response payload.

  • integer

    How many guides there are.

  • object[]

    Every guide, in the order the documentation lists them.

  • string

    The guide's id, passed to the read endpoint.

  • string

    The page's title.

  • string

    The page a reader would open.

  • string

    The opening prose: what the page is about.

  • integer

    The whole page in Markdown, so a caller can tell what reading it costs.

  • object[]

    Every heading on the page, in order.

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

Authentifizierung erforderlichExplorer+

Returns the sections of the guides that answer a question, best first, each with a snippet and a link to the heading it came from. This is the entry point: search, then read the one section you need rather than a whole page. A question the guides do not cover returns no results rather than the nearest paragraph.

GET/v1/docs/guides/search

  • stringHeadererforderlich

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

  • stringerforderlich

    The question, in the words it would be asked in.

    Max. Länge
    200
    Beispiel
  • integerstandard8

    How many sections to return.

    Bereich
    1 – 25
    Beispiel

  • object

    The response payload.

  • string

    The question as it was asked.

  • integer

    How many sections matched, of which results carries the best.

  • object[]

    The matching sections, best first.

  • string

    The guide the section is on.

  • string

    That guide's title.

  • string

    The section's anchor.

  • string

    The heading.

  • string

    The heading with the ones above it.

  • string

    The page, opened at that heading.

  • string

    The opening of the section, so a caller can judge it without reading it.

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

Authentifizierung erforderlichExplorer+

Returns one guide as Markdown. With anchor, only that heading, which is what an answer usually needs; without it, the whole page, which can run to tens of kilobytes. Find an id and its anchors with the list or search endpoint.

GET/v1/docs/guides/{id}

  • stringHeadererforderlich

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

  • stringerforderlich

    The guide's id, as the list endpoint gives it.

    Akzeptiert
    a lowercase slug: letters, digits and hyphens
    Beispiel

  • string

    Return only the section this heading anchor names. Omitted, the whole page comes back.

    Max. Länge
    120
    Beispiel

  • object

    The response payload.

  • string

    The guide's id.

  • string

    The page's title.

  • string

    The page, opened at the section when one was named.

  • string

    The opening prose. Sent with a whole page only.

  • string

    The whole page as Markdown. Sent when no anchor was given.

  • object[]

    The page's headings, or the named section - one anchor can hold several headings where a page deep-links only the outer one.

  • string

    The heading's anchor.

  • string

    The heading.

  • string

    The heading with the ones above it.

  • string

    The section's prose. Sent when an anchor was given.

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

Authentifizierung optionalExplorer+

Returns published blog posts, newest first.

GET/v1/blog

  • stringHeader

    Optional. Ohne Schlüssel antwortet dieser Endpunkt nach der öffentlichen Richtlinie; ein Schlüssel erhöht Ihre Limits und schaltet planabhängige Felder frei. 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

    Filter by post category

    Max. Länge
    60
    Beispiel

  • BlogPost[]

    A published post. Both endpoints serve the stored row; body is markdown.

  • string

    Opaque post id. A string, not a number: posts are keyed like every other authored record here.

  • string

    URL-safe slug, and what /v1/blog/{slug} addresses.

  • string

    Post headline.

  • string | null

    One-line description, for a card or a feed. Null where the author wrote none.

  • string | null

    The post itself, as markdown.

  • string | null

    Path of the hero image on the assets CDN, or null. Prefix it with the assets host to fetch.

  • string | null

    What the hero image shows, as alt text. Null where the post has no hero or none was written.

  • string | null

    Editorial category, e.g. guides. Null where the post has none.

  • string

    Always published on these endpoints: a draft is not served publicly.

  • string | null

    When the post was published, which is what the list orders by. Null on a post never given a date.

  • string

    When the post was first written, YYYY-MM-DD HH:MM:SS in UTC. Not the publication date: postedAt is.

  • string

    When the post was last edited, YYYY-MM-DD HH:MM:SS in UTC.

  • object | null

    Who wrote the post: the display name on the account that created it, never its address. Null when that account has no display name, and the post is then attributed to the publisher.

  • string

    The author's display name, as set on their GunSpec account.

  • string

    URL segment of the author's page on the blog, made from their display name.

  • string

    Which avatar style the author chose on their account.

  • string

    Seed the avatar is drawn from. Stable per author, and not their account id.

  • number

    Current page number

  • number

    Items per page

  • number

    Total matching records (Builder and above)

  • 400VALIDATION_ERRORValidation error
  • 429RATE_LIMITEDRate limit exceeded
  • 500INTERNAL_ERRORUnexpected server error

No API key required. Only published posts are returned.

Posts are ordered by postedAt descending (most recent first).

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.

Authentifizierung optionalExplorer+

Returns a single published blog post, including its full body.

GET/v1/blog/{slug}

  • stringHeader

    Optional. Ohne Schlüssel antwortet dieser Endpunkt nach der öffentlichen Richtlinie; ein Schlüssel erhöht Ihre Limits und schaltet planabhängige Felder frei. Authorization: Bearer <key> wird ebenfalls akzeptiert.

  • stringerforderlich

    Blog post slug

    Akzeptiert
    a lowercase slug: letters, digits and hyphens
    Beispiel

  • object

    The response payload.

  • BlogPost

    A published post. Both endpoints serve the stored row; body is markdown.

  • string

    Opaque post id. A string, not a number: posts are keyed like every other authored record here.

  • string

    URL-safe slug, and what /v1/blog/{slug} addresses.

  • string

    Post headline.

  • string | null

    One-line description, for a card or a feed. Null where the author wrote none.

  • string | null

    The post itself, as markdown.

  • string | null

    Path of the hero image on the assets CDN, or null. Prefix it with the assets host to fetch.

  • string | null

    What the hero image shows, as alt text. Null where the post has no hero or none was written.

  • string | null

    Editorial category, e.g. guides. Null where the post has none.

  • string

    Always published on these endpoints: a draft is not served publicly.

  • string | null

    When the post was published, which is what the list orders by. Null on a post never given a date.

  • string

    When the post was first written, YYYY-MM-DD HH:MM:SS in UTC. Not the publication date: postedAt is.

  • string

    When the post was last edited, YYYY-MM-DD HH:MM:SS in UTC.

  • 400VALIDATION_ERRORValidation error
  • 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.