{"jtbd":{"id":"online-bandit-model-routing-adaptation","slug":"online-bandit-model-routing-adaptation","name":"Online Bandit & Pareto Model Routing Adaptation (Cost / Latency / Quality Learning)","shortName":"Online bandit model routing adaptation"},"recommended":{"role":"depot_pick","id":"openrouter","slug":"openrouter","name":"OpenRouter","website":"https://openrouter.ai","editorialOverall":8.04,"scoreKind":"curated_estimate","scoreAsOf":"2026-10-28","price":{"available":true,"unavailableReason":null,"skus":[{"id":"openrouter-claude-sonnet-55-input","providerId":"openrouter","sku":"anthropic/claude-sonnet-5.5","unit":"usd_per_million_input_tokens","amountUsd":2,"currency":"USD","sourceUrl":"https://openrouter.ai/api/v1/models","asOf":"2026-10-28","normalizationStatus":"sourced_token_price","normalizedUsdPerMillionTokens":2,"normalizationReason":"per_token_field_times_1e6","priceSortEligible":true,"qualifier":"OpenRouter pass-through field, not copied onto the anthropic provider. pricing.prompt raw 0.000002. Docs: cost per input token, USD.","verifiedAsOf":"2026-10-28","sourceCheck":"reconfirmed","ageDays":1,"stale":false,"firstSeen":"2026-10-03","lastChanged":null,"frequentlyChanging":false},{"id":"openrouter-grok-47-input","providerId":"openrouter","sku":"x-ai/grok-4.7","unit":"usd_per_million_input_tokens","amountUsd":2,"currency":"USD","sourceUrl":"https://openrouter.ai/api/v1/models","asOf":"2026-10-28","normalizationStatus":"sourced_token_price","normalizedUsdPerMillionTokens":2,"normalizationReason":"per_token_field_times_1e6","priceSortEligible":true,"qualifier":"Base prompt field only. Response also has overrides at min_prompt_tokens 200000 (prompt 0.000004). Not blended.","verifiedAsOf":"2026-10-28","sourceCheck":"reconfirmed","ageDays":1,"stale":false,"firstSeen":"2026-10-03","lastChanged":null,"frequentlyChanging":false},{"id":"openrouter-claude-sonnet-55-output","providerId":"openrouter","sku":"anthropic/claude-sonnet-5.5","unit":"usd_per_million_output_tokens","amountUsd":10,"currency":"USD","sourceUrl":"https://openrouter.ai/api/v1/models","asOf":"2026-10-28","normalizationStatus":"sourced_token_price","normalizedUsdPerMillionTokens":10,"normalizationReason":"per_token_field_times_1e6","priceSortEligible":false,"qualifier":"pricing.completion raw 0.00001","verifiedAsOf":"2026-10-28","sourceCheck":"reconfirmed","ageDays":1,"stale":false,"firstSeen":"2026-10-03","lastChanged":null,"frequentlyChanging":false},{"id":"openrouter-grok-47-output","providerId":"openrouter","sku":"x-ai/grok-4.7","unit":"usd_per_million_output_tokens","amountUsd":6,"currency":"USD","sourceUrl":"https://openrouter.ai/api/v1/models","asOf":"2026-10-28","normalizationStatus":"sourced_token_price","normalizedUsdPerMillionTokens":6,"normalizationReason":"per_token_field_times_1e6","priceSortEligible":false,"qualifier":"pricing.completion raw 0.000006","verifiedAsOf":"2026-10-28","sourceCheck":"reconfirmed","ageDays":1,"stale":false,"firstSeen":"2026-10-03","lastChanged":null,"frequentlyChanging":false}],"normalizedUsdPerMillionTokens":null,"normalizationStatus":"ambiguous","normalizationReason":"input_output_split_not_a_single_rate"}},"priceComparison":{"skuKind":"chat_completion_input","unit":"usd_per_million_input_tokens","comparison":"min sourced input SKU among candidates; not quality-adjusted","amountLabel":"Input $/1M","reportsUsdPerMillion":true,"matchedCandidates":1},"cheapestInput":{"providerId":"openrouter","slug":"openrouter","name":"OpenRouter","skuId":"openrouter-claude-sonnet-55-input","item":"anthropic/claude-sonnet-5.5","plan":"anthropic/claude-sonnet-5.5 — OpenRouter pass-through field, not copied onto the anthropic provider","isFloorPrice":true,"floorWarning":"Provider-wide floor SKU; may not be the flagship model scored for this JTBD.","skuKind":"chat_completion_input","unit":"usd_per_million_input_tokens","comparison":"min sourced input SKU among candidates; not quality-adjusted","amountUsd":2,"usdPerMillionInputTokens":2,"sku":{"id":"openrouter-claude-sonnet-55-input","providerId":"openrouter","sku":"anthropic/claude-sonnet-5.5","unit":"usd_per_million_input_tokens","amountUsd":2,"currency":"USD","sourceUrl":"https://openrouter.ai/api/v1/models","asOf":"2026-10-28","normalizationStatus":"sourced_token_price","normalizedUsdPerMillionTokens":2,"normalizationReason":"per_token_field_times_1e6","priceSortEligible":true,"qualifier":"OpenRouter pass-through field, not copied onto the anthropic provider. pricing.prompt raw 0.000002. Docs: cost per input token, USD.","verifiedAsOf":"2026-10-28","sourceCheck":"reconfirmed","ageDays":1,"stale":false,"firstSeen":"2026-10-03","lastChanged":null,"frequentlyChanging":false},"tiedWith":[]},"cheapest":{"providerId":"openrouter","slug":"openrouter","name":"OpenRouter","skuId":"openrouter-claude-sonnet-55-input","item":"anthropic/claude-sonnet-5.5","plan":"anthropic/claude-sonnet-5.5 — OpenRouter pass-through field, not copied onto the anthropic provider","isFloorPrice":true,"floorWarning":"Provider-wide floor SKU; may not be the flagship model scored for this JTBD.","skuKind":"chat_completion_input","unit":"usd_per_million_input_tokens","comparison":"min sourced input SKU among candidates; not quality-adjusted","amountUsd":2,"usdPerMillionInputTokens":2,"sku":{"id":"openrouter-claude-sonnet-55-input","providerId":"openrouter","sku":"anthropic/claude-sonnet-5.5","unit":"usd_per_million_input_tokens","amountUsd":2,"currency":"USD","sourceUrl":"https://openrouter.ai/api/v1/models","asOf":"2026-10-28","normalizationStatus":"sourced_token_price","normalizedUsdPerMillionTokens":2,"normalizationReason":"per_token_field_times_1e6","priceSortEligible":true,"qualifier":"OpenRouter pass-through field, not copied onto the anthropic provider. pricing.prompt raw 0.000002. Docs: cost per input token, USD.","verifiedAsOf":"2026-10-28","sourceCheck":"reconfirmed","ageDays":1,"stale":false,"firstSeen":"2026-10-03","lastChanged":null,"frequentlyChanging":false},"tiedWith":[]},"recommendedWorkloadQuote":{"providerId":"openrouter","providerName":"OpenRouter","skuId":"openrouter-claude-sonnet-55-input","item":"anthropic/claude-sonnet-5.5","plan":"anthropic/claude-sonnet-5.5 — OpenRouter pass-through field, not copied onto the anthropic provider","unit":"usd_per_million_input_tokens","amountUsd":2,"outputSkuId":"openrouter-claude-sonnet-55-output","outputItem":"anthropic/claude-sonnet-5.5","outputAmountUsd":10,"outputUnit":"usd_per_million_output_tokens","sourceUrl":"https://openrouter.ai/api/v1/models","asOf":"2026-10-28","pricingLastVerifiedAt":"2026-10-28","isFlagshipForJob":false,"differsFromFloorCheapest":false,"representativeQuote":{"skuId":"openrouter-claude-sonnet-55-input","item":"anthropic/claude-sonnet-5.5","plan":"anthropic/claude-sonnet-5.5 — OpenRouter pass-through field, not copied onto the anthropic provider","amountUsd":2,"inputOrUnitUsd":2,"unit":"usd_per_million_input_tokens","outputUsd":10,"outputUnit":"usd_per_million_output_tokens","sourceUrl":"https://openrouter.ai/api/v1/models","asOf":"2026-10-28"},"estimatedTaskCost":{"tasks":1000,"retryAndToolOverheadMultiplier":1.15,"retryToolOverheadMultiplier":1.15,"inputTokensPerTask":4000,"outputTokensPerTask":1000,"baseCostPer1kTasksUsd":18,"totalUsd":20.7,"estimatedTotalUsd":20.7,"perTaskUsd":0.0207,"estimatedCostPerTaskUsd":0.0207,"formula":"((4,000 in * 2/1M + 1,000 out * 10/1M) * 1,000 tasks) * 1.15 overhead","assumptions":"1,000 agent tasks @ 4k input + 1k output tokens/task with 1.15x retry/tool-call overhead."}},"representativeQuote":{"skuId":"openrouter-claude-sonnet-55-input","item":"anthropic/claude-sonnet-5.5","plan":"anthropic/claude-sonnet-5.5 — OpenRouter pass-through field, not copied onto the anthropic provider","amountUsd":2,"inputOrUnitUsd":2,"unit":"usd_per_million_input_tokens","outputUsd":10,"outputUnit":"usd_per_million_output_tokens","sourceUrl":"https://openrouter.ai/api/v1/models","asOf":"2026-10-28"},"estimatedTaskCost":{"tasks":1000,"retryAndToolOverheadMultiplier":1.15,"retryToolOverheadMultiplier":1.15,"inputTokensPerTask":4000,"outputTokensPerTask":1000,"baseCostPer1kTasksUsd":18,"totalUsd":20.7,"estimatedTotalUsd":20.7,"perTaskUsd":0.0207,"estimatedCostPerTaskUsd":0.0207,"formula":"((4,000 in * 2/1M + 1,000 out * 10/1M) * 1,000 tasks) * 1.15 overhead","assumptions":"1,000 agent tasks @ 4k input + 1k output tokens/task with 1.15x retry/tool-call overhead."},"cheapestGoodEnough":{"band":{"rule":"editorial overall >= Depot Pick overall - 0.5","minOverall":7.54,"pickOverall":8.04,"points":0.5},"pick":{"providerId":"openrouter","slug":"openrouter","name":"OpenRouter","skuId":"openrouter-claude-sonnet-55-input","item":"anthropic/claude-sonnet-5.5","plan":"anthropic/claude-sonnet-5.5 — OpenRouter pass-through field, not copied onto the anthropic provider","isFloorPrice":true,"floorWarning":"Provider-wide floor SKU; may not be the flagship model scored for this JTBD.","skuKind":"chat_completion_input","unit":"usd_per_million_input_tokens","comparison":"min sourced input SKU among candidates; not quality-adjusted","amountUsd":2,"usdPerMillionInputTokens":2,"sku":{"id":"openrouter-claude-sonnet-55-input","providerId":"openrouter","sku":"anthropic/claude-sonnet-5.5","unit":"usd_per_million_input_tokens","amountUsd":2,"currency":"USD","sourceUrl":"https://openrouter.ai/api/v1/models","asOf":"2026-10-28","normalizationStatus":"sourced_token_price","normalizedUsdPerMillionTokens":2,"normalizationReason":"per_token_field_times_1e6","priceSortEligible":true,"qualifier":"OpenRouter pass-through field, not copied onto the anthropic provider. pricing.prompt raw 0.000002. Docs: cost per input token, USD.","verifiedAsOf":"2026-10-28","sourceCheck":"reconfirmed","ageDays":1,"stale":false,"firstSeen":"2026-10-03","lastChanged":null,"frequentlyChanging":false},"tiedWith":[],"overall":8.04},"reason":null,"cheaperButBelowBand":[]},"dates":{"scoreAsOf":"2026-10-28","scoreKind":"curated_estimate","priceVerifiedAsOf":"2026-10-28","note":"scoreAsOf is when the editorial score was last set; priceVerifiedAsOf is the newest fact-check of the pick's price rows. They are separate: a fresh price check does not re-score."},"sourcedInputs":[{"providerId":"openrouter","slug":"openrouter","name":"OpenRouter","skuId":"openrouter-claude-sonnet-55-input","item":"anthropic/claude-sonnet-5.5","plan":"anthropic/claude-sonnet-5.5 — OpenRouter pass-through field, not copied onto the anthropic provider","isFloorPrice":true,"floorWarning":"Provider-wide floor SKU; may not be the flagship model scored for this JTBD.","skuKind":"chat_completion_input","unit":"usd_per_million_input_tokens","amountUsd":2,"usdPerMillionInputTokens":2,"sku":{"id":"openrouter-claude-sonnet-55-input","providerId":"openrouter","sku":"anthropic/claude-sonnet-5.5","unit":"usd_per_million_input_tokens","amountUsd":2,"currency":"USD","sourceUrl":"https://openrouter.ai/api/v1/models","asOf":"2026-10-28","normalizationStatus":"sourced_token_price","normalizedUsdPerMillionTokens":2,"normalizationReason":"per_token_field_times_1e6","priceSortEligible":true,"qualifier":"OpenRouter pass-through field, not copied onto the anthropic provider. pricing.prompt raw 0.000002. Docs: cost per input token, USD.","verifiedAsOf":"2026-10-28","sourceCheck":"reconfirmed","ageDays":1,"stale":false,"firstSeen":"2026-10-03","lastChanged":null,"frequentlyChanging":false},"isDepotPick":true}],"pickIsPriceWinner":null,"priceWinnerReason":"fewer_than_two_priced_candidates","priceWinnerNote":"Only 1 candidate has a sourced input $/1M; nothing was compared, so pickIsPriceWinner is null.","excluded":2,"coverage":{"candidates":4,"withAnySourcedRow":2,"withSourcedInputUsdPerMillion":1,"withMatchingPrice":1,"excludedNoSourcedPrice":2,"excludedFromCheapestInput":3},"normalizedUsdPerMillionTokens":null,"normalizationReason":"input_and_output_are_not_blended","seo":{"published":false,"reason":"Only 1 candidate(s) have a matching Input $/1M (chat_completion_input). Need 3 before a crawlable price section. Quote JSON is still returned."},"skipTopPick":false,"editorialDefault":{"providerId":"openrouter","name":"OpenRouter","overall":8.04,"isConstraintValidatedRecommendation":true,"constraintValidatedRecommendationId":"openrouter","note":"Editorial Depot Pick is also the constraint-validated recommendation."},"matchedConstraints":[],"unsupportedConstraints":[],"routePlan":{"jtbdId":"online-bandit-model-routing-adaptation","primary":{"providerId":"openrouter","name":"OpenRouter","overall":8.04,"scoreBand":{"low":7.5,"mid":8,"high":8.5,"halfWidth":0.5,"basis":"editorial_prior","display":"7.5–8.5 (editorial prior)"},"scoreLayers":{"editorialPrior":8.04,"measuredBenchmark":null,"verifiedOutcomeScore":null,"verifiedOutcomeCount":0,"accountRuntimeState":"unprobed"},"pricingLastVerifiedAt":"2026-10-28","editorialPriorAsOf":"2026-10-28","role":"primary","reason":"Editorial Depot Pick for Online Bandit & Pareto Model Routing Adaptation (Cost / Latency / Quality Learning); healthy/eligible under caller constraints."},"omittedReason":null,"fallback":[{"providerId":"portkey","name":"Portkey","overall":8.36,"scoreBand":{"low":7.8,"mid":8.4,"high":9,"halfWidth":0.6,"basis":"editorial_prior","display":"7.8–9.0 (editorial prior)"},"scoreLayers":{"editorialPrior":8.36,"measuredBenchmark":null,"verifiedOutcomeScore":null,"verifiedOutcomeCount":0,"accountRuntimeState":"unprobed"},"pricingLastVerifiedAt":"2026-10-28","editorialPriorAsOf":"2026-10-28","role":"fallback","reason":"Ranked fallback route for Online Bandit & Pareto Model Routing Adaptation (Cost / Latency / Quality Learning)."},{"providerId":"helicone","name":"Helicone","overall":8.2,"scoreBand":{"low":7.6,"mid":8.2,"high":8.8,"halfWidth":0.6,"basis":"editorial_prior","display":"7.6–8.8 (editorial prior)"},"scoreLayers":{"editorialPrior":8.2,"measuredBenchmark":null,"verifiedOutcomeScore":null,"verifiedOutcomeCount":0,"accountRuntimeState":"unprobed"},"pricingLastVerifiedAt":"2026-10-28","editorialPriorAsOf":"2026-10-28","role":"fallback","reason":"Ranked fallback route for Online Bandit & Pareto Model Routing Adaptation (Cost / Latency / Quality Learning)."},{"providerId":"braintrust","name":"Braintrust","overall":8.27,"scoreBand":{"low":7.7,"mid":8.3,"high":8.9,"halfWidth":0.6,"basis":"editorial_prior","display":"7.7–8.9 (editorial prior)"},"scoreLayers":{"editorialPrior":8.27,"measuredBenchmark":null,"verifiedOutcomeScore":null,"verifiedOutcomeCount":0,"accountRuntimeState":"unprobed"},"pricingLastVerifiedAt":"2026-10-28","editorialPriorAsOf":"2026-10-28","role":"fallback","reason":"Ranked fallback route for Online Bandit & Pareto Model Routing Adaptation (Cost / Latency / Quality Learning)."}],"disqualified":[],"expectedRegret":{"scoreDeltaVsUnconstrainedPick":0,"unconstrainedPickId":"openrouter","activePrimaryId":"openrouter","summary":"0.00 score regret: unconstrained editorial pick satisfies all caller constraints."},"evidenceAgeDays":{"editorialScoreAgeDays":1,"pricingVerifiedAgeDays":1,"editorialPriorAsOf":"2026-10-28","pricingLastVerifiedAt":"2026-10-28"},"confidenceBand":{"low":7.5,"mid":8,"high":8.5,"halfWidth":0.5,"basis":"editorial_prior","display":"7.5–8.5 (editorial prior)"},"constraintsApplied":false,"matchedConstraints":[],"unsupportedConstraints":[],"malformedConstraints":[],"conflictingConstraints":[],"constraintDigest":"sha256:eb9d397ca67bcf6889704910eeb3a58796ea2ef5e54fb6289c71f6114f2c67a7","constraintBundle":{"schemaVersion":"agentdepot.constraints.v1","task":null,"jtbd":"online-bandit-model-routing-adaptation","constraintsRaw":"","constraintTokens":[],"constraintDigest":"sha256:eb9d397ca67bcf6889704910eeb3a58796ea2ef5e54fb6289c71f6114f2c67a7","matchedConstraints":[],"unsupportedConstraints":[],"malformedConstraints":[],"conflictingConstraints":[],"typedConstraints":[],"quotaExhausted":[],"degraded":[],"healthy":[],"budgetUsd":null,"maxLatencyMs":null,"region":null,"privacy":null,"exit":[],"existing":[],"existingSubscriptions":[],"requiredCapabilities":[],"switchingCost":null}},"freshness_state":"fresh","cite":"Depot Pick for online-bandit-model-routing-adaptation: openrouter (editorial prior; asOf 2026-10-28). See GET /api/jtbds/online-bandit-model-routing-adaptation + GET /api/methodology.","asOf":"2026-10-28","honesty":["Recommended provider is the current Depot Pick from GET /api/decide. This quote does not change scores.","SKU rows come from data/pricing-rows.json via GET /api/pricing. Input and output stay on separate rows.","cheapestInput compares one native unit matching this job; non-token jobs never borrow chat $/1M rates.","pickIsPriceWinner is null when fewer than 2 candidates share a matching sourced unit price."],"links":{"decide":"/api/decide?jtbd=online-bandit-model-routing-adaptation","quote":"/api/quote?jtbd=online-bandit-model-routing-adaptation","pricing":"/api/pricing?provider=openrouter","leaderboardPrice":"/api/leaderboards?jtbd=online-bandit-model-routing-adaptation&sort=price","humanPage":"/jtbds/online-bandit-model-routing-adaptation#quote","methodology":"/api/methodology"},"sourceConflicts":[{"providerId":"helicone","field":"free storage on paid plans: '1 GB free' in the comparison table vs no free GB in the page's calculator and Helicone's billing tiers","sourceUrl":"https://www.helicone.ai/pricing","asOf":"2026-10-22","quotes":["Storage 1 GB 1 GB free + usage-based ↑ 1 GB free + usage-based ↑ 1 GB free + usage-based ↑ (comparison table, Hobby / Pro / Team / Enterprise, https://www.helicone.ai/pricing); 'On the Free plan, you get 10,000 free requests and 1 GB of storage.' (FAQ)","Storage 0.30 GB $ 0.97 … Requests 10K requests $ 0.00 … Estimated monthly total $ 0.97 (calculator default, i.e. 0.30 GB × $3.25 with no free GB); 'export const BYTE_PRICING = { ratePerGB: GB_PRICING_TIERS[0].ratePerGB, freeGB: 0, };' (https://raw.githubusercontent.com/Helicone/helicone/main/packages/pricing/tiers.ts)"],"safeAssumption":"Pro/Team storage is costed from the first GB (included 0) as the calculator and billing code do; at most $3.25/month higher than the table's '1 GB free'. Hobby keeps its 1 GB cap."},{"providerId":"portkey","field":"Portkey plan allowance unit: cards 'recorded logs per month' vs overage line, comparison table and FAQ 'requests'","sourceUrl":"https://portkey.ai/pricing","asOf":"2026-10-22","quotes":["'Start for Free 10k recorded logs per month Exceeding this limit doesn’t affect your requests; only logs beyond the limit are not recorded.' … 'Upgrade Now 100k recorded logs per month +$9 overages per additional 100k requests' (https://portkey.ai/pricing plan cards)","'Requests per Month No Limit 10K 100K Custom Requests per Month Overage No Overage Allowed $9/Month for Every 100K Up to 3M Requests Custom Pricing Overage' (https://portkey.ai/pricing Detailed Plan Comparision) … FAQ 'On the pro plan, you'll be charged for recording & storing  additional requests.'"],"safeAssumption":"No price impact: the same numbers (10K / 100K, $9 per 100K) appear under both words. Depot uses one meter, portkey_requests, and assumes one recorded gateway request = one recorded log; if Portkey counts logs differently (e.g. several logs per request), the estimate would be low and the user should count recorded logs from their Portkey dashboard."}],"volumeEstimateHint":"Add &volume=<number> for a plan-level monthly cost (GET /api/estimate?jtbd=online-bandit-model-routing-adaptation&workload=...)"}