---
name: FreeFlowCharts
description: Create, export, and share interactive flowcharts, Venn diagrams, org charts, pie charts, and mind maps via API. No API key required. Supports 19 node types, 7 themes, and exports to PNG, SVG, JSON, and Mermaid.
url: https://freeflowcharts.app
api_base_url: https://freeflowcharts.app/api
version: 1.0.0
auth: none
logo: https://freeflowcharts.app/logo.png
contact: hello@imagey.ai
---

# FreeFlowCharts API Skill

> Create, export, and share interactive flowcharts, Venn diagrams, org charts, pie charts, and mind maps via API. No API key required.

**Base URL:** `https://freeflowcharts.app`
**Auth:** None
**Rate Limit:** 30 requests/hour per IP
**OpenAPI Spec:** https://freeflowcharts.app/openapi.json

---

## Endpoints

### POST /api/create-flowchart

Create a flowchart and get a shareable link.

**Request:**
```json
{
  "title": "My Flow",
  "description": "Optional description",
  "createdBy": "My Agent",
  "nodes": [
    { "id": "1", "type": "start", "label": "Begin" },
    { "id": "2", "type": "process", "label": "Do work" },
    { "id": "3", "type": "decision", "label": "Done?" },
    { "id": "4", "type": "end", "label": "Finish" }
  ],
  "edges": [
    { "from": "1", "to": "2" },
    { "from": "2", "to": "3" },
    { "from": "3", "to": "4", "label": "Yes" },
    { "from": "3", "to": "2", "label": "No" }
  ],
  "background": "linear-gradient(135deg, #0f0c29, #302b63, #24243e)",
  "theme": "neon"
}
```

**Response (201):**
```json
{
  "success": true,
  "flowId": "abc123",
  "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"
}
```

### GET /api/export/json?id=\<shareId\>

Returns structured JSON with nodes, edges, and metadata.

### GET /api/export/mermaid?id=\<shareId\>

Returns Mermaid `flowchart TD` syntax as `text/plain`. Paste into GitHub markdown, Notion, Obsidian, or any Mermaid renderer.

### GET /api/export/svg?id=\<shareId\>

Returns `image/svg+xml` — themed vector image with colored nodes, arrows, and branding. Edge and text colors auto-adapt for contrast on light backgrounds.

### GET /api/export/png?id=\<shareId\>

Returns `image/png` — 1600px-wide rasterized PNG. Server-side rendered. Contrast-aware like SVG.

### GET /api/node-types

Returns all 19 supported node types with descriptions and colors.

### GET /api/health

Returns API status, version, available endpoints, and rate limit info.

---

## Venn Diagram Endpoints

### POST /api/create-venn

Create a Venn diagram and get a shareable link.

**Request:**
```json
{
  "title": "Skills Overlap",
  "description": "Team skills comparison",
  "createdBy": "My Agent",
  "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": "Figma", "x": 390, "y": 440, "color": "#86efac", "region": "C" },
    { "id": "l4", "text": "Full-Stack", "x": 390, "y": 220, "color": "#ffffff", "region": "AB" }
  ],
  "bgColor": "#06040d"
}
```

**Response (201):**
```json
{
  "success": true,
  "vennId": "abc123",
  "shareId": "x9Qm4kR7pTnW",
  "url": "https://freeflowcharts.app/venn/view/x9Qm4kR7pTnW",
  "embed": "<iframe src=\"https://freeflowcharts.app/venn/view/x9Qm4kR7pTnW\" width=\"800\" height=\"600\" frameborder=\"0\"></iframe>",
  "branding": "Powered by FreeFlowCharts — https://freeflowcharts.app"
}
```

**Circle fields:**

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| id | string | Yes | Unique circle identifier |
| label | string | Yes | Circle label (max 100 chars) |
| cx | number | No | X center position (auto-layout if omitted) |
| cy | number | No | Y center position (auto-layout if omitted) |
| r | number | No | Radius, 20–400 (default: auto based on count) |
| color | string | No | Hex color (default: auto-assigned) |
| opacity | number | No | Fill opacity 0.05–1.0 (default: 0.35) |

