The superprompts package fetches prompts at runtime, fills in variables and caches reads. Zero dependencies; runs anywhere fetch exists (Node 18+, Bun, Deno, edge).
Install the SuperPrompts package using npm or yarn:
npm install superpromptsyarn add superpromptsImport the package and create a client with your API key:
import { SuperPrompts } from 'superprompts';
const sp = new SuperPrompts({ apiKey: process.env.SUPERPROMPTS_API_KEY! });
// Published version, variables filled in
const { prompt, version } = await sp.getPrompt('<PROMPT_ID>', {
variables: { customer: 'Ada' }
});
console.log(prompt); // assembled system message
console.log(version.slice(0, 7)); // content hash that was servedapiKey (string, required): project API keybaseUrl: API origin, default https://superprompts.appcacheTtlMs: in-memory cache per prompt and version, default 5000; 0 disablesguard: append Prompt Guard to fetched prompts, default truefetch: custom fetch implementationversion: 'production' (default), 'latest' or a version hash / unique prefixvariables: values for {{ placeholders }}, applied to prompt and every sectionstrict: throw when a variable has no value (default false, placeholder left as-is)guard: per-call overrideReturns { id, name, description, prompt, sections, tools?, variables, version, label, production_version, created_at, updated_at }.
sp.listPrompts(): every prompt in the projectsp.createPrompt({ name, description?, sections? | markdown?, publish? })sp.updatePrompt(id, { sections? | markdown?, message?, publish? }): save a new versionsp.publishPrompt(id, version?): point production at a version (latest by default)sp.clearCache(id?)compile(text, variables, { strict }) and extractVariables(text) are exported for templates you keep elsewhere. API failures throw SuperPromptsError with a status and the server's message.
import express from 'express';
import { SuperPrompts } from 'superprompts';
const app = express();
const sp = new SuperPrompts({
apiKey: process.env.SUPERPROMPTS_API_KEY
});
app.get('/chat', async (req, res) => {
try {
// Get prompt
const response = await sp.getPrompt('<PROMPT_ID>');
// Use response.prompt with your AI model
res.json({ prompt: response.prompt });
} catch (error) {
res.status(500).json({ error: 'Failed to fetch prompt' });
}
});
app.listen(3000);import { SuperPrompts } from 'superprompts';
import { NextResponse } from 'next/server';
const sp = new SuperPrompts({
apiKey: process.env.SUPERPROMPTS_API_KEY!
});
export async function GET() {
try {
const response = await sp.getPrompt('<PROMPT_ID>');
return NextResponse.json({ prompt: response.prompt });
} catch (error) {
return NextResponse.json(
{ error: 'Failed to fetch prompt' },
{ status: 500 }
);
}
}import { SuperPrompts } from 'superprompts';
import OpenAI from 'openai';
const sp = new SuperPrompts({
apiKey: process.env.SUPERPROMPTS_API_KEY
});
const openai = new OpenAI({ apiKey: process.env.OPENAI_API_KEY });
async function chat(userMessage: string) {
// Get prompt
const response = await sp.getPrompt('assistant');
const completion = await openai.chat.completions.create({
model: 'gpt-4',
messages: [
{ role: 'system', content: response.prompt },
{ role: 'user', content: userMessage }
]
});
return completion.choices[0].message.content;
}