1Form API docs
How apps and agents call 1Form. JSON over HTTPS, plus a stateless MCP server at /mcp.
1Form serves a public, read-only JSON API and a Model Context Protocol server. Both are live today, need no key, and expose the same public information: what the product is, who it is for, and the copy of every page.
The product API described on the landing page is separate. It ships at launch, and this page will document it when it does.
Base URL
https://fs-lp-1form.vercel.app
Authentication
None. Every endpoint is public and read-only. Send Accept: application/json or omit it.
Endpoints
GET /v1/healthreturns the service status and version. Add?verbose=truefor page and tool counts.GET /v1/overviewreturns the product summary, key facts, audience and when to use it.?lang=enis the only language today; any other value returns a JSON 400.GET /v1/pageslists every public page with its title and description. Page it with?limit=(1 to 20) and?offset=.GET /v1/pages/{page}returns one page as JSON with its Markdown body.GET /openapi.jsonreturns the OpenAPI 3.1 description of all of the above.
Get the overview
curl -sS https://fs-lp-1form.vercel.app/v1/overview
{
"name": "1Form",
"summary": "1Form is a form builder that shows one question at a time and turns every form into a typed API and an MCP tool, so people, teammates and AI agents can answer the same form.",
"status": "pre-launch",
"facts": ["..."],
"audience": "...",
"when_to_use": ["..."],
"links": { "docs": "https://fs-lp-1form.vercel.app/docs", "mcp": "https://fs-lp-1form.vercel.app/mcp" }
}
Read a page
curl -sS https://fs-lp-1form.vercel.app/v1/pages/about
{
"path": "/about",
"title": "About 1Form",
"markdown": "# About 1Form\n\n..."
}
Valid page slugs are home, about, contact, privacy, docs and deprecation-policy.
Errors
Errors return JSON with an error.code and an error.message. They are never HTML.
{
"error": {
"code": "page_not_found",
"message": "Unknown page: pricing. Available: home, about, contact, privacy, docs."
}
}
404the route or the page does not exist.405the method is not GET or HEAD. The API is read-only.429the rate limit was reached. Retry afterRetry-Afterseconds.
Rate limits
120 requests per minute per IP, enforced in the edge handler for /v1/*, /mcp and the discovery routes. Every JSON and SSE response carries live RateLimit-Limit, RateLimit-Remaining, RateLimit-Reset and X-RateLimit-* values, and a 429 carries Retry-After in seconds. The counter is per edge instance, so the platform edge may still absorb or reject traffic first.
The MCP endpoint caps a JSON-RPC batch at 20 messages and a request body at 64 KB, so one call cannot amplify into thousands of tool runs. Larger batches get a JSON-RPC error with HTTP 400 or 413.
Versioning and deprecation
The API is versioned in the URL path. /v1 is the current version and is safe to build against.
- Additive changes, such as a new field or a new endpoint, ship inside
/v1. - Breaking changes ship under a new path,
/v2./v1keeps working for at least 12 months after/v2ships. - A deprecated route keeps working for at least 90 days and returns
Deprecation: trueandSunset: <HTTP date>headers on every response while it does. - The changelog below records every change, newest first.
The full policy, including what counts as breaking, lives at /deprecation-policy.
Changelog
- 2026-11-01:
/v1published withhealth,overview,pagesandpages/{page}. MCP server and server card published. No deprecations.
OpenAPI
The full schema, with operation ids and response shapes, is at https://fs-lp-1form.vercel.app/openapi.json. Tool-calling clients can load it directly; every operation has an operationId, a summary and a typed response.
A machine-readable catalog of these links is published as a linkset at https://fs-lp-1form.vercel.app/.well-known/api-catalog, and the same links are sent in the Link header of the home page.
MCP server
Agents can reach the same content over the Model Context Protocol at https://fs-lp-1form.vercel.app/mcp with Streamable HTTP. The endpoint is stateless and needs no key. Responses are JSON by default and SSE when the client asks for text/event-stream.
Discovery files: manifest, server card and registry entry.
POST https://fs-lp-1form.vercel.app/mcp
Content-Type: application/json
{"jsonrpc":"2.0","id":1,"method":"tools/list"}
Tools
get_product_overviewreturns what 1Form is, who it is for and its key capabilities.get_pagereturns one page of this site as Markdown. Paths: /, /about, /contact, /privacy, /docs, /deprecation-policy.search_sitesearches the site copy and returns matching sections.
Markdown for agents
Send Accept: text/markdown to any page on this site and the response is Markdown with Content-Type: text/markdown and Vary: Accept. The HTML stays the default for browsers. Unknown paths return a 404 with a Markdown body when an agent asks for Markdown.
curl -sS -H 'Accept: text/markdown' https://fs-lp-1form.vercel.app/
Machine-readable index
A short index of the product, its FAQ and its links lives at https://fs-lp-1form.vercel.app/llms.txt. The sitemap is at https://fs-lp-1form.vercel.app/sitemap.xml.
Status
These endpoints are live and versioned with the site. 1Form itself is in pre-launch; join the waitlist for launch access. Breaking changes to the public API get a new version path.