Which key to use
Your dashboard has two kinds of key:
| Key | Use it when | Safe in browser? |
|---|---|---|
sk_live_… secret | Your app has a server, API route or edge function (Lovable Cloud / Supabase, Next.js, Replit, Express…) | No — server only |
pk_live_… publishable | Your app is frontend-only. Locked to the domains you list, with a monthly page cap you set. | Yes |
If you're not sure, use the secret key. Every prompt below has your AI builder create a server function for it.
Lovable
Lovable apps run server code in edge functions (Lovable Cloud or a connected Supabase project), so the secret key stays private. To get fields like invoice numbers, have Lovable AI read them from the Markdown.
- Make sure your project has Lovable Cloud or Supabase enabled.
- Paste the prompt below into the Lovable chat.
- When Lovable asks for the secret
PDFINSPECTOR_API_KEY, paste yoursk_live_…key. - Upload a test PDF in the preview.
Add PDF upload using PDF Inspector.
Read https://pdfinspector.com/llms.txt first and follow it.
1. Create an edge function "pdf-to-markdown" that receives a PDF file,
forwards it as multipart/form-data (field "file") to
POST https://api.pdfinspector.com/v1/convert
with header "Authorization: Bearer ${PDFINSPECTOR_API_KEY}".
Store PDFINSPECTOR_API_KEY as a secret. Never put it in frontend code.
2. On the page, add a drag-and-drop PDF upload (max 50 MB) that calls
the edge function and shows a progress state (scans take a few seconds).
3. Render the returned "markdown" nicely, tables included.
4. Save the file name and markdown to a new "documents" table.
5. Add a "Summarize" button that sends the markdown to Lovable AI.
6. If the API returns an error, show error.message to the user.
What the edge function should roughly look like
// supabase/functions/pdf-to-markdown/index.ts
Deno.serve(async (req) => {
const form = await req.formData();
const res = await fetch("https://api.pdfinspector.com/v1/convert", {
method: "POST",
headers: { Authorization: `Bearer ${Deno.env.get("PDFINSPECTOR_API_KEY")}` },
body: form, // contains "file"
});
return new Response(await res.text(), {
status: res.status,
headers: { "Content-Type": "application/json" },
});
});
Bolt.new
Bolt can build a server route or a Supabase edge function for you. If your Bolt app has no server, use a publishable key instead.
- Paste the prompt into Bolt.
- Add
PDFINSPECTOR_API_KEY=sk_live_…to the project's.envfile when Bolt creates it. - Frontend-only app? Tell Bolt: "use a publishable key from VITE_PDFINSPECTOR_PK and call the API directly from the browser", and add your deployed domain to the key's allowed origins.
Add a PDF upload feature that converts PDFs to Markdown with PDF Inspector. Docs: https://pdfinspector.com/llms.txt (read first). - Create a server-side endpoint /api/pdf that forwards the uploaded PDF to POST https://api.pdfinspector.com/v1/convert as multipart form-data (field "file"), with "Authorization: Bearer" + env var PDFINSPECTOR_API_KEY. - In the UI: upload button, progress spinner, then render the returned "markdown" (tables included) with a "Copy" button. - Show error.message from the API if something fails.
v0
v0 generates Next.js apps, so the key lives in a Route Handler and never reaches the browser.
- Paste the prompt into v0.
- Add
PDFINSPECTOR_API_KEYto the project's environment variables (in v0's project settings, or in Vercel after you deploy).
Build a "chat with your PDF" page using PDF Inspector (docs: https://pdfinspector.com/llms.txt).
- Create app/api/pdf/route.ts that accepts a PDF upload and forwards it
to POST https://api.pdfinspector.com/v1/convert with
"Authorization: Bearer ${process.env.PDFINSPECTOR_API_KEY}".
- Page: shadcn/ui dropzone card, progress state, then two tabs:
"Document" (rendered markdown) and "Chat" (AI SDK chat that gets
the markdown as context).
Replit
- Open the Secrets tool in your Repl and add
PDFINSPECTOR_API_KEY. - Paste the prompt into Replit Agent.
Add PDF upload with PDF Inspector (read https://pdfinspector.com/llms.txt). Use the PDFINSPECTOR_API_KEY secret on the server only. Forward uploads to POST https://api.pdfinspector.com/v1/convert (multipart, field "file") and render the returned markdown on the results page.
Cursor MCP
Cursor's agent can call PDF Inspector as a tool while you code. To build the integration into your app instead, use the Bolt prompt, which also works in Cursor.
To add the MCP server, create .cursor/mcp.json in your project (or ~/.cursor/mcp.json for all projects):
{
"mcpServers": {
"pdfinspector": {
"url": "https://pdfinspector.com/mcp",
"headers": { "Authorization": "Bearer sk_live_YOUR_KEY" }
}
}
}
Then ask the agent: "Use pdfinspector to pull the pricing table from docs/vendor-quote.pdf into a TypeScript constant."
.cursor/mcp.json to .gitignore so your key isn't committed.Windsurf MCP
Add the server to ~/.codeium/windsurf/mcp_config.json, then refresh MCP servers in Cascade:
{
"mcpServers": {
"pdfinspector": {
"serverUrl": "https://pdfinspector.com/mcp",
"headers": { "Authorization": "Bearer sk_live_YOUR_KEY" }
}
}
}
Claude (web & desktop) MCP
Claude can call PDF Inspector as a tool and get tables back as Markdown tables.
- In Claude, open Settings → Connectors and choose Add custom connector.
- Name:
PDF Inspector· URL:https://pdfinspector.com/mcp - Click Connect and sign in to PDF Inspector when asked. No key to paste.
- In a chat, turn on the connector and ask: "Convert this PDF and give me every table as CSV: https://…"
Claude Code MCP
Run this command. Without a key, Claude can make one test call a day. After that it can create a key and give you a checkout link to buy credits.
claude mcp add --transport http pdfinspector https://pdfinspector.com/mcp
To use a key, for example in CI, pass it as a header:
claude mcp add --transport http pdfinspector https://pdfinspector.com/mcp --header "Authorization: Bearer sk_live_YOUR_KEY"
Then: "Convert ./contracts/msa.pdf with pdfinspector and list every termination clause." To have Claude Code build the integration into your app, point it at /llms.txt.
Anything else
n8n, Make, Zapier, Framer, Webflow and your own code only need one HTTP request. If your tool has an AI assistant, give it this prompt:
Integrate PDF Inspector to turn PDFs into Markdown. Read https://pdfinspector.com/llms.txt and follow it exactly. Keep the API key server-side.
The API docs have curl, JavaScript and Python examples.