Use the Formasty Forms API to create, update, publish, and manage forms programmatically over HTTP.
Section 01
The Forms API manages draft form structure (steps, fields, logic, design), publishing, and metadata. It is intended for backend services, automation jobs, internal tools, and platform integrations.
Base URL and protocol
| Environment | Base URL | Notes |
|---|---|---|
| Production | https://app.formasty.com/api/v1 | Use for live workloads and production API keys. |
Internal environments
Non-production API environments are internal and not publicly documented. They require developer-controlled authentication and access controls.
GPT Action / OpenAPI pack
A GPT Action-ready OpenAPI schema is stored at `/openapi.yaml`. It covers the API-key-safe `/api/v1` surface. Use MCP OAuth for per-user ChatGPT app connections and live tool discovery.
Machine-readable docs
Agents and other non-human readers should use `/llms.txt` for the overview, `/api-docs.txt` for the plain-text Forms API reference, and `/openapi.yaml` when configuring a GPT Action.
Section 02
curl -X POST "https://app.formasty.com/api/v1/forms" \
-H "Authorization: Bearer $FORMASTY_API_KEY" \
-H "Content-Type: application/json" \
-d @draft-schema.json
curl -X PUT "https://app.formasty.com/api/v1/forms/frm_01JZ7A2E0M8Q1W9B5XK4J0R8YH/draft" \
-H "Authorization: Bearer $FORMASTY_API_KEY" \
-H "Content-Type: application/json" \
-d @draft-schema.json
curl -X POST "https://app.formasty.com/api/v1/forms/frm_01JZ7A2E0M8Q1W9B5XK4J0R8YH/publish" \
-H "Authorization: Bearer $FORMASTY_API_KEY" \
-H "Content-Type: application/json"{
"data": {
"id": "frm_01JZ7A2E0M8Q1W9B5XK4J0R8YH",
"workspace_id": "wrk_01JZ79Y7YJ9Y2VD8QSE2RC1D8Q",
"title": "Customer Intake",
"status": "draft",
"draft_updated_at": 1771759697,
"draft_revision": 0,
"published_version": 0,
"published_at": null,
"public_id": "pub_01JZ7A36D8C0QJEXAMPLE",
"public_url": "https://app.formasty.com/f/pub_01JZ7A36D8C0QJEXAMPLE",
"responses_count": 0
},
"draft_schema": {
"version": 1,
"steps": [],
"settings": {
"name": "Customer Intake"
}
},
"published_schema": null
}Section 03
Use this flow when you want Codex, Claude, or another MCP-capable agent to create Formasty forms without opening the Formasty UI.
ChatGPT plan and mode requirements
Use regular chat with the Formasty app attached when you need write actions such as create, update, validate, or publish. Do not rely on deep research or Agent mode for Formasty write workflows. If your ChatGPT plan or workspace only supports read/fetch MCP access, install the app but use Codex or another MCP client for create/edit/publish actions.
These ChatGPT install steps match OpenAI's Apps and Developer mode flow as of April 22, 2026. ChatGPT menu names can change over time.
Copy-paste this setup prompt into ChatGPT or another MCP-capable assistant after you connect the Formasty MCP server.
{
"mcpServers": {
"formasty": {
"command": "npx",
"args": ["-y", "mcp-remote", "https://app.formasty.com/api/mcp"]
}
}
}You are my Formasty build agent.
Use the configured remote MCP server named formasty.
If the Formasty MCP server is unavailable in this chat, tell me what is missing and stop.
If you can browse documentation, use these Formasty references as the source of truth:
- https://formasty.com/documentation/api-overview
- https://formasty.com/documentation/api-authentication
- https://formasty.com/documentation/api-endpoints-forms
- https://formasty.com/api-docs.txt
- https://formasty.com/llms.txt
Before you make changes:
1. Initialize MCP and inspect tools/list.
2. Call formasty_list_workspaces first and use recommendedCreateWorkspaceId when present. If it is null or ambiguous, ask me which workspace to use.
3. If a seeded template is the best fit, call formasty_list_starter_templates and formasty_create_form_from_starter_template. Otherwise call formasty_create_form with a stable idempotencyKey.
4. After each major change, call formasty_get_form so you are working from the latest draft state.
5. Make edits only through Formasty MCP tools that actually appear in tools/list.
6. Call formasty_validate_draft before any publish step and fix blockers first.
7. Publish only when I explicitly ask you to publish.
8. When finished, return the formId, draftRevision, and publicUrl if one exists.
9. Do not open the browser UI unless I explicitly ask for visual review.
When I give you a form brief, convert it into a production-ready Formasty draft, not just a generic outline.{
"jsonrpc": "2.0",
"id": "create-form",
"method": "tools/call",
"params": {
"name": "formasty_create_form",
"arguments": {
"idempotencyKey": "customer-feedback-create-1",
"title": "Customer Feedback",
"draftSchema": {
"version": 1,
"steps": [],
"settings": {
"name": "Customer Feedback"
},
"theme": {
"primaryColor": "#4C3F8C",
"brandPalette": []
},
"workflow": {
"version": 1,
"enabled": false,
"rules": []
}
}
}
}
}Section 04
Important
Create/update endpoints write draft data only. Public respondents see `published` snapshots only. Call Publish after draft changes are complete.
Related guides
Common follow-ups and adjacent pages that are usually needed next.