Files
n8n-workflows/Documentation/api-endpoints.md
2025-07-28 09:44:28 -05:00

7.6 KiB

N8N Workflow API Endpoints Documentation

Base URL

https://scan-might-updates-postage.trycloudflare.com/api

Available Endpoints

1. Statistics Endpoint

URL: /api/stats
Method: GET
Description: Returns overall repository statistics

Response Structure:

{
  "total": 2055,
  "active": 215,
  "inactive": 1840,
  "triggers": {
    "Manual": 1234,
    "Webhook": 456,
    "Scheduled": 234,
    "Complex": 131
  },
  "complexity": {
    "low": 1456,
    "medium": 456,
    "high": 143
  },
  "total_nodes": 29518,
  "unique_integrations": 365,
  "last_indexed": "2025-07-27 17:40:54"
}

2. Workflow Search Endpoint

URL: /api/workflows
Method: GET
Description: Search and paginate through workflows

Query Parameters:

  • q (string): Search query (default: '')
  • trigger (string): Filter by trigger type - 'all', 'Webhook', 'Scheduled', 'Manual', 'Complex' (default: 'all')
  • complexity (string): Filter by complexity - 'all', 'low', 'medium', 'high' (default: 'all')
  • active_only (boolean): Show only active workflows (default: false)
  • page (integer): Page number (default: 1)
  • per_page (integer): Results per page, max 100 (default: 20)

Example Request:

curl "https://scan-might-updates-postage.trycloudflare.com/api/workflows?per_page=100&page=1"

Response Structure:

{
  "workflows": [
    {
      "id": 102,
      "filename": "example.json",
      "name": "Example Workflow",
      "workflow_id": "",
      "active": 0,
      "description": "Example description",
      "trigger_type": "Manual",
      "complexity": "medium",
      "node_count": 6,
      "integrations": ["HTTP", "Google Sheets"],
      "tags": [],
      "created_at": "",
      "updated_at": "",
      "file_hash": "...",
      "file_size": 4047,
      "analyzed_at": "2025-07-27 17:40:54"
    }
  ],
  "total": 2055,
  "page": 1,
  "per_page": 100,
  "pages": 21,
  "query": "",
  "filters": {
    "trigger": "all",
    "complexity": "all",
    "active_only": false
  }
}

3. Individual Workflow Detail Endpoint

URL: /api/workflows/{filename}
Method: GET
Description: Get detailed information about a specific workflow

Example Request:

curl "https://scan-might-updates-postage.trycloudflare.com/api/workflows/0150_Awsrekognition_GoogleSheets_Automation_Webhook.json"

Response Structure:

{
  "metadata": {
    "id": 102,
    "filename": "0150_Awsrekognition_GoogleSheets_Automation_Webhook.json",
    "name": "Awsrekognition Googlesheets Automation Webhook",
    "workflow_id": "",
    "active": 0,
    "description": "Manual workflow that orchestrates Httprequest, Google Sheets, and Awsrekognition for data processing. Uses 6 nodes.",
    "trigger_type": "Manual",
    "complexity": "medium",
    "node_count": 6,
    "integrations": ["Httprequest", "Google Sheets", "Awsrekognition"],
    "tags": [],
    "created_at": "",
    "updated_at": "",
    "file_hash": "74bdca251ec3446c2f470c17024beccd",
    "file_size": 4047,
    "analyzed_at": "2025-07-27 17:40:54"
  },
  "raw_json": {
    "nodes": [...],
    "connections": {...}
  }
}

Important: The actual workflow metadata is nested under the metadata key, not at the root level.

4. Categories Endpoint

URL: /api/categories
Method: GET
Description: Get list of available workflow categories

Response Structure:

