Free · No API key · Built for AI agents
Create beautiful, interactive flowcharts programmatically with a single API call. Perfect for AI agents, chatbots, automation scripts, and any tool that needs to visualize processes. Every flowchart gets a shareable link — no account required.
/api/create-flowchartCreate a flowchart/api/export/{format}Export as json, mermaid, svg, or png/api/create-vennCreate a Venn diagram/api/export-venn/{format}Export Venn as json or svg/api/create-orgchartCreate an org chart/api/export-orgchart/{format}Export org chart as json or svg/api/create-piechartCreate a pie/donut chart/api/export-piechart/{format}Export pie chart as json or svg/api/create-mindmapCreate a mind map/api/export-mindmap/{format}Export mind map as json or svg/api/node-typesList all node types/api/healthAPI status + endpoint list/openapi.jsonOpenAPI 3.1 specification| Field | Type | Required | Description |
|---|---|---|---|
| title | string | Yes | Flowchart title (max 200 chars) |
| description | string | No | Optional description (max 1000 chars) |
| createdBy | string | No | Attribution — your agent or app name |
| nodes | array | Yes | Array of node objects (1–100) |
| nodes[].id | string | Yes | Unique node identifier |
| nodes[].type | string | No | Node type (default: "process") |
| nodes[].label | string | Yes | Display label (max 200 chars) |
| nodes[].description | string | No | Node description (max 500 chars) |
| nodes[].x | number | No | X position (auto-layout if omitted) |
| nodes[].y | number | No | Y position (auto-layout if omitted) |
| edges | array | Yes | Array of edge objects (0–200) |
| edges[].from | string | Yes | Source node ID |
| edges[].to | string | Yes | Target node ID |
| edges[].label | string | No | Edge label (max 100 chars) |
| background | string | No | Hex color (#1a1a2e) or linear-gradient(135deg, #0f0c29, #302b63) |
| theme | string | No | Visual theme: default, neon, pastel, retro, ocean, brutalist, candy |
startendprocessdecisioniodelaysubprocesstaskbugemailmeetingapprovalmilestonedeadlinehandoffcostnotetextlabelapprovalGate{
"title": "User Signup Flow",
"description": "How new users register on our platform",
"createdBy": "My AI Agent",
"theme": "ocean",
"background": "#0c1222",
"nodes": [
{ "id": "1", "type": "start", "label": "User visits site" },
{ "id": "2", "type": "process", "label": "Click Sign Up" },
{ "id": "3", "type": "io", "label": "Enter email & password" },
{ "id": "4", "type": "decision", "label": "Valid input?" },
{ "id": "5", "type": "process", "label": "Create account" },
{ "id": "6", "type": "email", "label": "Send verification email" },
{ "id": "7", "type": "end", "label": "Account active" },
{ "id": "8", "type": "process", "label": "Show error message" }
],
"edges": [
{ "from": "1", "to": "2" },
{ "from": "2", "to": "3" },
{ "from": "3", "to": "4" },
{ "from": "4", "to": "5", "label": "Yes" },
{ "from": "4", "to": "8", "label": "No" },
{ "from": "5", "to": "6" },
{ "from": "6", "to": "7" },
{ "from": "8", "to": "3" }
]
}{
"success": true,
"flowId": "abc123xyz",
"shareId": "k7Rm2xP9qWnE",
"url": "https://freeflowcharts.app/view/k7Rm2xP9qWnE",
"embed": "<iframe src=\"https://freeflowcharts.app/view/k7Rm2xP9qWnE\" width=\"800\" height=\"600\" frameborder=\"0\"></iframe>",
"branding": "Powered by FreeFlowCharts — https://freeflowcharts.app"
}curl -X POST https://freeflowcharts.app/api/create-flowchart \
-H "Content-Type: application/json" \
-d '{
"title": "My First API Flowchart",
"nodes": [
{ "id": "1", "type": "start", "label": "Begin" },
{ "id": "2", "type": "process", "label": "Do something" },
{ "id": "3", "type": "end", "label": "Done" }
],
"edges": [
{ "from": "1", "to": "2" },
{ "from": "2", "to": "3" }
]
}'import requests
response = requests.post(
"https://freeflowcharts.app/api/create-flowchart",
json={
"title": "Deployment Pipeline",
"createdBy": "My Python Script",
"nodes": [
{"id": "1", "type": "start", "label": "Push to main"},
{"id": "2", "type": "process", "label": "Run CI tests"},
{"id": "3", "type": "decision", "label": "Tests pass?"},
{"id": "4", "type": "process", "label": "Build Docker image"},
{"id": "5", "type": "process", "label": "Deploy to staging"},
{"id": "6", "type": "approval", "label": "QA approval"},
{"id": "7", "type": "milestone", "label": "Production deploy"},
{"id": "8", "type": "end", "label": "Live!"},
{"id": "9", "type": "bug", "label": "Fix failing tests"},
],
"edges": [
{"from": "1", "to": "2"},
{"from": "2", "to": "3"},
{"from": "3", "to": "4", "label": "Yes"},
{"from": "3", "to": "9", "label": "No"},
{"from": "9", "to": "2"},
{"from": "4", "to": "5"},
{"from": "5", "to": "6"},
{"from": "6", "to": "7"},
{"from": "7", "to": "8"},
],
},
)
data = response.json()
print(f"View your flowchart: {data['url']}")const response = await fetch("https://freeflowcharts.app/api/create-flowchart", {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({
title: "Support Ticket Flow",
createdBy: "My Agent",
nodes: [
{ id: "1", type: "start", label: "Ticket received" },
{ id: "2", type: "decision", label: "Priority?" },
{ id: "3", type: "process", label: "Assign to on-call" },
{ id: "4", type: "process", label: "Add to queue" },
{ id: "5", type: "end", label: "Resolved" },
],
edges: [
{ from: "1", to: "2" },
{ from: "2", to: "3", label: "High" },
{ from: "2", to: "4", label: "Low" },
{ from: "3", to: "5" },
{ from: "4", to: "5" },
],
}),
});
const data = await response.json();
console.log("View:", data.url);Export any flowchart by its shareId (returned when you create it).
/api/export/json?id=<shareId>/api/export/mermaid?id=<shareId>/api/export/svg?id=<shareId>/api/export/png?id=<shareId># Export as Mermaid syntax
curl "https://freeflowcharts.app/api/export/mermaid?id=k7Rm2xP9qWnE"
# Export as SVG image
curl "https://freeflowcharts.app/api/export/svg?id=k7Rm2xP9qWnE" -o flowchart.svg
# Export as PNG image
curl "https://freeflowcharts.app/api/export/png?id=k7Rm2xP9qWnE" -o flowchart.png
# Export as JSON data
curl "https://freeflowcharts.app/api/export/json?id=k7Rm2xP9qWnE"
# Override background on export
curl "https://freeflowcharts.app/api/export/png?id=k7Rm2xP9qWnE&bg=%231a1a2e" -o dark-blue.pngAll export endpoints accept optional bg and theme query parameters to override the background or visual theme. Available themes: default, neon, pastel, retro, ocean, brutalist, candy.
No API key required. If you need higher limits, contact us.
x / y are omitted, nodes are auto-laid out in a gridprocessCreate Venn diagrams programmatically with circles and labels. Same rate limits, same simplicity.
| Field | Type | Required | Description |
|---|---|---|---|
| title | string | Yes | Venn diagram title (max 200 chars) |
| description | string | No | Optional description (max 1000 chars) |
| createdBy | string | No | Attribution — your agent or app name |
| circles | array | Yes | Array of circle objects (1–8) |
| circles[].id | string | Yes | Unique circle identifier |
| circles[].label | string | Yes | Circle label (max 100 chars) |
| circles[].cx | number | No | X center (auto if omitted) |
| circles[].cy | number | No | Y center (auto if omitted) |
| circles[].r | number | No | Radius 20–400 (auto if omitted) |
| circles[].color | string | No | Hex color (auto-assigned if omitted) |
| circles[].opacity | number | No | Fill opacity 0.05–1.0 (default: 0.35) |
| labels | array | No | Array of label objects (0–50) |
| labels[].id | string | Yes | Unique label identifier |
| labels[].text | string | Yes | Label text (max 200 chars) |
| labels[].x | number | No | X position |
| labels[].y | number | No | Y position |
| labels[].fontSize | number | No | Font size 8–48 (default: 14) |
| labels[].color | string | No | Hex color (default: #ffffff) |
| labels[].region | string | No | Region hint: A, AB, ABC, etc. |
| bgColor | string | No | Background hex color (default: #13131f) |
curl -X POST https://freeflowcharts.app/api/create-venn \
-H "Content-Type: application/json" \
-d '{
"title": "Skills Overlap",
"circles": [
{"id": "A", "label": "Frontend", "color": "#3b82f6"},
{"id": "B", "label": "Backend", "color": "#ef4444"},
{"id": "C", "label": "Design", "color": "#22c55e"}
],
"labels": [
{"id": "l1", "text": "React", "x": 260, "y": 210, "color": "#93c5fd", "region": "A"},
{"id": "l2", "text": "Node.js", "x": 520, "y": 210, "color": "#fca5a5", "region": "B"},
{"id": "l3", "text": "Full-Stack", "x": 390, "y": 220, "color": "#ffffff", "region": "AB"}
]
}'/api/export-venn/json?id=<shareId>/api/export-venn/svg?id=<shareId>cx/cy omittedCreate hierarchical org charts from a flat list of nodes with parent relationships. Auto-layout tree structure. Same rate limits, same simplicity.
| Field | Type | Required | Description |
|---|---|---|---|
| title | string | No | Org chart title (max 200 chars, default: "Untitled Org Chart") |
| description | string | No | Optional description (max 1000 chars) |
| createdBy | string | No | Attribution — your agent or app name |
| background | string | No | Background color (default: #13131f) |
| nodes | array | Yes | Array of node objects (1–100) |
| nodes[].id | string | Yes | Unique node identifier |
| nodes[].label | string | Yes | Person or role name (max 200 chars) |
| nodes[].title | string | No | Job title (max 200 chars) |
| nodes[].parentId | string | No | ID of parent node (root if omitted or unmatched) |
| nodes[].color | string | No | Hex color (auto-assigned by depth if omitted) |
curl -X POST https://freeflowcharts.app/api/create-orgchart \
-H "Content-Type: application/json" \
-d '{
"title": "My Team",
"nodes": [
{"id": "1", "label": "CEO", "title": "Chief Executive"},
{"id": "2", "label": "CTO", "title": "Technology", "parentId": "1"},
{"id": "3", "label": "CFO", "title": "Finance", "parentId": "1"}
]
}'/api/export-orgchart/json?id=<shareId>/api/export-orgchart/svg?id=<shareId>parentId are treated as rootsCreate pie or donut charts from labeled value slices. Colors and percentages are auto-computed. Same rate limits, same simplicity.
| Field | Type | Required | Description |
|---|---|---|---|
| title | string | No | Pie chart title (max 200 chars, default: "Untitled Pie Chart") |
| description | string | No | Optional description (max 1000 chars) |
| createdBy | string | No | Attribution — your agent or app name |
| background | string | No | Background color (default: #13131f) |
| donut | boolean | No | Render as a donut chart (default: false) |
| showLegend | boolean | No | Show the legend (default: true) |
| slices | array | Yes | Array of slice objects (1–50) |
| slices[].label | string | Yes | Slice label (max 200 chars) |
| slices[].value | number | Yes | Non-negative numeric value |
| slices[].color | string | No | Hex color (auto-assigned if omitted) |
curl -X POST https://freeflowcharts.app/api/create-piechart \
-H "Content-Type: application/json" \
-d '{
"title": "Market Share",
"slices": [
{"label": "Product A", "value": 40},
{"label": "Product B", "value": 30},
{"label": "Other", "value": 30}
],
"donut": true
}'/api/export-piechart/json?id=<shareId>/api/export-piechart/svg?id=<shareId>Create radial mind maps from a flat list of nodes with parent relationships. Auto radial layout. Same rate limits, same simplicity.
| Field | Type | Required | Description |
|---|---|---|---|
| title | string | No | Mind map title (max 200 chars, default: "Untitled Mind Map") |
| description | string | No | Optional description (max 1000 chars) |
| createdBy | string | No | Attribution — your agent or app name |
| background | string | No | Background color (default: #13131f) |
| nodes | array | Yes | Array of node objects (1–100) |
| nodes[].id | string | Yes | Unique node identifier |
| nodes[].label | string | Yes | Idea/topic text (max 200 chars) |
| nodes[].parentId | string | No | ID of parent node (root if omitted or unmatched) |
| nodes[].color | string | No | Hex color (auto-assigned by branch if omitted) |
curl -X POST https://freeflowcharts.app/api/create-mindmap \
-H "Content-Type: application/json" \
-d '{
"title": "Project Ideas",
"nodes": [
{"id": "1", "label": "Main Topic"},
{"id": "2", "label": "Branch A", "parentId": "1"},
{"id": "3", "label": "Branch B", "parentId": "1"}
]
}'/api/export-mindmap/json?id=<shareId>/api/export-mindmap/svg?id=<shareId>| Status | Meaning |
|---|---|
| 400 | Bad request — missing or invalid fields |
| 404 | Flowchart not found (export endpoints) |
| 405 | Method not allowed — use POST for create, GET for export |
| 429 | Rate limit exceeded — max 30/hr |
| 500 | Internal server error |
Give your AI agent the FreeFlowCharts skill — everything it needs to create and export flowcharts.
Add as Gemini skill (enter root URL):
https://freeflowcharts.appFor agents and tools that need to discover the API programmatically:
/openapi.jsonFull OpenAPI 3.1 specification with schemas, examples, and all endpoints/SKILL.mdSkill file with YAML frontmatter — complete API reference for agents/.well-known/ai-plugin.jsonChatGPT/OpenAI plugin manifest/api/healthAPI status, version, and complete endpoint listing/api/node-typesAll 19 supported node types with descriptions and colors/llms.txtStructured site info for LLM crawlers — includes API quick-start/ai.txtAI crawling policyQuestions? Feature requests? We'd love to hear from you.