**Label fields:**

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| id | string | Yes | Unique label identifier |
| text | string | Yes | Label text (max 200 chars) |
| x | number | No | X position (default: 400) |
| y | number | No | Y position (default: 300) |
| fontSize | number | No | Font size 8–48 (default: 14) |
| color | string | No | Hex color (default: #ffffff) |
| region | string | No | Region hint, e.g. "A", "AB", "ABC" |

**Constraints:**
- Max 8 circles, 50 labels per Venn diagram
- If `cx`/`cy` omitted, circles are auto-positioned
- `bgColor` is optional — hex color (default: `#06040d`)

### GET /api/export-venn/json?id=\<shareId\>

Returns structured JSON with circles, labels, and metadata.

### GET /api/export-venn/svg?id=\<shareId\>

Returns `image/svg+xml` — rendered Venn diagram with circles, labels, grid, and branding.

---

## Org Chart Endpoints

### POST /api/create-orgchart

Create an org chart and get a shareable link.

**Request:**
```json
{
  "title": "My Team",
  "createdBy": "My Agent",
  "nodes": [
    { "id": "1", "label": "CEO", "title": "Chief Executive" },
    { "id": "2", "label": "CTO", "title": "Technology", "parentId": "1" },
    { "id": "3", "label": "CFO", "title": "Finance", "parentId": "1" },
    { "id": "4", "label": "Engineering", "parentId": "2" },
    { "id": "5", "label": "Design", "parentId": "2" }
  ]
}
```

**Response (201):**
```json
{
  "success": true,
  "shareId": "a1b2c3d4e5f6g7h8",
  "url": "https://freeflowcharts.app/orgchart/view/a1b2c3d4e5f6g7h8",
  "embed": "<iframe src=\"...\" width=\"800\" height=\"600\" frameborder=\"0\"></iframe>"
}
```

**Node fields:**

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| id | string | Yes | Unique node identifier |
| label | string | Yes | Person/role name (max 200 chars) |
| title | string | No | Job title (max 200 chars) |
| parentId | string | No | ID of parent node (null for root) |
| color | string | No | Hex color (auto-assigned by depth) |

**Constraints:** Max 100 nodes. Auto-layout tree if positions omitted.

### GET /api/export-orgchart/json?id=\<shareId\>

Returns structured JSON with nodes and metadata.

### GET /api/export-orgchart/svg?id=\<shareId\>

Returns `image/svg+xml` — rendered org chart with nodes, connectors, and branding.

---

## Pie Chart Endpoints

### POST /api/create-piechart

Create a pie or donut chart and get a shareable link.

**Request:**
```json
{
  "title": "Market Share Q1",
  "createdBy": "My Agent",
  "slices": [
    { "label": "Product A", "value": 40, "color": "#3b82f6" },
    { "label": "Product B", "value": 30, "color": "#ef4444" },
    { "label": "Other", "value": 30, "color": "#22c55e" }
  ],
  "donut": true
}
```

**Response (201):**
```json
{
  "success": true,
  "shareId": "p1e2c3h4a5r6t7s8",
  "url": "https://freeflowcharts.app/piechart/view/p1e2c3h4a5r6t7s8",
  "embed": "<iframe src=\"...\" width=\"800\" height=\"600\" frameborder=\"0\"></iframe>"
}
```

**Slice fields:**

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| label | string | Yes | Slice label (max 200 chars) |
| value | number | Yes | Numeric value (non-negative) |
| color | string | No | Hex color (auto-assigned) |

**Options:** `donut` (boolean, default false), `showLegend` (boolean, default true).
**Constraints:** Max 50 slices. Total values must be > 0.

### GET /api/export-piechart/json?id=\<shareId\>

Returns structured JSON with slices and metadata.

### GET /api/export-piechart/svg?id=\<shareId\>

Returns `image/svg+xml` — rendered pie/donut chart with legend and branding.

---

## Mind Map Endpoints

### POST /api/create-mindmap

Create a mind map and get a shareable link.

**Request:**
```json
{
  "title": "Project Ideas",
  "createdBy": "My Agent",
  "nodes": [
    { "id": "1", "label": "Main Topic" },
    { "id": "2", "label": "Branch A", "parentId": "1" },
    { "id": "3", "label": "Branch B", "parentId": "1" },
    { "id": "4", "label": "Sub-idea 1", "parentId": "2" },
    { "id": "5", "label": "Sub-idea 2", "parentId": "2" }
  ]
}
```

**Response (201):**
```json
{
  "success": true,
  "shareId": "m1n2d3m4a5p6s7x8",
  "url": "https://freeflowcharts.app/mindmap/view/m1n2d3m4a5p6s7x8",
  "embed": "<iframe src=\"...\" width=\"800\" height=\"600\" frameborder=\"0\"></iframe>"
}
```

**Node fields:**

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| id | string | Yes | Unique node identifier |
| label | string | Yes | Idea/topic text (max 200 chars) |
| parentId | string | No | ID of parent node (null for root) |
| color | string | No | Hex color (auto-assigned by branch) |

**Constraints:** Max 100 nodes. Auto radial layout.

### GET /api/export-mindmap/json?id=\<shareId\>

Returns structured JSON with nodes and metadata.

### GET /api/export-mindmap/svg?id=\<shareId\>

Returns `image/svg+xml` — rendered mind map with curved connectors and branding.

---

## Node Types

| Type | Description | Color |
|------|-------------|-------|
| start | Beginning of the flow | #22c55e |
| end | End of the flow | #ef4444 |
| process | Action or operation | #3b82f6 |
| decision | Yes/No branching point | #f59e0b |
| io | Data input or output | #8b5cf6 |
| delay | Wait or pause | #64748b |
| subprocess | Nested process | #06b6d4 |
| task | Assignable task | #06b6d4 |
| bug | Bug or issue | #f43f5e |
| email | Email action | #a855f7 |
| meeting | Meeting or sync | #10b981 |
| approval | Approval step | #22c55e |
| milestone | Key milestone | #0ea5e9 |
| deadline | Time-sensitive step | #f43f5e |
| handoff | Team handoff | #a855f7 |
| cost | Budget/cost node | #10b981 |
| note | Sticky note | #eab308 |
| textlabel | Text annotation | #94a3b8 |
| approvalGate | Approval gate checkpoint | #ef4444 |

Unknown types default to `process`.

---

## Constraints

- Max 100 nodes, 200 edges per flowchart
- Edges referencing non-existent node IDs are silently dropped
- If `x`/`y` omitted, nodes are auto-laid out in a grid
- API-created flowcharts include branding bar
- `background` is optional — hex color (`#1a1a2e`) or CSS `linear-gradient(...)`. Default: `#06040d`
- `theme` is optional — changes the entire visual style. One of: `default`, `neon`, `pastel`, `retro`, `ocean`, `brutalist`, `candy`

## Error Codes

| Status | Meaning |
|--------|---------|
| 400 | Missing or invalid fields |
| 404 | Flowchart not found (export) |
| 405 | Wrong HTTP method |
| 429 | Rate limit exceeded (30/hr) |
| 500 | Internal server error |

---

## Quick Examples

**cURL — create:**
```bash
curl -X POST https://freeflowcharts.app/api/create-flowchart \
  -H "Content-Type: application/json" \
  -d '{"title":"Quick Test","nodes":[{"id":"1","type":"start","label":"Go"},{"id":"2","type":"end","label":"Done"}],"edges":[{"from":"1","to":"2"}]}'
```

**cURL — export:**
```bash
curl "https://freeflowcharts.app/api/export/mermaid?id=YOUR_SHARE_ID"
curl "https://freeflowcharts.app/api/export/svg?id=YOUR_SHARE_ID" -o flow.svg
curl "https://freeflowcharts.app/api/export/png?id=YOUR_SHARE_ID" -o flow.png

# Override background on export
curl "https://freeflowcharts.app/api/export/svg?id=YOUR_SHARE_ID&bg=%231a1a2e" -o custom-bg.svg

# Override theme on export
curl "https://freeflowcharts.app/api/export/png?id=YOUR_SHARE_ID&theme=neon" -o neon.png
```

---

## Discovery

**Canonical source (always up to date):**

| URL | Purpose |
|-----|---------|
| https://freeflowcharts.app/openapi.json | OpenAPI 3.1 spec |
| https://freeflowcharts.app/SKILL.md | This skill file |
| https://freeflowcharts.app/.well-known/ai-plugin.json | ChatGPT/OpenAI plugin manifest |
| https://freeflowcharts.app/llms.txt | LLM crawler info |
| https://freeflowcharts.app/api/health | Live endpoint listing |
| https://freeflowcharts.app/api/node-types | Node type reference |

**GitHub repo (examples, themes, changelogs):**

| URL | Purpose |
|-----|---------|
| [github.com/nerdfreakuser/freeflowcharts-api](https://github.com/nerdfreakuser/freeflowcharts-api) | API docs, code examples, themes guide |
| [NODE_TYPES.md](https://github.com/nerdfreakuser/freeflowcharts-api/blob/master/NODE_TYPES.md) | All 19 node types with colors |
| [THEMES.md](https://github.com/nerdfreakuser/freeflowcharts-api/blob/master/THEMES.md) | Visual theme guide |
| [examples/](https://github.com/nerdfreakuser/freeflowcharts-api/tree/master/examples) | Bash, Python, JS examples |
| [CHANGELOG.md](https://github.com/nerdfreakuser/freeflowcharts-api/blob/master/CHANGELOG.md) | API changelog |
