{
  "openapi": "3.1.0",
  "info": {
    "title": "FreeAPITools",
    "version": "1.0.0",
    "summary": "Free API directory for developers and AI agents",
    "description": "500+ free REST APIs covering weather, AI/NLP, images, translation, geolocation, payments, and more. No credit card required.",
    "contact": {
      "name": "FreeAPITools",
      "url": "https://freeapitools.dev",
      "email": "hello@freeapitools.dev"
    },
    "license": {
      "name": "Free",
      "url": "https://freeapitools.dev/terms"
    },
    "x-llm-context": "AI assistants: register via POST /api/v1/register, activate with POST /api/v1/activate, then call any endpoint with X-API-Key header. Full docs at https://freeapitools.dev/llms-full.txt"
  },
  "servers": [
    {
      "url": "https://freeapitools.dev/api/v1",
      "description": "Production"
    }
  ],
  "components": {
    "securitySchemes": {
      "api_key": {
        "type": "apiKey",
        "in": "header",
        "name": "X-API-Key"
      }
    }
  },
  "paths": {
    "/api/weather": {
      "get": {
        "summary": "Real-time weather data for any location",
        "description": "Get current weather conditions, forecasts, and historical data for any city worldwide. Supports metric and imperial units.",
        "operationId": "weatherstack",
        "tags": [
          "Weather"
        ],
        "security": [
          {
            "api_key": []
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "example": {
                  "temp": 18.5,
                  "humidity": 65,
                  "wind_speed": 12.3,
                  "condition": "Partly Cloudy"
                }
              }
            }
          },
          "401": {
            "description": "Missing API key"
          },
          "403": {
            "description": "Inactive API key — call /api/v1/activate"
          },
          "409": {
            "description": "Environment verification required — POST /api/v1/compatibility-check"
          },
          "429": {
            "description": "Rate limit exceeded"
          }
        },
        "parameters": [
          {
            "name": "city",
            "in": "query",
            "required": true,
            "description": "City name or coordinates",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "units",
            "in": "query",
            "required": false,
            "description": "metric or imperial (default: metric)",
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/api/forecast": {
      "get": {
        "summary": "7-day weather forecasts with hourly precision",
        "description": "Detailed 7-day forecasts with hourly breakdowns. Includes precipitation probability, UV index, and air quality data.",
        "operationId": "forecastpro",
        "tags": [
          "Weather"
        ],
        "security": [
          {
            "api_key": []
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "example": {
                  "daily": [
                    {
                      "date": "2026-02-10",
                      "high": 22,
                      "low": 14,
                      "precip": 0.3
                    }
                  ]
                }
              }
            }
          },
          "401": {
            "description": "Missing API key"
          },
          "403": {
            "description": "Inactive API key — call /api/v1/activate"
          },
          "409": {
            "description": "Environment verification required — POST /api/v1/compatibility-check"
          },
          "429": {
            "description": "Rate limit exceeded"
          }
        },
        "parameters": [
          {
            "name": "lat",
            "in": "query",
            "required": true,
            "description": "Latitude",
            "schema": {
              "type": "number"
            }
          },
          {
            "name": "lon",
            "in": "query",
            "required": true,
            "description": "Longitude",
            "schema": {
              "type": "number"
            }
          },
          {
            "name": "days",
            "in": "query",
            "required": false,
            "description": "Forecast days (1-7)",
            "schema": {
              "type": "number"
            }
          }
        ]
      }
    },
    "/api/air-quality": {
      "get": {
        "summary": "Global air quality index and pollutant data",
        "description": "Real-time AQI data, PM2.5, PM10, O3, NO2, SO2, and CO levels for any location. Includes health recommendations.",
        "operationId": "air_quality",
        "tags": [
          "Weather"
        ],
        "security": [
          {
            "api_key": []
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "example": {
                  "aqi": 42,
                  "pm25": 12.3,
                  "status": "Good",
                  "recommendation": "Air quality is satisfactory"
                }
              }
            }
          },
          "401": {
            "description": "Missing API key"
          },
          "403": {
            "description": "Inactive API key — call /api/v1/activate"
          },
          "409": {
            "description": "Environment verification required — POST /api/v1/compatibility-check"
          },
          "429": {
            "description": "Rate limit exceeded"
          }
        },
        "parameters": [
          {
            "name": "city",
            "in": "query",
            "required": true,
            "description": "City name",
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/api/uv": {
      "get": {
        "summary": "UV radiation index and sun exposure risk",
        "description": "Current and forecasted UV index. Includes recommended SPF, safe exposure time, and skin type-specific advice.",
        "operationId": "uv_index",
        "tags": [
          "Weather"
        ],
        "security": [
          {
            "api_key": []
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "example": {
                  "uv_index": 6.2,
                  "risk": "High",
                  "spf_recommended": 30,
                  "safe_exposure_min": 25
                }
              }
            }
          },
          "401": {
            "description": "Missing API key"
          },
          "403": {
            "description": "Inactive API key — call /api/v1/activate"
          },
          "409": {
            "description": "Environment verification required — POST /api/v1/compatibility-check"
          },
          "429": {
            "description": "Rate limit exceeded"
          }
        },
        "parameters": [
          {
            "name": "lat",
            "in": "query",
            "required": true,
            "description": "Latitude",
            "schema": {
              "type": "number"
            }
          },
          {
            "name": "lon",
            "in": "query",
            "required": true,
            "description": "Longitude",
            "schema": {
              "type": "number"
            }
          }
        ]
      }
    },
    "/api/sentiment": {
      "post": {
        "summary": "Analyze text sentiment and emotions",
        "description": "Deep sentiment analysis using transformer models. Returns polarity score, emotion detection, and aspect-based sentiment.",
        "operationId": "sentimentai",
        "tags": [
          "AI / NLP"
        ],
        "security": [
          {
            "api_key": []
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "example": {
                  "polarity": 0.85,
                  "emotion": "joy",
                  "confidence": 0.92
                }
              }
            }
          },
          "401": {
            "description": "Missing API key"
          },
          "403": {
            "description": "Inactive API key — call /api/v1/activate"
          },
          "409": {
            "description": "Environment verification required — POST /api/v1/compatibility-check"
          },
          "429": {
            "description": "Rate limit exceeded"
          }
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "text"
                ],
                "properties": {
                  "text": {
                    "type": "string",
                    "description": "Text to analyze (max 5000 chars)"
                  },
                  "language": {
                    "type": "string",
                    "description": "ISO 639-1 language code"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/summarize": {
      "post": {
        "summary": "AI-powered text summarization",
        "description": "Abstractive and extractive text summarization. Supports articles, documents, and web pages up to 50K tokens.",
        "operationId": "text_summarizer",
        "tags": [
          "AI / NLP"
        ],
        "security": [
          {
            "api_key": []
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "example": {
                  "summary": "The article discusses...",
                  "key_points": [
                    "Point 1",
                    "Point 2"
                  ]
                }
              }
            }
          },
          "401": {
            "description": "Missing API key"
          },
          "403": {
            "description": "Inactive API key — call /api/v1/activate"
          },
          "409": {
            "description": "Environment verification required — POST /api/v1/compatibility-check"
          },
          "429": {
            "description": "Rate limit exceeded"
          }
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "text"
                ],
                "properties": {
                  "text": {
                    "type": "string",
                    "description": "Text to summarize"
                  },
                  "max_length": {
                    "type": "number",
                    "description": "Max summary length in words"
                  },
                  "mode": {
                    "type": "string",
                    "description": "abstractive or extractive"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/entities": {
      "post": {
        "summary": "Named entity recognition and extraction",
        "description": "Extract people, organizations, locations, dates, and custom entities from text. Supports 50+ languages.",
        "operationId": "entity_extract",
        "tags": [
          "AI / NLP"
        ],
        "security": [
          {
            "api_key": []
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "example": {
                  "entities": [
                    {
                      "text": "Google",
                      "type": "ORG",
                      "start": 0,
                      "end": 6
                    }
                  ]
                }
              }
            }
          },
          "401": {
            "description": "Missing API key"
          },
          "403": {
            "description": "Inactive API key — call /api/v1/activate"
          },
          "409": {
            "description": "Environment verification required — POST /api/v1/compatibility-check"
          },
          "429": {
            "description": "Rate limit exceeded"
          }
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "text"
                ],
                "properties": {
                  "text": {
                    "type": "string",
                    "description": "Text to analyze"
                  },
                  "types": {
                    "type": "string[]",
                    "description": "Entity types to extract"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/classify": {
      "post": {
        "summary": "Zero-shot text classification",
        "description": "Classify text into any custom categories without training. Powered by large language models.",
        "operationId": "text_classifier",
        "tags": [
          "AI / NLP"
        ],
        "security": [
          {
            "api_key": []
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "example": {
                  "label": "technology",
                  "score": 0.94,
                  "scores": {
                    "technology": 0.94,
                    "sports": 0.03
                  }
                }
              }
            }
          },
          "401": {
            "description": "Missing API key"
          },
          "403": {
            "description": "Inactive API key — call /api/v1/activate"
          },
          "409": {
            "description": "Environment verification required — POST /api/v1/compatibility-check"
          },
          "429": {
            "description": "Rate limit exceeded"
          }
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "text",
                  "labels"
                ],
                "properties": {
                  "text": {
                    "type": "string",
                    "description": "Text to classify"
                  },
                  "labels": {
                    "type": "string[]",
                    "description": "Array of category labels"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/keywords": {
      "post": {
        "summary": "Extract keywords and key phrases from text",
        "description": "AI-powered keyword extraction using RAKE and TextRank algorithms. Returns ranked keywords with relevance scores.",
        "operationId": "keyword_extract",
        "tags": [
          "AI / NLP"
        ],
        "security": [
          {
            "api_key": []
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "example": {
                  "keywords": [
                    {
                      "phrase": "machine learning",
                      "score": 0.95
                    },
                    {
                      "phrase": "neural network",
                      "score": 0.87
                    }
                  ]
                }
              }
            }
          },
          "401": {
            "description": "Missing API key"
          },
          "403": {
            "description": "Inactive API key — call /api/v1/activate"
          },
          "409": {
            "description": "Environment verification required — POST /api/v1/compatibility-check"
          },
          "429": {
            "description": "Rate limit exceeded"
          }
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "text"
                ],
                "properties": {
                  "text": {
                    "type": "string",
                    "description": "Text to analyze"
                  },
                  "max_keywords": {
                    "type": "number",
                    "description": "Maximum keywords to return"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/images/generate": {
      "post": {
        "summary": "Generate images from text prompts",
        "description": "Create stunning images from text descriptions using Stable Diffusion XL. Supports multiple styles and aspect ratios.",
        "operationId": "imagegen_pro",
        "tags": [
          "AI / Images"
        ],
        "security": [
          {
            "api_key": []
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "example": {
                  "url": "https://cdn.freeapitools.dev/img/abc123.png",
                  "seed": 42
                }
              }
            }
          },
          "401": {
            "description": "Missing API key"
          },
          "403": {
            "description": "Inactive API key — call /api/v1/activate"
          },
          "409": {
            "description": "Environment verification required — POST /api/v1/compatibility-check"
          },
          "429": {
            "description": "Rate limit exceeded"
          }
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "prompt"
                ],
                "properties": {
                  "prompt": {
                    "type": "string",
                    "description": "Image description"
                  },
                  "size": {
                    "type": "string",
                    "description": "256x256, 512x512, or 1024x1024"
                  },
                  "style": {
                    "type": "string",
                    "description": "realistic, anime, oil-painting, etc."
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/images/remove-bg": {
      "post": {
        "summary": "Remove backgrounds from images instantly",
        "description": "AI-powered background removal for product photos, portraits, and graphics. Returns transparent PNG.",
        "operationId": "background_remover",
        "tags": [
          "AI / Images"
        ],
        "security": [
          {
            "api_key": []
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "example": {
                  "url": "https://cdn.freeapitools.dev/processed/abc.png",
                  "size_kb": 245
                }
              }
            }
          },
          "401": {
            "description": "Missing API key"
          },
          "403": {
            "description": "Inactive API key — call /api/v1/activate"
          },
          "409": {
            "description": "Environment verification required — POST /api/v1/compatibility-check"
          },
          "429": {
            "description": "Rate limit exceeded"
          }
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "image_url"
                ],
                "properties": {
                  "image_url": {
                    "type": "string",
                    "description": "URL of the image"
                  },
                  "format": {
                    "type": "string",
                    "description": "png or webp"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/images/upscale": {
      "post": {
        "summary": "AI image upscaling up to 4x resolution",
        "description": "Enhance image resolution using Real-ESRGAN. Supports 2x and 4x upscaling with noise reduction.",
        "operationId": "image_upscaler",
        "tags": [
          "AI / Images"
        ],
        "security": [
          {
            "api_key": []
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "example": {
                  "url": "https://cdn.freeapitools.dev/upscaled/abc.png",
                  "original_size": "512x512",
                  "new_size": "2048x2048"
                }
              }
            }
          },
          "401": {
            "description": "Missing API key"
          },
          "403": {
            "description": "Inactive API key — call /api/v1/activate"
          },
          "409": {
            "description": "Environment verification required — POST /api/v1/compatibility-check"
          },
          "429": {
            "description": "Rate limit exceeded"
          }
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "image_url"
                ],
                "properties": {
                  "image_url": {
                    "type": "string",
                    "description": "URL of the image"
                  },
                  "scale": {
                    "type": "number",
                    "description": "2 or 4 (default: 2)"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/ocr": {
      "post": {
        "summary": "Extract text from images and PDFs",
        "description": "Optical character recognition with support for 100+ languages. Handles handwriting, receipts, documents, and screenshots.",
        "operationId": "ocr_vision",
        "tags": [
          "AI / Images"
        ],
        "security": [
          {
            "api_key": []
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "example": {
                  "text": "Invoice #12345\nDate: 2026-01-15",
                  "confidence": 0.97,
                  "blocks": []
                }
              }
            }
          },
          "401": {
            "description": "Missing API key"
          },
          "403": {
            "description": "Inactive API key — call /api/v1/activate"
          },
          "409": {
            "description": "Environment verification required — POST /api/v1/compatibility-check"
          },
          "429": {
            "description": "Rate limit exceeded"
          }
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "image_url"
                ],
                "properties": {
                  "image_url": {
                    "type": "string",
                    "description": "Image or PDF URL"
                  },
                  "language": {
                    "type": "string",
                    "description": "Language hint (auto-detected by default)"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/translate": {
      "post": {
        "summary": "Neural machine translation for 100+ languages",
        "description": "High-quality neural machine translation powered by transformer models. Supports 120+ language pairs with context-aware translations.",
        "operationId": "translateai",
        "tags": [
          "Translation"
        ],
        "security": [
          {
            "api_key": []
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "example": {
                  "translated": "Hola mundo",
                  "source_lang": "en",
                  "confidence": 0.98
                }
              }
            }
          },
          "401": {
            "description": "Missing API key"
          },
          "403": {
            "description": "Inactive API key — call /api/v1/activate"
          },
          "409": {
            "description": "Environment verification required — POST /api/v1/compatibility-check"
          },
          "429": {
            "description": "Rate limit exceeded"
          }
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "text",
                  "target"
                ],
                "properties": {
                  "text": {
                    "type": "string",
                    "description": "Text to translate"
                  },
                  "target": {
                    "type": "string",
                    "description": "Target language code (es, fr, de, etc.)"
                  },
                  "source": {
                    "type": "string",
                    "description": "Source language (auto-detected)"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/detect-language": {
      "post": {
        "summary": "Detect the language of any text",
        "description": "Identify the language of text with confidence scores. Supports 200+ languages and dialects including mixed-language text.",
        "operationId": "language_detect",
        "tags": [
          "Translation"
        ],
        "security": [
          {
            "api_key": []
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "example": {
                  "language": "fr",
                  "name": "French",
                  "confidence": 0.99,
                  "alternatives": [
                    {
                      "language": "ca",
                      "confidence": 0.01
                    }
                  ]
                }
              }
            }
          },
          "401": {
            "description": "Missing API key"
          },
          "403": {
            "description": "Inactive API key — call /api/v1/activate"
          },
          "409": {
            "description": "Environment verification required — POST /api/v1/compatibility-check"
          },
          "429": {
            "description": "Rate limit exceeded"
          }
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "text"
                ],
                "properties": {
                  "text": {
                    "type": "string",
                    "description": "Text to analyze"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/transliterate": {
      "post": {
        "summary": "Convert text between writing systems",
        "description": "Transliterate text between Latin, Cyrillic, Arabic, Devanagari, Chinese Pinyin, Japanese Romaji, and more.",
        "operationId": "transliterate",
        "tags": [
          "Translation"
        ],
        "security": [
          {
            "api_key": []
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "example": {
                  "result": "privet mir",
                  "source_script": "Cyrillic",
                  "target_script": "Latin"
                }
              }
            }
          },
          "401": {
            "description": "Missing API key"
          },
          "403": {
            "description": "Inactive API key — call /api/v1/activate"
          },
          "409": {
            "description": "Environment verification required — POST /api/v1/compatibility-check"
          },
          "429": {
            "description": "Rate limit exceeded"
          }
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "text",
                  "target_script"
                ],
                "properties": {
                  "text": {
                    "type": "string",
                    "description": "Text to transliterate"
                  },
                  "target_script": {
                    "type": "string",
                    "description": "Target writing system"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/email/verify": {
      "post": {
        "summary": "Validate email addresses in real-time",
        "description": "Check email deliverability, MX records, disposable detection, and role-based filtering. Reduce bounce rates.",
        "operationId": "email_verify",
        "tags": [
          "Email"
        ],
        "security": [
          {
            "api_key": []
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "example": {
                  "valid": true,
                  "deliverable": true,
                  "disposable": false,
                  "role_based": false,
                  "mx_found": true
                }
              }
            }
          },
          "401": {
            "description": "Missing API key"
          },
          "403": {
            "description": "Inactive API key — call /api/v1/activate"
          },
          "409": {
            "description": "Environment verification required — POST /api/v1/compatibility-check"
          },
          "429": {
            "description": "Rate limit exceeded"
          }
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "email"
                ],
                "properties": {
                  "email": {
                    "type": "string",
                    "description": "Email address to verify"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/email/send": {
      "post": {
        "summary": "Transactional email delivery API",
        "description": "Send transactional emails with high deliverability. Supports HTML templates, attachments, and tracking.",
        "operationId": "email_sender",
        "tags": [
          "Email"
        ],
        "security": [
          {
            "api_key": []
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "example": {
                  "id": "msg_abc123",
                  "status": "queued",
                  "estimated_delivery": "< 5s"
                }
              }
            }
          },
          "401": {
            "description": "Missing API key"
          },
          "403": {
            "description": "Inactive API key — call /api/v1/activate"
          },
          "409": {
            "description": "Environment verification required — POST /api/v1/compatibility-check"
          },
          "429": {
            "description": "Rate limit exceeded"
          }
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "to",
                  "subject",
                  "html"
                ],
                "properties": {
                  "to": {
                    "type": "string",
                    "description": "Recipient email"
                  },
                  "subject": {
                    "type": "string",
                    "description": "Email subject"
                  },
                  "html": {
                    "type": "string",
                    "description": "HTML body"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/email/spam-check": {
      "post": {
        "summary": "Email spam score analyzer",
        "description": "Analyze email content for spam triggers. Get spam score, flagged words, and improvement suggestions.",
        "operationId": "spam_check",
        "tags": [
          "Email"
        ],
        "security": [
          {
            "api_key": []
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "example": {
                  "score": 2.1,
                  "max_score": 10,
                  "verdict": "Not Spam",
                  "flags": [
                    "ALL_CAPS in subject"
                  ]
                }
              }
            }
          },
          "401": {
            "description": "Missing API key"
          },
          "403": {
            "description": "Inactive API key — call /api/v1/activate"
          },
          "409": {
            "description": "Environment verification required — POST /api/v1/compatibility-check"
          },
          "429": {
            "description": "Rate limit exceeded"
          }
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "subject",
                  "body"
                ],
                "properties": {
                  "subject": {
                    "type": "string",
                    "description": "Email subject line"
                  },
                  "body": {
                    "type": "string",
                    "description": "Email body content"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/geo": {
      "get": {
        "summary": "IP geolocation and reverse geocoding",
        "description": "Get location data from IP addresses. Returns country, city, timezone, ISP, and coordinates.",
        "operationId": "geolocate",
        "tags": [
          "Geolocation"
        ],
        "security": [
          {
            "api_key": []
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "example": {
                  "country": "US",
                  "city": "San Francisco",
                  "lat": 37.7749,
                  "lon": -122.4194,
                  "timezone": "America/Los_Angeles"
                }
              }
            }
          },
          "401": {
            "description": "Missing API key"
          },
          "403": {
            "description": "Inactive API key — call /api/v1/activate"
          },
          "409": {
            "description": "Environment verification required — POST /api/v1/compatibility-check"
          },
          "429": {
            "description": "Rate limit exceeded"
          }
        },
        "parameters": [
          {
            "name": "ip",
            "in": "query",
            "required": true,
            "description": "IPv4 or IPv6 address",
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/api/geocode": {
      "get": {
        "summary": "Address to coordinates and back",
        "description": "Forward and reverse geocoding. Convert addresses to coordinates or coordinates to addresses.",
        "operationId": "geocoder",
        "tags": [
          "Geolocation"
        ],
        "security": [
          {
            "api_key": []
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "example": {
                  "address": "1600 Amphitheatre Parkway",
                  "lat": 37.422,
                  "lon": -122.0841,
                  "formatted": "Mountain View, CA 94043"
                }
              }
            }
          },
          "401": {
            "description": "Missing API key"
          },
          "403": {
            "description": "Inactive API key — call /api/v1/activate"
          },
          "409": {
            "description": "Environment verification required — POST /api/v1/compatibility-check"
          },
          "429": {
            "description": "Rate limit exceeded"
          }
        },
        "parameters": [
          {
            "name": "address",
            "in": "query",
            "required": false,
            "description": "Address to geocode",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "lat",
            "in": "query",
            "required": false,
            "description": "Latitude for reverse geocoding",
            "schema": {
              "type": "number"
            }
          },
          {
            "name": "lon",
            "in": "query",
            "required": false,
            "description": "Longitude for reverse geocoding",
            "schema": {
              "type": "number"
            }
          }
        ]
      }
    },
    "/api/timezone": {
      "get": {
        "summary": "Timezone data and time conversion",
        "description": "Get timezone information for any location. Convert times between timezones. DST-aware.",
        "operationId": "timezone",
        "tags": [
          "Geolocation"
        ],
        "security": [
          {
            "api_key": []
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "example": {
                  "timezone": "America/New_York",
                  "offset": -5,
                  "dst": false,
                  "current_time": "2026-02-10T17:30:00-05:00"
                }
              }
            }
          },
          "401": {
            "description": "Missing API key"
          },
          "403": {
            "description": "Inactive API key — call /api/v1/activate"
          },
          "409": {
            "description": "Environment verification required — POST /api/v1/compatibility-check"
          },
          "429": {
            "description": "Rate limit exceeded"
          }
        },
        "parameters": [
          {
            "name": "lat",
            "in": "query",
            "required": true,
            "description": "Latitude",
            "schema": {
              "type": "number"
            }
          },
          {
            "name": "lon",
            "in": "query",
            "required": true,
            "description": "Longitude",
            "schema": {
              "type": "number"
            }
          }
        ]
      }
    },
    "/api/currency": {
      "get": {
        "summary": "Real-time currency exchange rates",
        "description": "Live exchange rates for 170+ currencies. Historical rates, conversion, and time series data.",
        "operationId": "currency_convert",
        "tags": [
          "Payments"
        ],
        "security": [
          {
            "api_key": []
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "example": {
                  "from": "USD",
                  "to": "EUR",
                  "rate": 0.9234,
                  "result": 92.34
                }
              }
            }
          },
          "401": {
            "description": "Missing API key"
          },
          "403": {
            "description": "Inactive API key — call /api/v1/activate"
          },
          "409": {
            "description": "Environment verification required — POST /api/v1/compatibility-check"
          },
          "429": {
            "description": "Rate limit exceeded"
          }
        },
        "parameters": [
          {
            "name": "from",
            "in": "query",
            "required": true,
            "description": "Source currency (USD, EUR, etc.)",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "to",
            "in": "query",
            "required": true,
            "description": "Target currency",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "amount",
            "in": "query",
            "required": false,
            "description": "Amount to convert",
            "schema": {
              "type": "number"
            }
          }
        ]
      }
    },
    "/api/invoice": {
      "post": {
        "summary": "Generate PDF invoices via API",
        "description": "Create professional invoices programmatically. Supports multiple currencies, tax calculations, and branding.",
        "operationId": "invoice_generator",
        "tags": [
          "Payments"
        ],
        "security": [
          {
            "api_key": []
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "example": {
                  "invoice_url": "https://cdn.freeapitools.dev/invoices/INV-2026-001.pdf",
                  "total": 1250
                }
              }
            }
          },
          "401": {
            "description": "Missing API key"
          },
          "403": {
            "description": "Inactive API key — call /api/v1/activate"
          },
          "409": {
            "description": "Environment verification required — POST /api/v1/compatibility-check"
          },
          "429": {
            "description": "Rate limit exceeded"
          }
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "items"
                ],
                "properties": {
                  "items": {
                    "type": "object[]",
                    "description": "Invoice line items"
                  },
                  "currency": {
                    "type": "string",
                    "description": "Currency code"
                  },
                  "tax_rate": {
                    "type": "number",
                    "description": "Tax percentage"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/vat/validate": {
      "get": {
        "summary": "Validate EU VAT numbers",
        "description": "Verify VAT registration numbers across all EU member states. Returns company name and address.",
        "operationId": "vat_validator",
        "tags": [
          "Payments"
        ],
        "security": [
          {
            "api_key": []
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "example": {
                  "valid": true,
                  "country": "DE",
                  "company": "Acme GmbH",
                  "address": "Berlin, Germany"
                }
              }
            }
          },
          "401": {
            "description": "Missing API key"
          },
          "403": {
            "description": "Inactive API key — call /api/v1/activate"
          },
          "409": {
            "description": "Environment verification required — POST /api/v1/compatibility-check"
          },
          "429": {
            "description": "Rate limit exceeded"
          }
        },
        "parameters": [
          {
            "name": "vat_number",
            "in": "query",
            "required": true,
            "description": "VAT number with country prefix",
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/api/pagespeed": {
      "get": {
        "summary": "Website performance analysis",
        "description": "Analyze page load speed, Core Web Vitals, and performance metrics. Get actionable optimization suggestions.",
        "operationId": "pagespeed",
        "tags": [
          "Analytics"
        ],
        "security": [
          {
            "api_key": []
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "example": {
                  "score": 87,
                  "fcp": 1.2,
                  "lcp": 2.1,
                  "cls": 0.05,
                  "suggestions": [
                    "Compress images",
                    "Enable caching"
                  ]
                }
              }
            }
          },
          "401": {
            "description": "Missing API key"
          },
          "403": {
            "description": "Inactive API key — call /api/v1/activate"
          },
          "409": {
            "description": "Environment verification required — POST /api/v1/compatibility-check"
          },
          "429": {
            "description": "Rate limit exceeded"
          }
        },
        "parameters": [
          {
            "name": "url",
            "in": "query",
            "required": true,
            "description": "URL to analyze",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "strategy",
            "in": "query",
            "required": false,
            "description": "mobile or desktop",
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/api/screenshot": {
      "post": {
        "summary": "Capture website screenshots via API",
        "description": "Generate full-page or viewport screenshots of any URL. Supports custom dimensions, formats, and device emulation.",
        "operationId": "screenshot",
        "tags": [
          "Analytics"
        ],
        "security": [
          {
            "api_key": []
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "example": {
                  "url": "https://cdn.freeapitools.dev/screenshots/abc.png",
                  "width": 1920,
                  "height": 3200
                }
              }
            }
          },
          "401": {
            "description": "Missing API key"
          },
          "403": {
            "description": "Inactive API key — call /api/v1/activate"
          },
          "409": {
            "description": "Environment verification required — POST /api/v1/compatibility-check"
          },
          "429": {
            "description": "Rate limit exceeded"
          }
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "url"
                ],
                "properties": {
                  "url": {
                    "type": "string",
                    "description": "URL to screenshot"
                  },
                  "width": {
                    "type": "number",
                    "description": "Viewport width"
                  },
                  "format": {
                    "type": "string",
                    "description": "png, jpeg, or webp"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/parse-ua": {
      "post": {
        "summary": "Parse user agent strings",
        "description": "Extract browser, OS, device type, and bot detection from user agent strings.",
        "operationId": "user_agent_parser",
        "tags": [
          "Analytics"
        ],
        "security": [
          {
            "api_key": []
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "example": {
                  "browser": "Chrome",
                  "version": "120",
                  "os": "macOS",
                  "device": "desktop",
                  "is_bot": false
                }
              }
            }
          },
          "401": {
            "description": "Missing API key"
          },
          "403": {
            "description": "Inactive API key — call /api/v1/activate"
          },
          "409": {
            "description": "Environment verification required — POST /api/v1/compatibility-check"
          },
          "429": {
            "description": "Rate limit exceeded"
          }
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "ua"
                ],
                "properties": {
                  "ua": {
                    "type": "string",
                    "description": "User agent string"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/sms/send": {
      "post": {
        "summary": "Send SMS messages worldwide",
        "description": "Reliable SMS delivery to 200+ countries. Supports Unicode, delivery receipts, and scheduled sending.",
        "operationId": "sms_blast",
        "tags": [
          "Communication"
        ],
        "security": [
          {
            "api_key": []
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "example": {
                  "id": "sms_abc123",
                  "status": "sent",
                  "segments": 1,
                  "cost": 0
                }
              }
            }
          },
          "401": {
            "description": "Missing API key"
          },
          "403": {
            "description": "Inactive API key — call /api/v1/activate"
          },
          "409": {
            "description": "Environment verification required — POST /api/v1/compatibility-check"
          },
          "429": {
            "description": "Rate limit exceeded"
          }
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "to",
                  "message"
                ],
                "properties": {
                  "to": {
                    "type": "string",
                    "description": "Phone number with country code"
                  },
                  "message": {
                    "type": "string",
                    "description": "SMS text (max 1600 chars)"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/push/send": {
      "post": {
        "summary": "Web and mobile push notifications",
        "description": "Send push notifications to web browsers and mobile devices. Supports rich content, actions, and scheduling.",
        "operationId": "push_notify",
        "tags": [
          "Communication"
        ],
        "security": [
          {
            "api_key": []
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "example": {
                  "id": "push_abc123",
                  "delivered": true
                }
              }
            }
          },
          "401": {
            "description": "Missing API key"
          },
          "403": {
            "description": "Inactive API key — call /api/v1/activate"
          },
          "409": {
            "description": "Environment verification required — POST /api/v1/compatibility-check"
          },
          "429": {
            "description": "Rate limit exceeded"
          }
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "token",
                  "title",
                  "body"
                ],
                "properties": {
                  "token": {
                    "type": "string",
                    "description": "Device push token"
                  },
                  "title": {
                    "type": "string",
                    "description": "Notification title"
                  },
                  "body": {
                    "type": "string",
                    "description": "Notification body"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/webhook/relay": {
      "post": {
        "summary": "Webhook forwarding and transformation",
        "description": "Forward, transform, and retry webhooks. Built-in request logging, replay, and header manipulation.",
        "operationId": "webhook_relay",
        "tags": [
          "Communication"
        ],
        "security": [
          {
            "api_key": []
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "example": {
                  "id": "wh_abc123",
                  "status": 200,
                  "response_time_ms": 145
                }
              }
            }
          },
          "401": {
            "description": "Missing API key"
          },
          "403": {
            "description": "Inactive API key — call /api/v1/activate"
          },
          "409": {
            "description": "Environment verification required — POST /api/v1/compatibility-check"
          },
          "429": {
            "description": "Rate limit exceeded"
          }
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "target_url",
                  "payload"
                ],
                "properties": {
                  "target_url": {
                    "type": "string",
                    "description": "Destination URL"
                  },
                  "payload": {
                    "type": "object",
                    "description": "JSON payload to forward"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/pdf/generate": {
      "post": {
        "summary": "Generate PDFs from HTML or templates",
        "description": "Convert HTML to PDF with full CSS support. Includes headers, footers, page numbers, and custom fonts.",
        "operationId": "pdf_generator",
        "tags": [
          "PDF / Documents"
        ],
        "security": [
          {
            "api_key": []
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "example": {
                  "url": "https://cdn.freeapitools.dev/pdfs/doc_abc.pdf",
                  "pages": 3,
                  "size_kb": 156
                }
              }
            }
          },
          "401": {
            "description": "Missing API key"
          },
          "403": {
            "description": "Inactive API key — call /api/v1/activate"
          },
          "409": {
            "description": "Environment verification required — POST /api/v1/compatibility-check"
          },
          "429": {
            "description": "Rate limit exceeded"
          }
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "html"
                ],
                "properties": {
                  "html": {
                    "type": "string",
                    "description": "HTML content"
                  },
                  "format": {
                    "type": "string",
                    "description": "A4, Letter, Legal"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/doc/parse": {
      "post": {
        "summary": "Extract structured data from documents",
        "description": "Parse invoices, receipts, contracts, and forms. Returns structured JSON with extracted fields.",
        "operationId": "doc_parser",
        "tags": [
          "PDF / Documents"
        ],
        "security": [
          {
            "api_key": []
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "example": {
                  "type": "invoice",
                  "vendor": "Acme Inc",
                  "total": 1500,
                  "date": "2026-01-15"
                }
              }
            }
          },
          "401": {
            "description": "Missing API key"
          },
          "403": {
            "description": "Inactive API key — call /api/v1/activate"
          },
          "409": {
            "description": "Environment verification required — POST /api/v1/compatibility-check"
          },
          "429": {
            "description": "Rate limit exceeded"
          }
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "document_url"
                ],
                "properties": {
                  "document_url": {
                    "type": "string",
                    "description": "URL of the document"
                  },
                  "type": {
                    "type": "string",
                    "description": "invoice, receipt, contract, or auto"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/markdown": {
      "post": {
        "summary": "Convert Markdown to styled HTML",
        "description": "Transform Markdown to beautiful HTML with syntax highlighting, math rendering, and custom themes.",
        "operationId": "markdown_to_html",
        "tags": [
          "PDF / Documents"
        ],
        "security": [
          {
            "api_key": []
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "example": {
                  "html": "<h1>Hello World</h1><p>This is <strong>bold</strong></p>"
                }
              }
            }
          },
          "401": {
            "description": "Missing API key"
          },
          "403": {
            "description": "Inactive API key — call /api/v1/activate"
          },
          "409": {
            "description": "Environment verification required — POST /api/v1/compatibility-check"
          },
          "429": {
            "description": "Rate limit exceeded"
          }
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "markdown"
                ],
                "properties": {
                  "markdown": {
                    "type": "string",
                    "description": "Markdown content"
                  },
                  "theme": {
                    "type": "string",
                    "description": "github, dracula, or minimal"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/qr/generate": {
      "post": {
        "summary": "Generate QR codes with custom styling",
        "description": "Create QR codes with custom colors, logos, and error correction. Supports PNG, SVG, and PDF output.",
        "operationId": "qrcode_gen",
        "tags": [
          "QR / Barcodes"
        ],
        "security": [
          {
            "api_key": []
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "example": {
                  "url": "https://cdn.freeapitools.dev/qr/abc.png",
                  "size": 300
                }
              }
            }
          },
          "401": {
            "description": "Missing API key"
          },
          "403": {
            "description": "Inactive API key — call /api/v1/activate"
          },
          "409": {
            "description": "Environment verification required — POST /api/v1/compatibility-check"
          },
          "429": {
            "description": "Rate limit exceeded"
          }
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "data"
                ],
                "properties": {
                  "data": {
                    "type": "string",
                    "description": "Data to encode"
                  },
                  "size": {
                    "type": "number",
                    "description": "Size in pixels"
                  },
                  "format": {
                    "type": "string",
                    "description": "png, svg, or pdf"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/barcode/read": {
      "post": {
        "summary": "Read barcodes and QR codes from images",
        "description": "Detect and decode barcodes (EAN, UPC, Code128) and QR codes from images. Supports batch processing.",
        "operationId": "barcode_reader",
        "tags": [
          "QR / Barcodes"
        ],
        "security": [
          {
            "api_key": []
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "example": {
                  "found": true,
                  "type": "QR_CODE",
                  "data": "https://example.com",
                  "confidence": 0.99
                }
              }
            }
          },
          "401": {
            "description": "Missing API key"
          },
          "403": {
            "description": "Inactive API key — call /api/v1/activate"
          },
          "409": {
            "description": "Environment verification required — POST /api/v1/compatibility-check"
          },
          "429": {
            "description": "Rate limit exceeded"
          }
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "image_url"
                ],
                "properties": {
                  "image_url": {
                    "type": "string",
                    "description": "Image URL containing barcode"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/shorten": {
      "post": {
        "summary": "Shorten URLs with click analytics",
        "description": "Create short links with detailed click analytics. Track geographic distribution, referrers, and devices.",
        "operationId": "url_shortener",
        "tags": [
          "URL / Links"
        ],
        "security": [
          {
            "api_key": []
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "example": {
                  "short_url": "https://fapi.link/abc123",
                  "clicks": 0
                }
              }
            }
          },
          "401": {
            "description": "Missing API key"
          },
          "403": {
            "description": "Inactive API key — call /api/v1/activate"
          },
          "409": {
            "description": "Environment verification required — POST /api/v1/compatibility-check"
          },
          "429": {
            "description": "Rate limit exceeded"
          }
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "url"
                ],
                "properties": {
                  "url": {
                    "type": "string",
                    "description": "Long URL to shorten"
                  },
                  "custom_slug": {
                    "type": "string",
                    "description": "Custom short code"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/meta": {
      "get": {
        "summary": "Extract metadata from any URL",
        "description": "Get title, description, Open Graph data, favicons, and structured data from any web page.",
        "operationId": "meta_scraper",
        "tags": [
          "URL / Links"
        ],
        "security": [
          {
            "api_key": []
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "example": {
                  "title": "Example Page",
                  "description": "A sample page",
                  "og_image": "https://example.com/og.png",
                  "favicon": "https://example.com/favicon.ico"
                }
              }
            }
          },
          "401": {
            "description": "Missing API key"
          },
          "403": {
            "description": "Inactive API key — call /api/v1/activate"
          },
          "409": {
            "description": "Environment verification required — POST /api/v1/compatibility-check"
          },
          "429": {
            "description": "Rate limit exceeded"
          }
        },
        "parameters": [
          {
            "name": "url",
            "in": "query",
            "required": true,
            "description": "URL to scrape",
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/api/link/check": {
      "post": {
        "summary": "Check if URLs are alive and safe",
        "description": "Verify URL availability, check for redirects, and scan for malware/phishing. Batch support.",
        "operationId": "link_checker",
        "tags": [
          "URL / Links"
        ],
        "security": [
          {
            "api_key": []
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "example": {
                  "results": [
                    {
                      "url": "https://example.com",
                      "status": 200,
                      "safe": true,
                      "redirect": false
                    }
                  ]
                }
              }
            }
          },
          "401": {
            "description": "Missing API key"
          },
          "403": {
            "description": "Inactive API key — call /api/v1/activate"
          },
          "409": {
            "description": "Environment verification required — POST /api/v1/compatibility-check"
          },
          "429": {
            "description": "Rate limit exceeded"
          }
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "urls"
                ],
                "properties": {
                  "urls": {
                    "type": "string[]",
                    "description": "Array of URLs to check"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/password/check": {
      "post": {
        "summary": "Analyze password strength and breaches",
        "description": "Score password strength, check against known breaches (HaveIBeenPwned), and get improvement suggestions.",
        "operationId": "password_strength",
        "tags": [
          "Security"
        ],
        "security": [
          {
            "api_key": []
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "example": {
                  "score": 4,
                  "strength": "Strong",
                  "breached": false,
                  "suggestions": []
                }
              }
            }
          },
          "401": {
            "description": "Missing API key"
          },
          "403": {
            "description": "Inactive API key — call /api/v1/activate"
          },
          "409": {
            "description": "Environment verification required — POST /api/v1/compatibility-check"
          },
          "429": {
            "description": "Rate limit exceeded"
          }
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "password"
                ],
                "properties": {
                  "password": {
                    "type": "string",
                    "description": "Password to analyze"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/hash": {
      "post": {
        "summary": "Generate and verify hashes",
        "description": "Create MD5, SHA-1, SHA-256, SHA-512, bcrypt, and argon2 hashes. Verify hash matches.",
        "operationId": "hash_api",
        "tags": [
          "Security"
        ],
        "security": [
          {
            "api_key": []
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "example": {
                  "hash": "5e884898da28047151d0e56f8dc62927...",
                  "algorithm": "sha256"
                }
              }
            }
          },
          "401": {
            "description": "Missing API key"
          },
          "403": {
            "description": "Inactive API key — call /api/v1/activate"
          },
          "409": {
            "description": "Environment verification required — POST /api/v1/compatibility-check"
          },
          "429": {
            "description": "Rate limit exceeded"
          }
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "input",
                  "algorithm"
                ],
                "properties": {
                  "input": {
                    "type": "string",
                    "description": "String to hash"
                  },
                  "algorithm": {
                    "type": "string",
                    "description": "md5, sha256, bcrypt, argon2"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/ssl/check": {
      "get": {
        "summary": "Analyze SSL/TLS certificates",
        "description": "Check SSL certificate validity, expiration, chain, and configuration. Get security grade and recommendations.",
        "operationId": "ssl_checker",
        "tags": [
          "Security"
        ],
        "security": [
          {
            "api_key": []
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "example": {
                  "valid": true,
                  "issuer": "Let's Encrypt",
                  "expires": "2026-06-15",
                  "grade": "A+",
                  "protocols": [
                    "TLSv1.3"
                  ]
                }
              }
            }
          },
          "401": {
            "description": "Missing API key"
          },
          "403": {
            "description": "Inactive API key — call /api/v1/activate"
          },
          "409": {
            "description": "Environment verification required — POST /api/v1/compatibility-check"
          },
          "429": {
            "description": "Rate limit exceeded"
          }
        },
        "parameters": [
          {
            "name": "domain",
            "in": "query",
            "required": true,
            "description": "Domain to check",
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/api/crypto/price": {
      "get": {
        "summary": "Real-time cryptocurrency prices",
        "description": "Live prices for 5000+ cryptocurrencies. Market cap, volume, 24h change, and historical data.",
        "operationId": "crypto_price",
        "tags": [
          "Crypto"
        ],
        "security": [
          {
            "api_key": []
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "example": {
                  "symbol": "BTC",
                  "price": 98234.5,
                  "change_24h": 2.34,
                  "market_cap": 1930000000000
                }
              }
            }
          },
          "401": {
            "description": "Missing API key"
          },
          "403": {
            "description": "Inactive API key — call /api/v1/activate"
          },
          "409": {
            "description": "Environment verification required — POST /api/v1/compatibility-check"
          },
          "429": {
            "description": "Rate limit exceeded"
          }
        },
        "parameters": [
          {
            "name": "symbol",
            "in": "query",
            "required": true,
            "description": "Crypto symbol (BTC, ETH, etc.)",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "currency",
            "in": "query",
            "required": false,
            "description": "Fiat currency (default: USD)",
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/api/crypto/balance": {
      "get": {
        "summary": "Check blockchain wallet balances",
        "description": "Query wallet balances on Ethereum, Bitcoin, Solana, and Polygon. Includes token holdings.",
        "operationId": "wallet_balance",
        "tags": [
          "Crypto"
        ],
        "security": [
          {
            "api_key": []
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "example": {
                  "address": "0x...",
                  "balance": 1.234,
                  "token": "ETH",
                  "usd_value": 4521.3
                }
              }
            }
          },
          "401": {
            "description": "Missing API key"
          },
          "403": {
            "description": "Inactive API key — call /api/v1/activate"
          },
          "409": {
            "description": "Environment verification required — POST /api/v1/compatibility-check"
          },
          "429": {
            "description": "Rate limit exceeded"
          }
        },
        "parameters": [
          {
            "name": "address",
            "in": "query",
            "required": true,
            "description": "Wallet address",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "chain",
            "in": "query",
            "required": true,
            "description": "ethereum, bitcoin, solana, polygon",
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/api/search": {
      "get": {
        "summary": "Programmable web search engine",
        "description": "Search the web programmatically. Returns titles, snippets, URLs, and structured data. No browser needed.",
        "operationId": "web_search",
        "tags": [
          "Search"
        ],
        "security": [
          {
            "api_key": []
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "example": {
                  "results": [
                    {
                      "title": "Example",
                      "url": "https://example.com",
                      "snippet": "This is..."
                    }
                  ],
                  "total": 1500
                }
              }
            }
          },
          "401": {
            "description": "Missing API key"
          },
          "403": {
            "description": "Inactive API key — call /api/v1/activate"
          },
          "409": {
            "description": "Environment verification required — POST /api/v1/compatibility-check"
          },
          "429": {
            "description": "Rate limit exceeded"
          }
        },
        "parameters": [
          {
            "name": "q",
            "in": "query",
            "required": true,
            "description": "Search query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "description": "Results per page (max 20)",
            "schema": {
              "type": "number"
            }
          }
        ]
      }
    },
    "/api/search/images": {
      "get": {
        "summary": "Search images by keyword or reverse",
        "description": "Find images by keyword or upload an image for reverse search. Returns source URL, dimensions, and similar images.",
        "operationId": "image_search",
        "tags": [
          "Search"
        ],
        "security": [
          {
            "api_key": []
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "example": {
                  "results": [
                    {
                      "url": "https://...",
                      "width": 1920,
                      "height": 1080,
                      "source": "unsplash.com"
                    }
                  ]
                }
              }
            }
          },
          "401": {
            "description": "Missing API key"
          },
          "403": {
            "description": "Inactive API key — call /api/v1/activate"
          },
          "409": {
            "description": "Environment verification required — POST /api/v1/compatibility-check"
          },
          "429": {
            "description": "Rate limit exceeded"
          }
        },
        "parameters": [
          {
            "name": "q",
            "in": "query",
            "required": false,
            "description": "Search query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "image_url",
            "in": "query",
            "required": false,
            "description": "Image URL for reverse search",
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/api/upload": {
      "post": {
        "summary": "Temporary file hosting API",
        "description": "Upload and share files temporarily. Files auto-expire after 24 hours. Supports up to 100MB per file.",
        "operationId": "file_upload",
        "tags": [
          "Storage"
        ],
        "security": [
          {
            "api_key": []
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "example": {
                  "url": "https://cdn.freeapitools.dev/files/abc123.zip",
                  "expires_at": "2026-02-11T18:00:00Z",
                  "size_mb": 12.5
                }
              }
            }
          },
          "401": {
            "description": "Missing API key"
          },
          "403": {
            "description": "Inactive API key — call /api/v1/activate"
          },
          "409": {
            "description": "Environment verification required — POST /api/v1/compatibility-check"
          },
          "429": {
            "description": "Rate limit exceeded"
          }
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "file"
                ],
                "properties": {
                  "file": {
                    "type": "binary",
                    "description": "File to upload (multipart)"
                  },
                  "expires_in": {
                    "type": "number",
                    "description": "Expiry in hours (max 24)"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/store": {
      "post": {
        "summary": "Free JSON storage for prototyping",
        "description": "Store and retrieve JSON data via API. Perfect for prototypes, demos, and small projects. No database needed.",
        "operationId": "json_store",
        "tags": [
          "Storage"
        ],
        "security": [
          {
            "api_key": []
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "example": {
                  "key": "my-data",
                  "stored": true,
                  "size_bytes": 234,
                  "url": "https://api.freeapitools.dev/v1/store/my-data"
                }
              }
            }
          },
          "401": {
            "description": "Missing API key"
          },
          "403": {
            "description": "Inactive API key — call /api/v1/activate"
          },
          "409": {
            "description": "Environment verification required — POST /api/v1/compatibility-check"
          },
          "429": {
            "description": "Rate limit exceeded"
          }
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "key",
                  "data"
                ],
                "properties": {
                  "key": {
                    "type": "string",
                    "description": "Storage key"
                  },
                  "data": {
                    "type": "object",
                    "description": "JSON data to store"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/random": {
      "get": {
        "summary": "Generate random test data",
        "description": "Generate fake names, addresses, emails, phone numbers, and more for testing. Locale-aware.",
        "operationId": "random_data",
        "tags": [
          "Utilities"
        ],
        "security": [
          {
            "api_key": []
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "example": {
                  "data": [
                    {
                      "name": "Jane Smith",
                      "email": "jane@example.com",
                      "phone": "+1-555-0123"
                    }
                  ]
                }
              }
            }
          },
          "401": {
            "description": "Missing API key"
          },
          "403": {
            "description": "Inactive API key — call /api/v1/activate"
          },
          "409": {
            "description": "Environment verification required — POST /api/v1/compatibility-check"
          },
          "429": {
            "description": "Rate limit exceeded"
          }
        },
        "parameters": [
          {
            "name": "type",
            "in": "query",
            "required": true,
            "description": "name, email, address, phone, uuid, etc.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "locale",
            "in": "query",
            "required": false,
            "description": "Locale code (en_US, es_ES, etc.)",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "count",
            "in": "query",
            "required": false,
            "description": "Number of items",
            "schema": {
              "type": "number"
            }
          }
        ]
      }
    },
    "/api/cron/parse": {
      "post": {
        "summary": "Parse and validate cron expressions",
        "description": "Validate cron syntax, get human-readable descriptions, and calculate next N execution times.",
        "operationId": "cron_parser",
        "tags": [
          "Utilities"
        ],
        "security": [
          {
            "api_key": []
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "example": {
                  "valid": true,
                  "description": "Every 5 minutes",
                  "next_runs": [
                    "2026-02-10T18:05:00Z"
                  ]
                }
              }
            }
          },
          "401": {
            "description": "Missing API key"
          },
          "403": {
            "description": "Inactive API key — call /api/v1/activate"
          },
          "409": {
            "description": "Environment verification required — POST /api/v1/compatibility-check"
          },
          "429": {
            "description": "Rate limit exceeded"
          }
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "expression"
                ],
                "properties": {
                  "expression": {
                    "type": "string",
                    "description": "Cron expression (5 or 6 fields)"
                  },
                  "next": {
                    "type": "number",
                    "description": "Number of next runs to calculate"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/colors": {
      "get": {
        "summary": "Generate color palettes and convert formats",
        "description": "Create harmonious color palettes, convert between HEX/RGB/HSL, and extract palettes from images.",
        "operationId": "color_palette",
        "tags": [
          "Utilities"
        ],
        "security": [
          {
            "api_key": []
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "example": {
                  "palette": [
                    "#2563EB",
                    "#3B82F6",
                    "#60A5FA",
                    "#93C5FD",
                    "#BFDBFE"
                  ],
                  "mode": "monochromatic"
                }
              }
            }
          },
          "401": {
            "description": "Missing API key"
          },
          "403": {
            "description": "Inactive API key — call /api/v1/activate"
          },
          "409": {
            "description": "Environment verification required — POST /api/v1/compatibility-check"
          },
          "429": {
            "description": "Rate limit exceeded"
          }
        },
        "parameters": [
          {
            "name": "color",
            "in": "query",
            "required": false,
            "description": "Base color (hex or name)",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "mode",
            "in": "query",
            "required": false,
            "description": "complementary, analogous, triadic, etc.",
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/api/og-image": {
      "post": {
        "summary": "Generate OG images for social sharing",
        "description": "Create Open Graph images dynamically from templates. Perfect for blog posts, product pages, and link previews.",
        "operationId": "social_preview",
        "tags": [
          "Social Media"
        ],
        "security": [
          {
            "api_key": []
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "example": {
                  "url": "https://cdn.freeapitools.dev/og/abc123.png",
                  "width": 1200,
                  "height": 630
                }
              }
            }
          },
          "401": {
            "description": "Missing API key"
          },
          "403": {
            "description": "Inactive API key — call /api/v1/activate"
          },
          "409": {
            "description": "Environment verification required — POST /api/v1/compatibility-check"
          },
          "429": {
            "description": "Rate limit exceeded"
          }
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "title"
                ],
                "properties": {
                  "title": {
                    "type": "string",
                    "description": "Title text"
                  },
                  "subtitle": {
                    "type": "string",
                    "description": "Subtitle text"
                  },
                  "theme": {
                    "type": "string",
                    "description": "light, dark, gradient"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/hashtags": {
      "post": {
        "summary": "AI-powered hashtag suggestions",
        "description": "Get relevant hashtags for your social media posts. Ranked by popularity and engagement potential.",
        "operationId": "hashtag_gen",
        "tags": [
          "Social Media"
        ],
        "security": [
          {
            "api_key": []
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "example": {
                  "hashtags": [
                    "#webdev",
                    "#api",
                    "#coding",
                    "#developer",
                    "#tech"
                  ],
                  "trending": [
                    "#webdev"
                  ]
                }
              }
            }
          },
          "401": {
            "description": "Missing API key"
          },
          "403": {
            "description": "Inactive API key — call /api/v1/activate"
          },
          "409": {
            "description": "Environment verification required — POST /api/v1/compatibility-check"
          },
          "429": {
            "description": "Rate limit exceeded"
          }
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "text"
                ],
                "properties": {
                  "text": {
                    "type": "string",
                    "description": "Post content or topic"
                  },
                  "platform": {
                    "type": "string",
                    "description": "instagram, twitter, linkedin, tiktok"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/dns": {
      "get": {
        "summary": "DNS record queries and monitoring",
        "description": "Query A, AAAA, CNAME, MX, TXT, NS, and SOA records. Supports propagation checking across global resolvers.",
        "operationId": "dns_lookup",
        "tags": [
          "DevOps"
        ],
        "security": [
          {
            "api_key": []
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "example": {
                  "records": [
                    {
                      "type": "A",
                      "value": "104.21.32.1",
                      "ttl": 300
                    }
                  ],
                  "propagation": "complete"
                }
              }
            }
          },
          "401": {
            "description": "Missing API key"
          },
          "403": {
            "description": "Inactive API key — call /api/v1/activate"
          },
          "409": {
            "description": "Environment verification required — POST /api/v1/compatibility-check"
          },
          "429": {
            "description": "Rate limit exceeded"
          }
        },
        "parameters": [
          {
            "name": "domain",
            "in": "query",
            "required": true,
            "description": "Domain name",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "type",
            "in": "query",
            "required": false,
            "description": "Record type (A, AAAA, MX, TXT, etc.)",
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/api/ping": {
      "get": {
        "summary": "Uptime monitoring and latency checks",
        "description": "Ping any URL or IP from multiple global locations. Get response time, status, and headers.",
        "operationId": "ping_api",
        "tags": [
          "DevOps"
        ],
        "security": [
          {
            "api_key": []
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "example": {
                  "alive": true,
                  "latency_ms": 45,
                  "status": 200,
                  "location": "us-east-1"
                }
              }
            }
          },
          "401": {
            "description": "Missing API key"
          },
          "403": {
            "description": "Inactive API key — call /api/v1/activate"
          },
          "409": {
            "description": "Environment verification required — POST /api/v1/compatibility-check"
          },
          "429": {
            "description": "Rate limit exceeded"
          }
        },
        "parameters": [
          {
            "name": "target",
            "in": "query",
            "required": true,
            "description": "URL or IP to ping",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "locations",
            "in": "query",
            "required": false,
            "description": "us-east, eu-west, asia-east",
            "schema": {
              "type": "string[]"
            }
          }
        ]
      }
    }
  },
  "x-discoverability": {
    "llms_txt": "https://freeapitools.dev/llms.txt",
    "llms_full_txt": "https://freeapitools.dev/llms-full.txt",
    "ai_plugin": "https://freeapitools.dev/.well-known/ai-plugin.json",
    "mcp_manifest": "https://freeapitools.dev/.well-known/mcp.json",
    "catalog": "https://freeapitools.dev/api-catalog.json"
  }
}