OpenRouter
A $113M Series B anchored a busy stretch of shipping across the routing layer, developer tools, and enterprise controls.1
Multi-provider failure visibility improved — When all provider fallbacks fail, error responses now carry a previous_errors array listing every attempted provider's error code, message, and name.2 Diagnosing cascading failures across providers no longer requires correlating separate logs.
Enterprise IP filtering went live — Organizations on enterprise plans can restrict API key usage to approved IP address ranges from Privacy settings, tightening the blast radius of any leaked key.3 IP allowlists also began actively blocking non-approved IPs with a 403 response, upgrading what had previously been a passive advisory.4
Presets expanded across three API surfaces — Presets gained support for the Responses API via POST /api/v1/presets/:slug/responses, the Anthropic Messages API via POST /api/v1/presets/:slug/messages, and a direct creation path from inference request bodies.5 The TypeScript and Python SDKs ship the new routes.
Workspace and observability management APIs arrived — New REST endpoints landed for programmatically managing bring-your-own-key credentials and observability destinations (Datadog, Langfuse, LangSmith, and others) via management key authentication.6
Model comparison and rankings got richer — A new comparison tool lets you benchmark up to five models side by side on pricing, context length, and benchmark scores.7 Rankings charts added a percentage-normalized toggle alongside raw token-volume views, and a GET /api/v1/datasets/rankings-daily endpoint exposes the underlying top-50 dataset.8
Activity and logging tools sharpened — Negation filters arrived so any filter chip can be toggled to "is not," Activity deep links now point to individual messages via ?message=<n>, and workspace sidebar navigation surfaces Activity and Logs pre-filtered per workspace.9 The preset_id field on generation responses ties each completion back to the preset that produced it.10