Back to app

Flowchart API

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.

No API key
Just POST and go
Shareable links
Instant public URL
19 node types
Full flowchart toolkit
Rate: 30/hr
Generous free tier

Endpoints

POST/api/create-flowchartCreate a flowchart
GET/api/export/{format}Export as json, mermaid, svg, or png
POST/api/create-vennCreate a Venn diagram
GET/api/export-venn/{format}Export Venn as json or svg
POST/api/create-orgchartCreate an org chart
GET/api/export-orgchart/{format}Export org chart as json or svg
POST/api/create-piechartCreate a pie/donut chart
GET/api/export-piechart/{format}Export pie chart as json or svg
POST/api/create-mindmapCreate a mind map
GET/api/export-mindmap/{format}Export mind map as json or svg
GET/api/node-typesList all node types
GET/api/healthAPI status + endpoint list
GET/openapi.jsonOpenAPI 3.1 specification

Request Body

FieldTypeRequiredDescription
titlestringYesFlowchart title (max 200 chars)
descriptionstringNoOptional description (max 1000 chars)
createdBystringNoAttribution — your agent or app name
nodesarrayYesArray of node objects (1–100)
nodes[].idstringYesUnique node identifier
nodes[].typestringNoNode type (default: "process")
nodes[].labelstringYesDisplay label (max 200 chars)
nodes[].descriptionstringNoNode description (max 500 chars)
nodes[].xnumberNoX position (auto-layout if omitted)
nodes[].ynumberNoY position (auto-layout if omitted)
edgesarrayYesArray of edge objects (0–200)
edges[].fromstringYesSource node ID
edges[].tostringYesTarget node ID
edges[].labelstringNoEdge label (max 100 chars)
backgroundstringNoHex color (#1a1a2e) or linear-gradient(135deg, #0f0c29, #302b63)
themestringNoVisual theme: default, neon, pastel, retro, ocean, brutalist, candy

Available Node Types

start
Beginning of the flow
end
End of the flow
process
Action or operation
decision
Yes/No branching point
io
Data input or output
delay
Wait or pause
subprocess
Nested process
task
Assignable task
bug
Bug or issue
email
Email action
meeting
Meeting or sync
approval
Approval step
milestone
Key milestone
deadline
Time-sensitive step
handoff
Team handoff
cost
Budget/cost node
note
Sticky note
textlabel
Text annotation
approvalGate
Approval gate checkpoint

Example Request

json
{
  "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" }
  ]
}

Example Response

json
{
  "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"
}

Code Examples

cURL

bash
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" }
    ]
  }'

Python

python
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']}")

JavaScript / TypeScript

javascript
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 Endpoints

Export any flowchart by its shareId (returned when you create it).

/api/export/json?id=<shareId>
Structured flow data with nodes, edges, and metadata
application/json
/api/export/mermaid?id=<shareId>
Mermaid flowchart syntax — paste into GitHub, Notion, Obsidian
text/plain
/api/export/svg?id=<shareId>
Vector SVG with themed styling, colored nodes, and arrows
image/svg+xml
/api/export/png?id=<shareId>
1600px-wide PNG rendered server-side
image/png
bash
# 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.png

All 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.

Rate Limits

30flowcharts per hour per IP

No API key required. If you need higher limits, contact us.

Constraints

  • Max 100 nodes per flowchart
  • Max 200 edges per flowchart
  • Edges referencing non-existent node IDs are silently dropped
  • If x / y are omitted, nodes are auto-laid out in a grid
  • Unknown node types default to process
  • API-created flowcharts include a "Powered by FreeFlowCharts" branding bar

Venn Diagram API

Create Venn diagrams programmatically with circles and labels. Same rate limits, same simplicity.

POST /api/create-venn — Request Body

FieldTypeRequiredDescription
titlestringYesVenn diagram title (max 200 chars)
descriptionstringNoOptional description (max 1000 chars)
createdBystringNoAttribution — your agent or app name
circlesarrayYesArray of circle objects (1–8)
circles[].idstringYesUnique circle identifier
circles[].labelstringYesCircle label (max 100 chars)
circles[].cxnumberNoX center (auto if omitted)
circles[].cynumberNoY center (auto if omitted)
circles[].rnumberNoRadius 20–400 (auto if omitted)
circles[].colorstringNoHex color (auto-assigned if omitted)
circles[].opacitynumberNoFill opacity 0.05–1.0 (default: 0.35)
labelsarrayNoArray of label objects (0–50)
labels[].idstringYesUnique label identifier
labels[].textstringYesLabel text (max 200 chars)
labels[].xnumberNoX position
labels[].ynumberNoY position
labels[].fontSizenumberNoFont size 8–48 (default: 14)
labels[].colorstringNoHex color (default: #ffffff)
labels[].regionstringNoRegion hint: A, AB, ABC, etc.
bgColorstringNoBackground hex color (default: #13131f)

Example — Create a Venn Diagram

bash
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"}
  ]
}'

Venn Export Endpoints

/api/export-venn/json?id=<shareId>
Structured Venn data with circles, labels, and metadata
application/json
/api/export-venn/svg?id=<shareId>
Rendered SVG with circles, labels, grid, and branding
image/svg+xml

