{
  "openapi": "3.1.0",
  "info": {
    "version": "1.0.0",
    "title": "Crawl4AI API",
    "description": "AI-powered web scraping and crawling API"
  },
  "paths": {
    "/crawl/job": {
      "post": {
        "summary": "Submit Crawl Job",
        "description": "Submit a new web crawling job",
        "operationId": "submitCrawlJob",
        "x-zuplo-route": {
          "corsPolicy": "none",
          "handler": {
            "export": "default",
            "module": "$import(./modules/backend-proxy)"
          },
          "policies": {
            "inbound": ["api-key-auth", "quota-enforcement", "rate-limit"],
            "outbound": ["add-rate-limit-headers", "quota-headers", "billing-track"]
          }
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "urls": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    },
                    "description": "List of URLs to crawl"
                  }
                },
                "required": ["urls"]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Job submitted successfully"
          },
          "401": {
            "description": "Unauthorized - Invalid API key"
          },
          "429": {
            "description": "Rate limit exceeded"
          }
        }
      }
    },
    "/crawl/job/{jobId}": {
      "get": {
        "summary": "Get Crawl Job Status",
        "description": "Get the status and results of a crawl job",
        "operationId": "getCrawlJob",
        "x-zuplo-route": {
          "corsPolicy": "none",
          "handler": {
            "export": "default",
            "module": "$import(./modules/backend-proxy)"
          },
          "policies": {
            "inbound": ["api-key-auth", "quota-enforcement", "rate-limit"],
            "outbound": ["add-rate-limit-headers", "quota-headers", "billing-track"]
          }
        },
        "parameters": [
          {
            "name": "jobId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Job ID"
          }
        ],
        "responses": {
          "200": {
            "description": "Job status and results"
          },
          "401": {
            "description": "Unauthorized - Invalid API key"
          },
          "404": {
            "description": "Job not found"
          }
        }
      }
    }
  }
}
