Make sure to expose it in svelte.config.js if needed:
javascriptcopy
1import{defineConfig}from"vite";2import{sveltekit}from"@sveltejs/kit/vite";34exportdefaultdefineConfig({5plugins:[sveltekit()],6define:{7// Expose to server-side code8"process.env.INFERENCE_API_KEY":JSON.stringify(process.env.INFERENCE_API_KEY),9},10});
Check user session using SvelteKit's event.locals:
typescriptcopy
1// src/routes/api/inference/proxy/+server.ts2import{createRequestHandler}from"@inferencesh/sdk/proxy/svelte";3import{error}from"@sveltejs/kit";45constproxyHandler=createRequestHandler();67exportconstPOST=async(event)=>{8// Check auth (set by hooks.server.ts)9if(!event.locals.user){10throwerror(401,"Unauthorized");11}1213returnproxyHandler(event);14};1516exportconstGET=async(event)=>{17if(!event.locals.user){18throwerror(401,"Unauthorized");19}2021returnproxyHandler(event);22};
Custom API Key Resolution
typescriptcopy
1import{createRequestHandler}from"@inferencesh/sdk/proxy/svelte";23consthandler=createRequestHandler({4resolveApiKey:async()=>{5// Load from secrets manager or database6returnawaitgetSecret("INFERENCE_API_KEY");7}8});910exportconstGET=handler;11exportconstPOST=handler;
Streaming
The SvelteKit handler supports streaming responses for real-time task updates.