The Universal Model Selector
Stop hardcoding model dropdowns. One React component that discovers and selects models from any OpenAI-compatible API.
Point it at an endpoint.
It does the rest.
Give it a base URL and the component fetches available models, normalizes their metadata across providers, and renders a searchable, filterable selector. Venice.ai, OpenRouter, or your own endpoint — it all works the same.
// This is all you need <ModelSelector baseUrl="https://api.venice.ai/api/v1" value={model} onChange={setModel} />
Every modality, one component
Text, image, video, inpaint, embedding, TTS, ASR, and upscale. Each type surfaces relevant metadata — context length for LLMs, aspect ratios for image models, voices for TTS.
Showing Image models · Generation
Click through the type filters — the model list updates automatically
Full model data,
zero extra API calls.
Most selectors give you an ID and leave you to fetch the rest. This one calls onChange(id, model) with the complete normalized object — provider, type, pricing, context length, privacy flags, and more.
Select a model on the right
to see the full object here
Let it fetch, or bring your own models
Managed mode auto-discovers models from any endpoint. Controlled mode takes your own array — no network calls, full control. Styles are encapsulated either way.
import { ModelSelector } from "open-model-selector"; import "open-model-selector/styles.css"; <ModelSelector baseUrl="https://api.venice.ai/api/v1" value={model} onChange={(id, model) => { ... }} />
Try it yourself
Configure the component, switch modes, filter by type, and see the generated code update in real time.
Configuration
Select a model to see details