Proposal API for AI agents. Your agent fills in an approved template.
The agent can be an AI SDR, a website consultant, a voice agent after a call or an n8n flow. It reads the field schema of a human-approved template, sends a few values and gets back a live, personalized, tracked page for the prospect. The output is deterministic and on-brand, and each document takes a few hundred tokens.
rest api on every plan · no per-call fees · agents don’t take seats
› discovery call with Northwind done — send the proposal
POST /api/presentations
{
"templateId": "tpl_web_proposal",
"client": { "companyName": "Northwind", "contactName": "Maya" },
"personalization": {
"scope": "Website redesign, 6 weeks",
"price": 12400,
"deadline": "2026-09-18"
}
}
201 shareUrl: https://app.naimi.ai/northwind-k3x9
✓ sent to maya@northwind.com
✓ 14:32 presentation.opened — Northwind · viewing now Three problems with letting an agent generate the whole document
01
Nobody approves what the client sees
When an agent generates the document freely, the customer can get a version nobody approved, with a wrong price, invented terms or someone else’s tone. With Naimi your team builds the template; the agent can only change the fields marked as personalizable, and the server rejects anything else.
Forrester’s 2026 B2B predictions put the cost of ungoverned generative AI in go-to-market applications above $10 billion. Source ↗
02
Thousands of tokens per document
Generating a twelve-slide deck takes thousands of output tokens, plus the brand guide, prior decks and examples in context, every time and for every prospect. Filling six fields against a 200-token schema takes a few hundred tokens. That is roughly thirty times fewer output tokens, not counting latency.
Our arithmetic at current list prices; a per-document cost you can predict before writing code.
03
The agent can’t see whether a PDF was opened
With a Naimi link, the agent gets opens, view time, a live “viewing now” count and the client’s own answers. A signed webhook arrives the moment the link is opened, so the agent can follow up right away.
Everything the sales team sees in the app, the agent sees through the API.
How the API works in three steps
The template’s manifest lists the field keys, their types and which fields are required. Your agent returns values in exactly that shape, like any other structured output.
1 · read the schema
GET /api/templates/tpl_web_proposal
Authorization: Bearer <scoped token>
200 {
"template": {
"id": "tpl_web_proposal",
"manifest": {
"personalization": {
"fields": [
{ "key": "company", "type": "text", "required": true },
{ "key": "contact", "type": "text", "required": true },
{ "key": "scope", "type": "textarea", "required": true },
{ "key": "price", "type": "number", "required": true },
{ "key": "deadline", "type": "date" },
{ "key": "hero_image","type": "image" }
]
}
}
}
} 2 · send the values, get the link
POST /api/presentations
{
"templateId": "tpl_web_proposal",
"client": { "companyName": "Northwind", "contactName": "Maya" },
"personalization": {
"company": "Northwind",
"contact": "Maya",
"scope": "Website redesign, 6 weeks, 3 rounds",
"price": 12400,
"deadline": "2026-09-18"
}
}
201 {
"presentation": {
"id": "prs_k3x9",
"shareUrl": "https://app.naimi.ai/northwind-k3x9",
"stats": { "openCount": 0, "totalViewSeconds": 0 }
}
} 3 · get a webhook on open
POST https://your-agent.example/naimi
X-Naimi-Signature: sha256=…
{
"event": "presentation.opened",
"presentationId": "prs_k3x9",
"client": "Northwind",
"openCount": 1
} …and on the presentation itself: openCount · uniqueVisitorCount · lastOpenedAt · totalViewSeconds · activeViewerCount · clientResponses. Deal status is one more call.
What the agent can do through the API
Today the API is REST, and an open-source skill file teaches any agent to use it in one read. MCP server in progress.
Templates
- List published templates
- Read a template’s field schema and slide index
Presentations
- Create from a template with field values; the link is live at once
- Update personalization on a live link
- Pre-seed interactive values; set deal status
- Read stats and the client’s own answers
Clients & memory
- Create or reuse a client inline
- Read and write facts that pre-fill the next document
Signals & access
- HMAC-signed webhooks on open; Telegram alerts for humans
- Scoped, expiring API tokens, one per agent
Machine-readable by default: every page on this site is also served as Markdown (append .md), the site index is at /llms.txt, and the agent skills are open on GitHub.
Three ways to use the API in a sales workflow
ai sdr · after the discovery call
From a call transcript to a proposal link
- Agent maps the transcript to the template’s six fields
- POST /api/presentations → shareUrl
- Sends the link in the follow-up email
- Webhook on open → agent follows up while it’s on their screen
website consultant · at qualification
The chat ends with a personal offer page
- Site agent qualifies the visitor and collects the inputs
- Creates the client and the presentation in one call
- Hands over the link inside the chat
- The rep sees “viewing now” while the visitor is still on the site
n8n · make · zapier
Form → LLM → link → Telegram
- Form node collects the brief
- LLM node returns JSON constrained to the field schema
- HTTP node posts it to Naimi, gets the link
- Telegram node pings the team on first open
Building templates with your own coding agent (Claude Code, Cursor, Codex) is covered on a separate page: Build a template with your own agent →
Questions about the API for AI agents
Who builds the template, the agent or us?
Your team builds it once, in Naimi Studio or with your own coding agent, and marks which parts may change per client. The external agent only fills those parts. A person approves the persuasion, brand and layout; the agent supplies the client-specific values and never touches anything else.
What happens if the agent sends bad data?
The server rejects it. If required fields are missing, it returns a 400 with the list of what’s missing; fields the template does not declare are ignored unless the template explicitly allows custom fields. The schema declares the types (text, long text, number, date, image), so the agent knows what to produce, and the presentation renders exactly like every other one from that template.
Is there an MCP server?
No. An MCP server is in progress. Today the surface is the REST API, plus an open-source skill file that teaches any agent the whole API in one read — paste it into your agent’s context and it knows how to list templates, create and edit presentations, read stats and write client memory. Claude Code, Codex, Cursor and custom agents use it as is.
Can the agent change a presentation after it was sent?
Yes. The link stays the same. The agent can update the personalization, pre-seed interactive values (a selected package, a slider position) or set the deal status, and the client sees the current version the next time they open the link.
What does the agent get back after the send?
The presentation object includes opens, unique visitors, last opened, total view time and a live “viewing now” count. The agent also gets everything the client typed or picked in self-fill fields, and an HMAC-signed webhook the moment the link is opened. Facts about the client accumulate on their card and pre-fill the next document for them, from any template.
How is access controlled?
With scoped API tokens. Grant only what the agent needs (read templates, write presentations, write clients), set an expiry, and revoke a token in one click. We recommend one token per agent. Tokens are stored hashed and shown once.
What does it cost per document?
Nothing per call. The API is on every plan, Free included; a presentation created by an agent counts against the plan’s monthly presentation quota exactly like one created by a person — 30 on Free, 100 on Pro, unlimited on Business. Credits are never involved, because creating a presentation only fills in fields and uses no AI generation. Agents don’t take seats.
Does the recipient need an account?
No. The link opens in any browser with no login, no download — which is why it can be handed over inside a chat, an email, an SMS after a call, or a checkout flow.
Give your agent an approved template to fill in.
The API is included in the free plan. Build one template, and the agent fills it in for every prospect.
4.7/5 · 500+ customers free plan · no credit card · cancel anytime