Skip to content

[Feature] Add Responses API support for OpenRouter provider #1527

@chtushar

Description

@chtushar

What Would You Like to See with the Gateway?

Description:

OpenRouter now supports the Responses API (POST /v1/responses), which is compatible with the OpenAI Responses API format. The OpenRouter provider in the gateway currently only supports chatComplete — this issue tracks adding support for the Responses API endpoints.

Endpoints to support:

  • POST /v1/responses — Create a response
  • GET /v1/responses/:id — Retrieve a response
  • DELETE /v1/responses/:id — Delete a response
  • GET /v1/responses/:id/input_items — List response input items

Implementation approach:

Since OpenRouter's Responses API is OpenAI-compatible, this can reuse the existing open-ai-base infrastructure:

  1. createModelResponse.ts — Use createModelResponseParams() from open-ai-base with OpenRouter-specific extra parameters: provider (routing preferences), plugins, top_k, frequency_penalty, presence_penalty, session_id, and trace.
  2. api.ts — Add endpoint mappings for createModelResponse/v1/responses and basePath handling for the other three endpoints.
  3. index.ts — Register configs and reuse OpenAICreateModelResponseTransformer, OpenAIGetModelResponseTransformer, OpenAIDeleteModelResponseTransformer, and OpenAIListInputItemsResponseTransformer parameterized with the OPENROUTER provider constant.

OpenRouter-specific parameters (beyond standard OpenAI Responses API):

  • provider — Routing preferences (order, only, ignore, sort, max_price)
  • plugins — Enable features like auto-router, moderation, web, file-parser
  • top_k — Sampling parameter
  • frequency_penalty / presence_penalty — Generation parameters
  • session_id — Conversation/workflow grouping
  • trace — Observability (trace_id, span_name, parent_span_id)

Streaming and non-streaming modes are both supported. Streaming uses native SSE passthrough (same event format as OpenAI), and JSON-to-stream conversion for cache hits works via the existing OpenAIModelResponseJSONToStreamGenerator.

Context for your Request

No response

Your Twitter/LinkedIn

https://x.com/ctushr

Metadata

Metadata

Assignees

Labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions