- Development:
http://localhost:8000 - Production:
http://your-ec2-ip:8000
- Swagger UI:
/docs- Interactive API explorer - ReDoc:
/redoc- Alternative API documentation
Currently no authentication required. For production, add API keys or OAuth.
All requests should include:
Content-Type: application/json(for POST requests)
All responses include:
X-Request-ID: Unique request identifier for trackingX-Process-Time: Request processing time in seconds
Generate an architecture diagram from natural language description.
Request:
{
"description": "Create a serverless API with API Gateway, Lambda, and DynamoDB",
"provider": "aws",
"outformat": "png",
"direction": "LR",
"graphviz_attrs": {
"graph_attr": {},
"node_attr": {},
"edge_attr": {}
}
}Parameters:
description(required): Natural language description of the architectureprovider(optional, default: "aws"): Cloud provider - "aws", "azure", or "gcp"outformat(optional, default: "png"): Output format - "png", "svg", "pdf", "dot"direction(optional, deprecated): Diagram direction - always uses "LR" (left-to-right) regardless of inputgraphviz_attrs(optional): Graphviz styling attributes
Response:
{
"diagram_url": "/api/diagrams/serverless_api.png",
"message": "Successfully generated diagram: Serverless API",
"session_id": "uuid-string",
"generation_id": "uuid-string",
"generated_code": "from diagrams import Diagram..."
}Status Codes:
200: Success400: Invalid input500: Generation failed
Regenerate an existing diagram in a different output format.
Request:
{
"session_id": "uuid-string",
"outformat": "svg"
}Parameters:
session_id(required): Session ID from previous diagram generationoutformat(required): Desired output format - "png", "svg", "pdf", "dot"
Response:
{
"diagram_url": "/api/diagrams/serverless_api.svg",
"message": "Diagram regenerated in SVG format",
"session_id": "uuid-string",
"generation_id": "uuid-string",
"generated_code": null
}Status Codes:
200: Success404: Session not found or expired500: Regeneration failed
Execute Python code directly to generate a diagram (Advanced Code Mode).
Request:
{
"code": "from diagrams import Diagram\nfrom diagrams.aws.compute import EC2\nwith Diagram(...): EC2('Instance')",
"outformat": "png"
}Parameters:
code(required): Python code using Diagrams libraryoutformat(optional, default: "png"): Output format
Response:
{
"diagram_url": "/api/diagrams/diagram.png",
"message": "Code executed successfully",
"errors": [],
"warnings": []
}Status Codes:
200: Success500: Execution failed
Get code completions for a specific cloud provider.
Parameters:
provider(path parameter): Cloud provider - "aws", "azure", or "gcp"
Response:
{
"classes": {
"compute": ["EC2", "Lambda", "ECS"],
"storage": ["S3", "EBS"]
},
"imports": {
"EC2": "from diagrams.aws.compute import EC2"
},
"keywords": ["Diagram", "Cluster", "Edge"],
"operators": [">>", "<<", "-"]
}Status Codes:
200: Success400: Invalid provider500: Failed to load completions
Validate Python code syntax and check for common errors.
Request:
{
"code": "from diagrams import Diagram\nfrom diagrams.aws.compute import EC2"
}Response:
{
"valid": true,
"errors": [],
"suggestions": []
}Status Codes:
200: Success (validation completed)
Retrieve a generated diagram file.
Parameters:
filename(path parameter): Diagram filename (e.g., "my_diagram.png")
Response:
- Image file (PNG, SVG) or DOT source code
Status Codes:
200: Success400: Invalid filename format403: Path traversal attempt detected404: Diagram file not found
Health check endpoint.
Response:
{
"status": "healthy",
"service": "diagram-generator-api"
}Status Codes:
200: Service is healthy
Submit thumbs up/down feedback for a diagram generation.
Request:
{
"generation_id": "uuid-string",
"session_id": "uuid-string",
"thumbs_up": true,
"code_hash": "optional-sha256-hash",
"code": "optional-python-code-string"
}Parameters:
generation_id(required): Unique ID from diagram generation responsesession_id(required): Session ID from diagram generationthumbs_up(required): Boolean - true for thumbs up, false for thumbs downcode_hash(optional): SHA256 hash of generated codecode(optional): Generated Python code for pattern extraction
Response:
{
"feedback_id": "uuid-string",
"message": "Thank you for your feedback!"
}Status Codes:
200: Success500: Failed to save feedback
Get logs for a specific request ID. Used for error reporting and debugging.
Parameters:
request_id(path parameter): Request identifier fromX-Request-IDheader
Response:
{
"request_id": "uuid-string",
"logs": ["log line 1", "log line 2", ...],
"last_50_lines": false
}Status Codes:
200: Success (returns logs for request_id, or last 50 logs if not found)
Get feedback statistics for the system.
Parameters:
days(query parameter, optional, default: 30): Number of days to look back
Response:
{
"total_feedback": 100,
"thumbs_up": 85,
"thumbs_down": 15,
"success_rate": 0.85,
"period_days": 30
}Status Codes:
200: Success500: Failed to get stats
- Sessions expire after 1 hour of inactivity
- Session cleanup runs automatically every 5 minutes
- Expired sessions return
404with message "Session not found or expired"
Supported output formats:
- png: PNG image (default, raster)
- svg: Scalable Vector Graphics (vector, editable)
- pdf: PDF document (vector)
- dot: Graphviz DOT source code (text, editable)
Graph Attributes:
{
"rankdir": "LR", // Layout direction: LR, TB, BT, RL
"bgcolor": "#ffffff", // Background color
"fontname": "Helvetica", // Font family
"nodesep": "0.8", // Node spacing
"ranksep": "1.0", // Rank spacing
"splines": "polyline" // Edge routing: polyline, ortho, curved
}Node Attributes:
{
"shape": "box", // box, ellipse, circle, diamond
"style": "filled,rounded", // filled, rounded, dashed, dotted
"fillcolor": "#e8f4f8", // Fill color
"fontcolor": "#2c3e50", // Text color
"penwidth": "1.5" // Border width
}Edge Attributes:
{
"color": "#333333", // Edge color
"style": "bold", // solid, dashed, dotted, bold
"arrowsize": "0.8", // Arrow size
"penwidth": "1.5", // Edge width
"label": "HTTP" // Edge label
}Serverless API:
{
"description": "API Gateway, Lambda, DynamoDB",
"provider": "aws",
"direction": "LR"
}Microservices with Clusters:
{
"description": "Microservices architecture",
"provider": "aws",
"clusters": [
{"id": "services", "name": "Services", "component_ids": ["svc1", "svc2"]},
{"id": "data", "name": "Data Layer", "component_ids": ["db"]}
]
}- Diagram not generating? Check backend logs:
sudo journalctl -u diagram-api.service -f - Messy edges? Use
"splines": "polyline"in graph_attr, increasenodesepandranksep - Session expired? Sessions expire after 1 hour of inactivity - generate a new diagram