@@ -2412,6 +2412,76 @@ components:
24122412 - path
24132413 - diff
24142414 type: object
2415+ AppRankingsItem:
2416+ example:
2417+ app_id: 12345
2418+ app_name: Cline
2419+ rank: 1
2420+ total_requests: 4321
2421+ total_tokens: '12345678'
2422+ properties:
2423+ app_id:
2424+ description: Stable numeric identifier of the app on OpenRouter.
2425+ example: 12345
2426+ type: integer
2427+ app_name:
2428+ description: Public display name of the app.
2429+ example: Cline
2430+ type: string
2431+ rank:
2432+ description: 1-based position of the app within this response, per the requested `sort`.
2433+ example: 1
2434+ type: integer
2435+ total_requests:
2436+ description: Number of requests attributed to the app inside the date window.
2437+ example: 4321
2438+ type: integer
2439+ total_tokens:
2440+ description: >-
2441+ Sum of `prompt_tokens + completion_tokens` attributed to the app inside the date window, returned as a
2442+ decimal string so 64-bit values are not truncated.
2443+ example: '12345678'
2444+ type: string
2445+ required:
2446+ - rank
2447+ - app_id
2448+ - app_name
2449+ - total_tokens
2450+ - total_requests
2451+ type: object
2452+ AppRankingsResponse:
2453+ example:
2454+ data:
2455+ - app_id: 12345
2456+ app_name: Cline
2457+ rank: 1
2458+ total_requests: 4321
2459+ total_tokens: '12345678'
2460+ - app_id: 67890
2461+ app_name: Roo Code
2462+ rank: 2
2463+ total_requests: 2109
2464+ total_tokens: '9876543'
2465+ meta:
2466+ as_of: '2026-05-12T02:00:00Z'
2467+ end_date: '2026-05-11'
2468+ start_date: '2026-04-12'
2469+ version: v1
2470+ properties:
2471+ data:
2472+ description: >-
2473+ Apps ranked per the requested `sort`, re-numbered 1..N after category filtering. `popular` sorts by
2474+ `total_tokens` descending; `trending` sorts by absolute excess token growth descending and may return fewer
2475+ than `limit` rows when few apps are growing.
2476+ items:
2477+ $ref: '#/components/schemas/AppRankingsItem'
2478+ type: array
2479+ meta:
2480+ $ref: '#/components/schemas/RankingsDailyMeta'
2481+ required:
2482+ - data
2483+ - meta
2484+ type: object
24152485 AutoRouterPlugin:
24162486 example:
24172487 allowed_models:
@@ -22915,6 +22985,234 @@ paths:
2291522985 x-fern-ignore: true
2291622986 x-speakeasy-ignore: true
2291722987 x-speakeasy-name-override: createCoinbaseCharge
22988+ /datasets/app-rankings:
22989+ get:
22990+ description: |-
22991+ Returns the top public apps on OpenRouter ranked by token usage inside the requested
22992+ date window, matching the public apps marketplace on openrouter.ai/apps. Token totals
22993+ are `prompt_tokens + completion_tokens`; hidden and private apps are excluded and
22994+ traffic from related app aliases is merged into the canonical visible app.
22995+
22996+ `sort=popular` (default) ranks by total token volume inside the window.
22997+ `sort=trending` ranks by absolute excess token growth: window volume minus the average
22998+ volume of the three equal-length periods immediately preceding the window. Apps with
22999+ no excess growth are omitted, so `trending` may return fewer than `limit` rows.
23000+
23001+ Filter with `category` (marketplace category group, e.g. `coding`) or `subcategory`
23002+ (e.g. `cli-agent`). Ranks are re-numbered 1..N after filtering. Page with `offset` —
23003+ `rank` stays absolute, so the first row of `offset=50` is `rank: 51`.
23004+
23005+ Authenticate with any valid OpenRouter API key (same key used for inference).
23006+ Rate-limited to 30 requests/minute per key and 500 requests/day per account.
23007+
23008+ When republishing or quoting this dataset, OpenRouter must be cited as:
23009+ "Source: OpenRouter (openrouter.ai/apps), as of {as_of}."
23010+
23011+ Token counts come from each upstream provider's own tokenizer, so a token attributed
23012+ to one app is not directly comparable to a token attributed to another app whose
23013+ traffic flows through a different provider.
23014+ operationId: getAppRankings
23015+ parameters:
23016+ - description: >-
23017+ Marketplace category group to filter by (e.g. `coding`). Only apps tagged with a subcategory inside this
23018+ group are returned. Mutually combinable with `subcategory` — when both are supplied the `subcategory` must
23019+ belong to the `category` group.
23020+ in: query
23021+ name: category
23022+ required: false
23023+ schema:
23024+ description: >-
23025+ Marketplace category group to filter by (e.g. `coding`). Only apps tagged with a subcategory inside this
23026+ group are returned. Mutually combinable with `subcategory` — when both are supplied the `subcategory` must
23027+ belong to the `category` group.
23028+ enum:
23029+ - coding
23030+ - creative
23031+ - productivity
23032+ - entertainment
23033+ example: coding
23034+ type: string
23035+ - description: >-
23036+ Marketplace subcategory to filter by (e.g. `cli-agent`). Takes precedence over `category` for the actual
23037+ filter; when `category` is also supplied the pair must be consistent.
23038+ in: query
23039+ name: subcategory
23040+ required: false
23041+ schema:
23042+ description: >-
23043+ Marketplace subcategory to filter by (e.g. `cli-agent`). Takes precedence over `category` for the actual
23044+ filter; when `category` is also supplied the pair must be consistent.
23045+ enum:
23046+ - cli-agent
23047+ - ide-extension
23048+ - cloud-agent
23049+ - programming-app
23050+ - native-app-builder
23051+ - creative-writing
23052+ - video-gen
23053+ - image-gen
23054+ - audio-gen
23055+ - roleplay
23056+ - game
23057+ - writing-assistant
23058+ - general-chat
23059+ - personal-agent
23060+ - legal
23061+ example: cli-agent
23062+ type: string
23063+ - description: >-
23064+ `popular` ranks apps by total token volume inside the date window. `trending` ranks apps by absolute excess
23065+ token growth: window volume minus the average volume of the three equal-length periods immediately preceding
23066+ the window. Apps with no excess growth are omitted from `trending` results.
23067+ in: query
23068+ name: sort
23069+ required: false
23070+ schema:
23071+ default: popular
23072+ description: >-
23073+ `popular` ranks apps by total token volume inside the date window. `trending` ranks apps by absolute
23074+ excess token growth: window volume minus the average volume of the three equal-length periods immediately
23075+ preceding the window. Apps with no excess growth are omitted from `trending` results.
23076+ enum:
23077+ - popular
23078+ - trending
23079+ example: popular
23080+ type: string
23081+ - description: >-
23082+ Start of the date window in YYYY-MM-DD (UTC), inclusive. Defaults to 30 days before `end_date`. The dataset
23083+ begins at 2025-01-01; earlier values are clamped forward to that floor and the resolved value is echoed in
23084+ `meta.start_date`.
23085+ in: query
23086+ name: start_date
23087+ required: false
23088+ schema:
23089+ description: >-
23090+ Start of the date window in YYYY-MM-DD (UTC), inclusive. Defaults to 30 days before `end_date`. The
23091+ dataset begins at 2025-01-01; earlier values are clamped forward to that floor and the resolved value is
23092+ echoed in `meta.start_date`.
23093+ example: '2026-04-12'
23094+ pattern: ^\d{4}-\d{2}-\d{2}$
23095+ type: string
23096+ - description: >-
23097+ End of the date window in YYYY-MM-DD (UTC), inclusive. Defaults to the most recent completed UTC day. Must
23098+ be on or after 2025-01-01; earlier values are rejected with a 400.
23099+ in: query
23100+ name: end_date
23101+ required: false
23102+ schema:
23103+ description: >-
23104+ End of the date window in YYYY-MM-DD (UTC), inclusive. Defaults to the most recent completed UTC day. Must
23105+ be on or after 2025-01-01; earlier values are rejected with a 400.
23106+ example: '2026-05-11'
23107+ pattern: ^\d{4}-\d{2}-\d{2}$
23108+ type: string
23109+ - description: Maximum number of apps to return (1-100). Defaults to 50.
23110+ in: query
23111+ name: limit
23112+ required: false
23113+ schema:
23114+ default: 50
23115+ description: Maximum number of apps to return (1-100). Defaults to 50.
23116+ example: 50
23117+ maximum: 100
23118+ minimum: 1
23119+ type: integer
23120+ - description: >-
23121+ Number of ranked apps to skip before the first returned row (0-100). Defaults to 0. `rank` stays absolute,
23122+ so the first row of `offset=50` is `rank: 51`.
23123+ in: query
23124+ name: offset
23125+ required: false
23126+ schema:
23127+ default: 0
23128+ description: >-
23129+ Number of ranked apps to skip before the first returned row (0-100). Defaults to 0. `rank` stays absolute,
23130+ so the first row of `offset=50` is `rank: 51`.
23131+ example: 0
23132+ maximum: 100
23133+ minimum: 0
23134+ nullable: true
23135+ type: integer
23136+ responses:
23137+ '200':
23138+ content:
23139+ application/json:
23140+ example:
23141+ data:
23142+ - app_id: 12345
23143+ app_name: Cline
23144+ rank: 1
23145+ total_requests: 4321
23146+ total_tokens: '12345678'
23147+ - app_id: 67890
23148+ app_name: Roo Code
23149+ rank: 2
23150+ total_requests: 2109
23151+ total_tokens: '9876543'
23152+ meta:
23153+ as_of: '2026-05-12T02:00:00Z'
23154+ end_date: '2026-05-11'
23155+ start_date: '2026-04-12'
23156+ version: v1
23157+ schema:
23158+ $ref: '#/components/schemas/AppRankingsResponse'
23159+ description: >-
23160+ Apps ranked per the requested `sort`, re-numbered 1..N. `popular` sorts by `total_tokens` descending;
23161+ `trending` sorts by absolute excess token growth descending and may return fewer than `limit` rows.
23162+ '400':
23163+ content:
23164+ application/json:
23165+ example:
23166+ error:
23167+ code: 400
23168+ message: Invalid request parameters
23169+ schema:
23170+ $ref: '#/components/schemas/BadRequestResponse'
23171+ description: Bad Request - Invalid request parameters or malformed input
23172+ '401':
23173+ content:
23174+ application/json:
23175+ example:
23176+ error:
23177+ code: 401
23178+ message: Missing Authentication header
23179+ schema:
23180+ $ref: '#/components/schemas/UnauthorizedResponse'
23181+ description: Unauthorized - Authentication required or invalid credentials
23182+ '429':
23183+ content:
23184+ application/json:
23185+ example:
23186+ error:
23187+ code: 429
23188+ message: Rate limit exceeded
23189+ schema:
23190+ $ref: '#/components/schemas/TooManyRequestsResponse'
23191+ description: Too Many Requests - Rate limit exceeded
23192+ '500':
23193+ content:
23194+ application/json:
23195+ example:
23196+ error:
23197+ code: 500
23198+ message: Internal Server Error
23199+ schema:
23200+ $ref: '#/components/schemas/InternalServerResponse'
23201+ description: Internal Server Error - Unexpected server error
23202+ summary: Top apps by token usage
23203+ tags:
23204+ - Datasets
23205+ x-speakeasy-pagination:
23206+ inputs:
23207+ - in: parameters
23208+ name: offset
23209+ type: offset
23210+ - in: parameters
23211+ name: limit
23212+ type: limit
23213+ outputs:
23214+ results: $.data
23215+ type: offsetLimit
2291823216 /datasets/rankings-daily:
2291923217 get:
2292023218 description: |-
0 commit comments