AI model gateway: one OpenAI-compatible endpoint that routes to many model providers, with usage metering and billing built in.
This is a community listing. If you own this API, you can request ownership.
npm install omnistream-sdkimport { OmniClient } from "omnistream-sdk";
const omni = new OmniClient({ token: process.env.OMNI_KEY! });
// One key reaches every API on the marketplace.
const data = await omni.call("unorouter/relayAlphaSearch");One install, one key - the same client calls every API on the marketplace.
Relay Alpha Search
Relay Audio Speech
Relay Audio Transcriptions
Relay Audio Translations
Relay Chat Completions
Relay Completions
Get V1 Dashboard Billing Subscription
Get V1 Dashboard Billing Usage
/**
* UnoRouter - generated by OmniStream from UnoRouter's OpenAPI spec.
* One typed method per endpoint. A single Omni key reaches the API.
*/
const DEFAULT_BASE = "https://grid.skinvaults.online/v1/proxy/unorouter";
export class UnoRouterError extends Error {
status: number;
code?: string;
constructor(status: number, code: string | undefined, message?: string) {
super(message || `UnoRouter error ${status}`);
this.name = "UnoRouterError";
this.status = status;
this.code = code;
}
}
export interface UnoRouterOptions {
baseUrl?: string;
fetch?: typeof fetch;
timeoutMs?: number;
}
export class UnoRouter {
/** @param token Your OmniStream key (one key for every API). */
constructor(private token: string, private opts: UnoRouterOptions = {}) {
if (!token) throw new Error("UnoRouter: token is required");
}
rateLimit: { remainingMinute?: number; remainingDay?: number } | null = null;
private async _request(method: string, path: string, { params, body }: { params?: Record<string, unknown>; body?: unknown } = {}): Promise<any> {
const f = this.opts.fetch ?? globalThis.fetch;
const url = new URL((this.opts.baseUrl ?? DEFAULT_BASE).replace(/\/+$/, "") + path);
if (params) for (const [k, v] of Object.entries(params)) if (v != null) url.searchParams.set(k, String(v));
const headers: Record<string, string> = { "x-omni-key": this.token };
if (body !== undefined) headers["content-type"] = "application/json";
const res = await f(url, { method, headers, body: body !== undefined ? JSON.stringify(body) : undefined });
this.rateLimit = {
remainingMinute: Number(res.headers.get("x-ratelimit-remaining-minute")) || undefined,
remainingDay: Number(res.headers.get("x-ratelimit-remaining-day")) || undefined,
};
const data = await res.json().catch(() => ({}));
if (!res.ok) throw new UnoRouterError(res.status, data?.error?.code, data?.error?.message);
return data.data ?? data;
}
/** Relay Alpha Search */
relayAlphaSearch(): Promise<any> {
return this._request("POST", "/v1/alpha/search", { });
}
/** Relay Audio Speech */
relayAudioSpeech(): Promise<any> {
return this._request("POST", "/v1/audio/speech", { });
}
/** Relay Audio Transcriptions */
relayAudioTranscriptions(): Promise<any> {
return this._request("POST", "/v1/audio/transcriptions", { });
}
/** Relay Audio Translations */
relayAudioTranslations(): Promise<any> {
return this._request("POST", "/v1/audio/translations", { });
}
/** Relay Chat Completions */
relayChatCompletions(): Promise<any> {
return this._request("POST", "/v1/chat/completions", { });
}
/** Relay Completions */
relayCompletions(): Promise<any> {
return this._request("POST", "/v1/completions", { });
}
/** Get V1 Dashboard Billing Subscription */
getV1DashboardBillingSubscription(): Promise<any> {
return this._request("GET", "/v1/dashboard/billing/subscription", {});
}
/** Get V1 Dashboard Billing Usage */
getV1DashboardBillingUsage(): Promise<any> {
return this._request("GET", "/v1/dashboard/billing/usage", {});
}
/** Relay Edits */
relayEdits(): Promise<any> {
return this._request("POST", "/v1/edits", { });
}
/** Relay Embeddings */
relayEmbeddings(): Promise<any> {
return this._request("POST", "/v1/embeddings", { });
}
/** Relay Engine Embeddings */
relayEngineEmbeddings(params: { "model": string }): Promise<any> {
return this._request("POST", "/v1/engines/{model}/embeddings", { params });
}
/** Get V1 Files */
getV1Files(): Promise<any> {
return this._request("GET", "/v1/files", {});
}
/** Post V1 Files */
postV1Files(): Promise<any> {
return this._request("POST", "/v1/files", { });
}
/** Get V1 Files Id */
getV1FilesId(params: { "id": string }): Promise<any> {
return this._request("GET", "/v1/files/{id}", { params });
}
/** Delete V1 Files Id */
deleteV1FilesId(params: { "id": string }): Promise<any> {
return this._request("DELETE", "/v1/files/{id}", { params });
}
/** Get V1 Files Id Content */
getV1FilesIdContent(params: { "id": string }): Promise<any> {
return this._request("GET", "/v1/files/{id}/content", { params });
}
/** Get V1 Fine Tunes */
getV1FineTunes(): Promise<any> {
return this._request("GET", "/v1/fine-tunes", {});
}
/** Post V1 Fine Tunes */
postV1FineTunes(): Promise<any> {
return this._request("POST", "/v1/fine-tunes", { });
}
/** Get V1 Fine Tunes Id */
getV1FineTunesId(params: { "id": string }): Promise<any> {
return this._request("GET", "/v1/fine-tunes/{id}", { params });
}
/** Post V1 Fine Tunes Id Cancel */
postV1FineTunesIdCancel(params: { "id": string }): Promise<any> {
return this._request("POST", "/v1/fine-tunes/{id}/cancel", { params });
}
/** Get V1 Fine Tunes Id Events */
getV1FineTunesIdEvents(params: { "id": string }): Promise<any> {
return this._request("GET", "/v1/fine-tunes/{id}/events", { params });
}
/** Relay Image Edits */
relayImageEdits(): Promise<any> {
return this._request("POST", "/v1/images/edits", { });
}
/** Relay Image Generations */
relayImageGenerations(): Promise<any> {
return this._request("POST", "/v1/images/generations", { });
}
/** Relay Not Implemented */
relayNotImplemented(): Promise<any> {
return this._request("POST", "/v1/images/variations", { });
}
/** Relay Messages */
relayMessages(): Promise<any> {
return this._request("POST", "/v1/messages", { });
}
/** Relay List Models */
relayListModels(): Promise<any> {
return this._request("GET", "/v1/models", {});
}
/** Relay Gemini Model */
relayGeminiModel(): Promise<any> {
return this._request("POST", "/v1/models/*path", { });
}
/** Relay Retrieve Model */
relayRetrieveModel(params: { "model": string }): Promise<any> {
return this._request("GET", "/v1/models/{model}", { params });
}
/** Delete V1 Models Model */
deleteV1ModelsModel(params: { "model": string }): Promise<any> {
return this._request("DELETE", "/v1/models/{model}", { params });
}
/** Relay Moderations */
relayModerations(): Promise<any> {
return this._request("POST", "/v1/moderations", { });
}
/** Relay Rerank */
relayRerank(): Promise<any> {
return this._request("POST", "/v1/rerank", { });
}
/** Relay Responses */
relayResponses(): Promise<any> {
return this._request("POST", "/v1/responses", { });
}
/** Relay Responses Compact */
relayResponsesCompact(): Promise<any> {
return this._request("POST", "/v1/responses/compact", { });
}
/** Post V1 Video Generations */
postV1VideoGenerations(): Promise<any> {
return this._request("POST", "/v1/video/generations", { });
}
/** Get V1 Video Generations Task_id */
getV1VideoGenerationsTaskId(params: { "task_id": string }): Promise<any> {
return this._request("GET", "/v1/video/generations/{task_id}", { params });
}
/** Post V1 Videos */
postV1Videos(): Promise<any> {
return this._request("POST", "/v1/videos", { });
}
/** Get V1 Videos Task_id */
getV1VideosTaskId(params: { "task_id": string }): Promise<any> {
return this._request("GET", "/v1/videos/{task_id}", { params });
}
/** Video Proxy */
videoProxy(params: { "task_id": string }): Promise<any> {
return this._request("GET", "/v1/videos/{task_id}/content", { params });
}
/** Post V1 Videos Video_id Remix */
postV1VideosVideoIdRemix(params: { "video_id": string }): Promise<any> {
return this._request("POST", "/v1/videos/{video_id}/remix", { params });
}
}
export default UnoRouter;
No reviews yet. Be the first to rate this API.
No. UnoRouter is included with your Omni key, so a single OmniStream key is enough to start calling it. There is no separate signup with the provider and no second key to manage.
AI model gateway: one OpenAI-compatible endpoint that routes to many model providers, with usage metering and billing built in. It exposes 39 endpoints over POST, GET, DELETE, including POST /v1/alpha/search, POST /v1/audio/speech, POST /v1/audio/transcriptions.
Install the OmniStream SDK for your language and call UnoRouter through it. The client is generated from this API's OpenAPI spec, so parameters and responses are fully typed, and the same client also calls every other API in the marketplace.
You can start on the free plan. OmniStream charges for the unified SDK, key storage and proxy rather than for UnoRouter itself.
remove.bg: Remove the background of any image
Relay Edits
Relay Embeddings
Relay Engine Embeddings
Get V1 Files
Post V1 Files
Get V1 Files Id
Delete V1 Files Id
Get V1 Files Id Content
Get V1 Fine Tunes
Post V1 Fine Tunes
Get V1 Fine Tunes Id
Post V1 Fine Tunes Id Cancel
Get V1 Fine Tunes Id Events
Relay Image Edits
Relay Image Generations
Relay Not Implemented
Relay Messages
Relay List Models
Relay Gemini Model
Relay Retrieve Model
Delete V1 Models Model
Relay Moderations
Relay Rerank
Relay Responses
Relay Responses Compact
Post V1 Video Generations
Get V1 Video Generations Task_id
Post V1 Videos
Get V1 Videos Task_id
Video Proxy
Post V1 Videos Video_id Remix