The Vercel AI SDK abstracts your LLM provider. Endprompt abstracts your prompts. Together, your AI features are fully decoupled from your codebase — update prompts without touching code or triggering a redeploy.
The Vercel AI SDK gives you a clean, provider-agnostic way to call LLMs. But it doesn't solve what happens to your prompts. They're still template strings sitting inside your generateText calls — in your code, in your repo, requiring a deploy every time something needs to change.
Endprompt is the missing layer. Move your prompts out of your codebase and into versioned, observable endpoints. Your AI SDK setup stays the same. Your prompts become infrastructure.
A typical AI SDK setup looks like this:
import { generateText } from 'ai'
import { openai } from '@ai-sdk/openai'
const { text } = await generateText({
model: openai('gpt-4o'),
system: 'You are a helpful assistant that summarises content concisely.',
prompt: `Summarise the following in 3 bullet points:\n\n${content}`,
})
Both the system prompt and the prompt string are hardcoded. Change the wording, adjust the tone, swap the model — any of it requires editing the file, committing, and redeploying.
There's no version history for the prompt itself. If outputs start degrading, there's nothing to diff against. If a change breaks something, there's no rollback — only a new deploy.
You define the endpoint in the Endprompt dashboard: input schema, system prompt, user prompt template (using Liquid templating), and model. Endprompt executes the LLM call and returns the result.
Your code becomes a simple fetch:
const response = await fetch(
`${process.env.ENDPROMPT_BASE_URL}/api/v1/summarise`,
{
method: 'POST',
headers: {
'Content-Type': 'application/json',
'x-api-key': process.env.ENDPROMPT_API_KEY!,
},
body: JSON.stringify({ content }),
}
)
const data = await response.json()
The system prompt, the prompt template, the model, the temperature — all of it now lives in Endprompt. Your code passes in the inputs and gets back a result. Nothing else to maintain.
ENDPROMPT_API_KEY=ep_live_xxxxxxxxxxxxxxxxxxxx
ENDPROMPT_BASE_URL=https://your-tenant.api.endprompt.ai
Your Endprompt API key is under API Keys in the dashboard sidebar. Never expose it client-side — always call Endprompt from a server-side route or Server Action.
Prompts out of code Your system and prompt strings move to the Endprompt dashboard. No more template literals in your codebase. No more deploys to change AI behaviour.
Full version history Every prompt change is versioned. See what changed and when. Compare versions side by side.
Instant rollback Promoted a new prompt version and outputs degraded? Roll back in one click. No hotfix deploy required.
Cost tracking per feature The AI SDK doesn't break down LLM spend by feature — it's all aggregated at the model level. Endprompt tracks cost per endpoint, so you know exactly what each AI feature costs.
Full observability Every request is logged: the rendered prompt, model response, latency, and cost. Replay any request from the dashboard to debug issues.
Non-technical iteration Product managers and domain experts can update prompts directly in the Endprompt dashboard — no engineering involvement, no PR, no deploy.
Smart caching Enable caching per endpoint in the dashboard — no code changes required. Up to 67% cost reduction on repeated queries for stable, deterministic outputs.
{{ inputs.content }}), and choose your model..env.local along with your tenant base URL.generateText call with a fetch to your Endprompt endpoint, passing your input fields in the request body.14-day free trial, no card required.
Start free trial · Read the quickstart docs
Related: Prompt Versioning · Update LLM Prompt Without Deploying · Prompt Management API