{
  "categories": [
    "AI Agent Development",
    "Business Process Automation", 
    "CRM & Sales",
    "Cloud Storage & File Management",
    "Communication & Messaging",
    "Creative Content & Video Automation",
    "Creative Design Automation",
    "Data Processing & Analysis",
    "E-commerce & Retail",
    "Financial & Accounting",
    "Marketing & Advertising Automation",
    "Project Management",
    "Social Media Management",
    "Technical Infrastructure & DevOps",
    "Uncategorized",
    "Web Scraping & Data Extraction"
  ]
}

5. Category Mappings Endpoint

URL: /api/category-mappings
Method: GET
Description: Get complete mapping of workflow filenames to categories

Response Structure:

{
  "mappings": {
    "0001_Telegram_Schedule_Automation_Scheduled.json": "Communication & Messaging",
    "0002_Manual_Totp_Automation_Triggered.json": "Uncategorized",
    "0003_Bitwarden_Automate.json": "Uncategorized",
    "...": "...",
    "workflow_filename.json": "Category Name"
  }
}

Total Mappings: 2,055 filename-to-category mappings

6. Download Workflow Endpoint

URL: /api/workflows/{filename}/download
Method: GET
Description: Download the raw JSON file for a workflow

Response: Raw JSON workflow file with appropriate headers for download

7. Workflow Diagram Endpoint

URL: /api/workflows/{filename}/diagram
Method: GET
Description: Generate a Mermaid diagram representation of the workflow

Response Structure:

{
  "diagram": "graph TD\n    node1[\"Node Name\\n(Type)\"]\n    node1 --> node2\n    ..."
}

Usage Examples

Get Business Process Automation Workflows

# Step 1: Get category mappings
curl -s "https://scan-might-updates-postage.trycloudflare.com/api/category-mappings" \
  | jq -r '.mappings | to_entries | map(select(.value == "Business Process Automation")) | .[].key'

# Step 2: For each filename, get details
curl -s "https://scan-might-updates-postage.trycloudflare.com/api/workflows/{filename}" \
  | jq '.metadata'

Search for Specific Workflows

# Search for workflows containing "calendar"
curl -s "https://scan-might-updates-postage.trycloudflare.com/api/workflows?q=calendar&per_page=50"

# Get only webhook-triggered workflows
curl -s "https://scan-might-updates-postage.trycloudflare.com/api/workflows?trigger=Webhook&per_page=100"

# Get only active workflows
curl -s "https://scan-might-updates-postage.trycloudflare.com/api/workflows?active_only=true&per_page=100"

Pagination Through All Workflows

# Get total pages
total_pages=$(curl -s "https://scan-might-updates-postage.trycloudflare.com/api/workflows?per_page=100&page=1" | jq '.pages')

# Loop through all pages
for page in $(seq 1 $total_pages); do
  curl -s "https://scan-might-updates-postage.trycloudflare.com/api/workflows?per_page=100&page=${page}"
done

Rate Limiting and Best Practices

  • Use small delays between requests (0.05-0.1 seconds)
  • Process in batches by category for better organization
  • Handle JSON parsing errors gracefully
  • Validate response structure before processing

Performance Tips

  • Use per_page=100 for maximum efficiency
  • Cache category mappings for multiple operations
  • Process categories in parallel if needed
  • Use jq for efficient JSON processing

Error Handling

Common Response Codes

  • 200: Success
  • 404: Workflow not found
  • 500: Server error
  • 408: Request timeout

Error Response Structure

{
  "error": "Error message",
  "details": "Additional error details"
}

Data Quality Notes

Known Issues

  1. Some workflow names may be generic (e.g., "My workflow")
  2. Integration names are extracted from node types and may vary in formatting
  3. Descriptions are auto-generated and may not reflect actual workflow purpose
  4. Active status indicates workflow configuration, not actual usage

Data Reliability

  • File hashes: Reliable for detecting changes
  • Node counts: Accurate
  • Integration lists: Generally accurate but may include core n8n components
  • Complexity ratings: Based on node count (≤5: low, 6-15: medium, 16+: high)
  • Categories: Human-curated and reliable