GunSpec
Praxis

Im Tarif bleiben

Das meiste Kontingent geht für Daten drauf, die sich nicht geändert haben. Hier steht, was jeder Tarif erlaubt, welche Aufrufe frei sind und welche Form fünf Anfragen ersetzt.

Tagesgrenzen je Schlüssel, aus der Konfiguration, die die Middleware durchsetzt. Rate Limits behandelt die Minutenseite.

TarifAnfragen / TagMCP-Aufrufe / TagSeitentiefe
Explorer50205
Builder2,00050025
Studio10,0002,500Keine Grenze
Enterprise50,00010,000Keine Grenze

MCP-Aufrufe sind eine Untergrenze innerhalb des Anfragelimits, nie ein Zusatzkontingent: die zuerst erreichte Grenze lehnt ab, wie die MCP-Limitseite erklärt. Mehr als 10 Seiten in 90 Sekunden werden ebenfalls abgelehnt. Durchlaufen Sie den Katalog also stetig statt parallel.

Es sind zwei, und zusammen entscheiden sie meist darüber, ob ein Tarif passt.

  • Ein 304 Not Modified zählt nicht gegen Ihr Tageslimit. Vorhandenes zu revalidieren ist frei, es erneut zu laden nicht. Caching erklärt die Mechanik.
  • Eine Antwort aus Ihrem eigenen Cache erreicht uns gar nicht. Beachten Sie das gesendete Cache-Control, und eine stark besuchte Seite schrumpft auf einen Aufruf pro Cache-Lebensdauer.
  • Auch eine Webhook-Zustellung ist keine Anfrage von Ihnen, denn wir rufen Sie an. Änderungen zu empfangen statt zu pollen kostet deshalb nichts pro Datensatz, und Den Katalog spiegeln baut darauf auf.

Dieselbe Seite, dieselben Daten, ein Viertel der Anfragen. Diese Endpunkte gibt es, weil die Schleife, die sie ersetzen, die ist, die jeder zuerst schreibt.

compare.ts
javascript
// Four calls, one page render.const g17 = await gunspec.firearms.get('glock-g17')const p226 = await gunspec.firearms.get('sig-sauer-p226')const m9 = await gunspec.firearms.get('beretta-92fs')const p320 = await gunspec.firearms.get('sig-sauer-p320') // One call, the same page, and the fields already lined up for a// table. Up to five ids, as one comma-separated string.const { data } = await gunspec.firearms.compare({  ids: 'glock-g17,sig-sauer-p226,beretta-92fs,sig-sauer-p320',})
  • Bis zu fünf Datensätze in einem Aufruf vergleichen, statt jeden einzeln zu holen. Die Felder kommen bereits ausgerichtet zurück.
  • Bis zu fünfzig Namen in einem Aufruf auflösen statt einzeln, wie der Resolve-Leitfaden zeigt.
  • Mit fields nur anfordern, was Sie rendern, und lieber per_page erhöhen als mehr Seiten zu holen: eine Seite mit hundert kostet eine Anfrage, fünf Seiten mit zwanzig kosten fünf.
  • Nehmen Sie den Endpunkt, der Ihre Frage bereits beantwortet (Varianten, ähnliche Modelle, Anbauteile), statt sie aus Liste plus Schleife zusammenzusetzen.

Limits gelten je Schlüssel, und die API lehnt einen Schlüssel nach dem anderen ab. Ein kontoweiter Durchschnitt verdeckt also genau den, der gleich zu scheitern beginnt. Der Usage-Endpunkt nennt beides, und dieselben Zahlen stehen in Ihrem Profil.

usage-alert.ts
javascript
// What the account has actually spent, from the same counters// the caps are checked against.const { data } = await gunspec.usage.get() if (data.currentMonth.percentage > 80) {  notify(`${data.currentMonth.used} of ${data.currentMonth.limit} requests used this month`)} // Watch the busiest key, never the account's sum: the API refuses one// key at a time, so an average hides the key about to start failing.const busiest = data.mcp?.busiestKeyTodayif (busiest && busiest.percentage > 80) {  notify(`${busiest.keyName} is at ${busiest.percentage}% of today's MCP allowance`)}

Beides ist legitim. Das Signal sagt, worum es tatsächlich geht.

Was Sie sehenWas es bedeutet
Viele Anfragen, wenige verschiedene DatensätzeCachen. Sie fragen dieselben Zeilen innerhalb ihrer Lebensdauer erneut ab.
Schübe von 429 zur vollen StundeZeitplan entzerren und Jitter ergänzen. Ihr Cronjob stürmt, nicht Ihr Verkehr.
Stetig mehr verschiedene gelesene DatensätzeUpgraden. Das ist echte Nachfrage, die kein Cache wegnimmt.
PLAN_REQUIRED an einem EndpunktUpgraden oder darauf verzichten. Ein neuer Schlüssel im selben Tarif bekommt dieselbe Antwort.
Tiefenlimit beim Durchlauf erreichtDen Durchlauf in engere Scheiben filtern oder in einen Tarif ohne Seitengrenze wechseln.