tokenusage-dev Nerfwatch API
The Nerfwatch API from tokenusage-dev — 1 operation(s) for nerfwatch.
The Nerfwatch API from tokenusage-dev — 1 operation(s) for nerfwatch.
Every API here is available over the APIs.io API and to AI agents over MCP.
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
find_apisBrowse and filter every API in the catalog.get_api_artifactsOne API's artifacts, grouped by type.get_openapiThe primary OpenAPI for this API.find_similar_apisAPIs that look like this one.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.curl "https://apis.io/api/v1/apis/tokenusage-dev:tokenusage-dev-nerfwatch-api"
curl "https://apis.io/api/v1/apis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.
A second provider on the same verified email joins the account you already have.
openapi: 3.2.0
info:
title: tokenusage.dev public data Nerfwatch API
version: 1.0.0
description: 'Read-only reset announcements and Nerf Watch scores. No key. Public display requires Data: tokenusage.dev linked to https://tokenusage.dev/resets for resets or https://tokenusage.dev/nerfwatch for scores on the same screen or in the same message. Personal use needs no visible credit. Relays must pass on the credit URL and condition. A lower score on this suite is not proof that a provider changed a model. Response fields may be added.'
termsOfService: https://tokenusage.dev/terms
contact:
name: tokenusage.dev
email: support@tokenusage.dev
url: https://tokenusage.dev/contact
servers:
- url: https://tokenusage.dev
security: []
tags:
- name: Nerfwatch
paths:
/api/nerfwatch:
description: Each model's latest score, previous run, changes, baseline and history, ordered by provider, name and model id. Missing days are missing, not zero. Comparisons use one suite version. A lower score is a lower score on this suite, not proof that a provider changed a model. Use GET or HEAD without credentials or custom request headers. Poll no faster than every 5 minutes. evidenceAvailable and private evidence endpoints are outside this stable reuse contract. Unsupported methods return the documented 405 error.
get:
operationId: getNerfWatchScores
summary: Read Nerf Watch scores and history
responses:
'200':
$ref: '#/components/responses/NerfwatchJson'
'405':
$ref: '#/components/responses/NerfwatchMethodNotAllowed'
'500':
$ref: '#/components/responses/InternalError'
tags:
- Nerfwatch
head:
operationId: headNerfWatchScores
summary: Read Nerf Watch response headers
responses:
'200':
$ref: '#/components/responses/NerfwatchHead'
'405':
$ref: '#/components/responses/HeadError'
'500':
$ref: '#/components/responses/HeadError'
tags:
- Nerfwatch
components:
schemas:
NerfwatchModel:
type: object
additionalProperties: true
required:
- model
- name
- provider
- latest
- previous
- change
- baseline
- baselineRuns
- changeVsBaseline
- trend
- history
properties:
model:
type: string
name:
type: string
provider:
type: string
latest:
description: Newest run, or null.
anyOf:
- $ref: '#/components/schemas/NerfwatchPoint'
- type: 'null'
previous:
description: Run before the latest, whatever its day, or null.
anyOf:
- $ref: '#/components/schemas/NerfwatchPoint'
- type: 'null'
change:
type:
- number
- 'null'
minimum: -100
maximum: 100
description: Latest minus previous, in points, rounded to two decimals; null without a previous run on the same suite version.
baseline:
type:
- number
- 'null'
minimum: 0
maximum: 100
description: Mean of same-suite scores in the baseline window, rounded to two decimals; null with too few runs.
baselineRuns:
type: integer
minimum: 0
description: Number of same-suite runs in the baseline window, even when too few for a baseline.
changeVsBaseline:
type:
- number
- 'null'
minimum: -100
maximum: 100
description: Latest minus baseline, in points, rounded to two decimals; null without a baseline.
trend:
type:
- string
- 'null'
enum:
- down
- flat
- up
- null
description: Direction against the baseline using flatPoints; null without a baseline.
history:
type: array
description: Oldest first. Days without a run are missing, not zero.
items:
$ref: '#/components/schemas/NerfwatchPoint'
Error:
type: object
additionalProperties: true
required:
- error
- message
properties:
error:
type: string
message:
type: string
NerfwatchPoint:
type: object
additionalProperties: true
required:
- day
- score
- suiteVersion
properties:
day:
type: string
format: date
description: UTC day.
score:
type: number
minimum: 0
maximum: 100
description: Percent score on this suite, rounded to two decimals.
suiteVersion:
type: string
description: Comparisons are made only within one suite version.
NerfwatchResponse:
type: object
additionalProperties: true
required:
- generatedAt
- dataUpdatedAt
- historyDays
- baselineDays
- minBaselineRuns
- flatPoints
- models
properties:
generatedAt:
type: string
format: date-time
description: Response generation time.
dataUpdatedAt:
type:
- string
- 'null'
format: date-time
description: When the newest retained run was stored; null without runs.
historyDays:
type: integer
minimum: 1
examples:
- 366
description: History retention bound per model.
baselineDays:
type: integer
minimum: 1
examples:
- 7
description: UTC-day window before the latest run used for its baseline.
minBaselineRuns:
type: integer
minimum: 1
examples:
- 3
description: Minimum same-suite runs needed for a baseline.
flatPoints:
type: number
minimum: 0
examples:
- 2
description: Absolute change versus baseline at or below this value is flat.
models:
type: array
description: Ordered by provider, name and model id; empty before the first run.
items:
$ref: '#/components/schemas/NerfwatchModel'
responses:
NerfwatchMethodNotAllowed:
description: Unsupported method. The existing method message remains GET. No CORS headers are sent.
headers:
Cache-Control:
$ref: '#/components/headers/NoStore'
X-Robots-Tag:
$ref: '#/components/headers/Noindex'
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
example:
error: method_not_allowed
message: GET
NerfwatchHead:
description: GET headers, with no transmitted body.
headers:
Cache-Control:
$ref: '#/components/headers/NerfwatchCache'
Access-Control-Allow-Origin:
$ref: '#/components/headers/PublicCors'
X-Robots-Tag:
$ref: '#/components/headers/Noindex'
HeadError:
description: Error headers with no transmitted body and no CORS headers.
headers:
Cache-Control:
$ref: '#/components/headers/NoStore'
X-Robots-Tag:
$ref: '#/components/headers/Noindex'
InternalError:
description: The read failed. No CORS headers are sent.
headers:
Cache-Control:
$ref: '#/components/headers/NoStore'
X-Robots-Tag:
$ref: '#/components/headers/Noindex'
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
example:
error: internal
message: something went wrong on our side
NerfwatchJson:
description: Public scores and metadata. Additional response fields are the site's own interface unless documented as stable.
headers:
Cache-Control:
$ref: '#/components/headers/NerfwatchCache'
Access-Control-Allow-Origin:
$ref: '#/components/headers/PublicCors'
X-Robots-Tag:
$ref: '#/components/headers/Noindex'
content:
application/json:
schema:
$ref: '#/components/schemas/NerfwatchResponse'
headers:
Noindex:
schema:
type: string
const: noindex
PublicCors:
description: Successful public reads only; no credentialed CORS.
schema:
type: string
const: '*'
NerfwatchCache:
schema:
type: string
const: public, max-age=60, s-maxage=300
NoStore:
schema:
type: string
const: no-store
externalDocs:
description: Fields, caching and reuse conditions
url: https://tokenusage.dev/developers