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 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+

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 the run measured: api for this REST API, mcp for the hosted MCP server. 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 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

    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.

  • 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

    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.