@visgate_ai/server-proxy
v0.1.5
Published
Framework-agnostic server proxy for Visgate API — add your API key on the server, keep it out of the client.
Downloads
512
Readme
@visgate_ai/server-proxy
Server-side proxy for the Visgate API. Keeps your API key on the server so the client never sees it.
- Framework-agnostic core:
proxyToVisgate(request, options)— use with any Node server. - Next.js: Drop-in route handlers; one line to mount the proxy.
Install
npm install @visgate_ai/server-proxyEnvironment
On the server, set:
- VISGATE_API_KEY (required) — your Visgate API key (
vg-...). - VISGATE_BASE_URL (optional) — defaults to
https://visgateai.com/api/v1.
BYOK (Bring Your Own Key): To use provider keys on the server (so the client never sends them), set:
- VISGATE_FAL_KEY or FAL_KEY — Fal API key.
- VISGATE_REPLICATE_KEY or REPLICATE_API_TOKEN — Replicate API token.
- VISGATE_RUNWAY_KEY or RUNWAY_API_KEY — Runway API key.
- VISGATE_RUNPOD_KEY or RUNPOD_API_KEY — RunPod API key.
The proxy injects these headers when the client does not send them.
Next.js (App Router)
- Create the route file:
app/api/visgate/[...path]/route.ts
// Video generation can take several minutes; set maxDuration to avoid 502 Bad Gateway.
export const maxDuration = 300;
export { GET, POST, PUT, DELETE, OPTIONS } from "@visgate_ai/server-proxy/next";- In your client (browser), use the Visgate SDK with
proxyUrl:
import { Client } from "@visgate_ai/client";
const client = new Client({ proxyUrl: "/api/visgate" });
const result = await client.generate("a sunset");No API key in the client — the proxy adds it on the server.
For video generation, use a longer client timeout (e.g. 5 minutes) so the request does not abort before the API responds:
const client = new Client({ proxyUrl: "/api/visgate", timeout: 300_000 });
const result = await client.videos.generate("fal-ai/veo3", "a sunset");Core API (any framework)
import { proxyToVisgate } from "@visgate_ai/server-proxy";
// In your handler (e.g. Express, Hono, etc.):
const response = await proxyToVisgate(request, {
pathSegments: ["health"], // or ["videos", "generate"], ["images", "generate"], etc.
// apiKey: process.env.VISGATE_API_KEY (default)
// baseUrl: process.env.VISGATE_BASE_URL (default)
// timeoutMs: 300000 (default 5 min; increase for very long video jobs)
});
// Return response to the clientLicense
MIT
