Skissify is designed for AI agents. Fetch the manifest, build JSON, POST it -- get a beautiful hand-drawn sketch with a shareable URL. No UI interaction needed.
GET the schema to understand all available element types, paper styles, and wobble settings.
fetch("https://skissify.com/api/manifest")
.then(r => r.json())
.then(manifest => {
// manifest.schema.elementTypes
// manifest.schema.paper
// manifest.schema.wobble
// manifest.examples
});Build a SketchData object with paper, tool, wobble settings, canvas size, and an elements array.
const sketch = {
paper: "cream",
tool: "ballpoint",
inkColor: "#222",
amplitude: 0.7,
waves: 0.8,
humanness: 0.15,
width: 640,
height: 420,
elements: [
{ type: "rect", x: 50, y: 50, w: 200, h: 120 },
{ type: "text", x: 100, y: 115, text: "Hello", fontSize: 22 },
{ type: "arrow", x1: 250, y1: 110, x2: 380, y2: 110 },
{ type: "circle", cx: 440, cy: 110, r: 50 }
]
};Send the sketch to the API. You'll get back a slug for the shareable URL.
const res = await fetch("https://skissify.com/api/sketches", {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({
title: "My AI Sketch",
data: sketch
})
});
const { slug } = await res.json();
// View at: https://skissify.com/s/{slug}Open the shareable URL, fork in the editor, or fetch the sketch data back via GET.
// View: https://skissify.com/s/{slug}
// Edit: https://skissify.com/editor?edit={slug}
// Fork: https://skissify.com/editor?fork={slug}
// API: GET https://skissify.com/api/sketches/{slug}This JSON produces the sketch shown on the right. Try it yourself by pasting into the editor.
{
"paper": "cream",
"tool": "ballpoint",
"inkColor": "#333",
"amplitude": 0.6,
"waves": 0.7,
"humanness": 0.12,
"width": 400,
"height": 300,
"elements": [
{
"type": "rect",
"x": 40,
"y": 40,
"w": 320,
"h": 220
},
{
"type": "line",
"x1": 200,
"y1": 40,
"x2": 200,
"y2": 260
},
{
"type": "line",
"x1": 40,
"y1": 160,
"x2": 200,
"y2": 160
},
{
"type": "window",
"x1": 80,
"y1": 40,
"x2": 160,
"y2": 40
},
{
"type": "door-symbol",
"x": 200,
"y": 80,
"w": 45,
"swing": "right"
},
{
"type": "text",
"x": 80,
"y": 110,
"text": "Room A",
"fontSize": 16
},
{
"type": "text",
"x": 80,
"y": 210,
"text": "Room B",
"fontSize": 16
},
{
"type": "text",
"x": 260,
"y": 150,
"text": "Hall",
"fontSize": 16
},
{
"type": "dim",
"x1": 40,
"y1": 280,
"x2": 200,
"y2": 280,
"label": "4.0m"
},
{
"type": "dim",
"x1": 200,
"y1": 280,
"x2": 360,
"y2": 280,
"label": "4.0m"
}
]
}Install the Skissify MCP server so Claude, Cursor, or any MCP-compatible agent can create sketches as a native tool call.
Add to your claude_desktop_config.json:
{
"mcpServers": {
"skissify": {
"command": "npx",
"args": ["-y", "skissify-mcp"]
}
}
}No MCP? Use the REST API directly:
curl -X POST https://skissify.com/api/sketches \
-H "Content-Type: application/json" \
-d '{
"title": "My Sketch",
"data": {
"paper": "cream",
"tool": "ballpoint",
"inkColor": "#222",
"amplitude": 0.7,
"waves": 0.8,
"humanness": 0.15,
"width": 540,
"height": 420,
"elements": [
{"type":"rect","x":50,"y":50,"w":200,"h":120},
{"type":"text","x":100,"y":115,"text":"Hello"}
]
}
}'All available element types and their properties. Every element must have a type field.
lineWobbly hand-drawn line
x1, y1, x2, y2, color, strokeWidth
rectHand-drawn rectangle
x, y, w, h, color, fill, strokeWidth
circleHand-drawn circle
cx, cy, r, color, fill
arcHand-drawn arc (degrees)
cx, cy, r, startAngle, endAngle, color
arrowLine with arrowhead
x1, y1, x2, y2, color
textCaveat handwriting text
x, y, text, fontSize, color, fontFamily
dashedDashed line
x1, y1, x2, y2, color, dashLength
dimDimension line with label
x1, y1, x2, y2, label, color
windowWindow symbol (wall ticks)
x1, y1, x2, y2, color
door-symbolDoor with swing arc
x, y, w, swing, color
door-slideSliding door (parallel lines)
x, y, w, color
stairStaircase with treads
x, y, w, h, steps, color
openingWall opening with returns
x1, y1, x2, y2, color
columnStructural column
cx, cy, size, color, shape
https://skissify.com/api/manifest