Venn Constraints

  • Max 8 circles per Venn diagram
  • Max 50 labels per Venn diagram
  • Circles auto-position if cx/cy omitted
  • Colors auto-assigned from a palette if omitted
  • API-created Venn diagrams include branding

Org Chart API

Create hierarchical org charts from a flat list of nodes with parent relationships. Auto-layout tree structure. Same rate limits, same simplicity.

POST /api/create-orgchart — Request Body

FieldTypeRequiredDescription
titlestringNoOrg chart title (max 200 chars, default: "Untitled Org Chart")
descriptionstringNoOptional description (max 1000 chars)
createdBystringNoAttribution — your agent or app name
backgroundstringNoBackground color (default: #13131f)
nodesarrayYesArray of node objects (1–100)
nodes[].idstringYesUnique node identifier
nodes[].labelstringYesPerson or role name (max 200 chars)
nodes[].titlestringNoJob title (max 200 chars)
nodes[].parentIdstringNoID of parent node (root if omitted or unmatched)
nodes[].colorstringNoHex color (auto-assigned by depth if omitted)

Example — Create an Org Chart

bash
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"}
  ]
}'

Org Chart Export Endpoints

/api/export-orgchart/json?id=<shareId>
Structured org chart data with nodes and metadata
application/json
/api/export-orgchart/svg?id=<shareId>
Rendered SVG with nodes, connectors, and branding
image/svg+xml

Org Chart Constraints

  • Max 100 nodes per org chart
  • Auto-layout tree if positions are not provided
  • Nodes with an unmatched parentId are treated as roots
  • Same rate limit: 30/hr per IP

Pie Chart API

Create pie or donut charts from labeled value slices. Colors and percentages are auto-computed. Same rate limits, same simplicity.

POST /api/create-piechart — Request Body

FieldTypeRequiredDescription
titlestringNoPie chart title (max 200 chars, default: "Untitled Pie Chart")
descriptionstringNoOptional description (max 1000 chars)
createdBystringNoAttribution — your agent or app name
backgroundstringNoBackground color (default: #13131f)
donutbooleanNoRender as a donut chart (default: false)
showLegendbooleanNoShow the legend (default: true)
slicesarrayYesArray of slice objects (1–50)
slices[].labelstringYesSlice label (max 200 chars)
slices[].valuenumberYesNon-negative numeric value
slices[].colorstringNoHex color (auto-assigned if omitted)

Example — Create a Pie Chart

bash
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
}'

Pie Chart Export Endpoints

/api/export-piechart/json?id=<shareId>
Structured slice data with computed percentages and metadata
application/json
/api/export-piechart/svg?id=<shareId>
Rendered SVG pie/donut chart with legend and branding
image/svg+xml

Pie Chart Constraints

  • Max 50 slices per pie chart
  • Total of all slice values must be greater than 0
  • Same rate limit: 30/hr per IP

Mind Map API

Create radial mind maps from a flat list of nodes with parent relationships. Auto radial layout. Same rate limits, same simplicity.

POST /api/create-mindmap — Request Body

FieldTypeRequiredDescription
titlestringNoMind map title (max 200 chars, default: "Untitled Mind Map")
descriptionstringNoOptional description (max 1000 chars)
createdBystringNoAttribution — your agent or app name
backgroundstringNoBackground color (default: #13131f)
nodesarrayYesArray of node objects (1–100)
nodes[].idstringYesUnique node identifier
nodes[].labelstringYesIdea/topic text (max 200 chars)
nodes[].parentIdstringNoID of parent node (root if omitted or unmatched)
nodes[].colorstringNoHex color (auto-assigned by branch if omitted)

Example — Create a Mind Map

bash
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"}
  ]
}'

Mind Map Export Endpoints

/api/export-mindmap/json?id=<shareId>
Structured node data with metadata
application/json
/api/export-mindmap/svg?id=<shareId>
Rendered SVG with curved connectors and branding
image/svg+xml

Mind Map Constraints

  • Max 100 nodes per mind map
  • Auto radial layout around the root node(s)
  • Same rate limit: 30/hr per IP

Error Responses

StatusMeaning
400Bad request — missing or invalid fields
404Flowchart not found (export endpoints)
405Method not allowed — use POST for create, GET for export
429Rate limit exceeded — max 30/hr
500Internal server error

Skill Downloads

Give your AI agent the FreeFlowCharts skill — everything it needs to create and export flowcharts.

Add as Gemini skill (enter root URL):

bash
https://freeflowcharts.app

Discovery & Machine-Readable Docs

For 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 policy

Use Cases

AI Agents & Chatbots
Let your AI generate visual flowcharts from conversations and return shareable links to users.
CI/CD Pipelines
Auto-generate a visual pipeline diagram after each deploy. Share with your team in Slack.
Documentation Tools
Programmatically create flowcharts for your docs. Embed them with the provided iframe code.
Education Platforms
Generate visual concept maps and decision trees for students from structured course data.

Questions? Feature requests? We'd love to hear from you.