{
  "openapi": "3.1.0",
  "info": {
    "title": "Faceless YT Reality Check API",
    "version": "1.0.0",
    "description": "A short quiz that pushes back on viral Claude Code + YouTube income claims.\n\nFree, no API key, CORS open. Fair use: about 120 requests per minute per IP. Also available as MCP tools at https://free-agent-tools.vercel.app/mcp"
  },
  "servers": [
    {
      "url": "https://faceless-yt-risk-check.vercel.app"
    }
  ],
  "paths": {
    "/api/score": {
      "get": {
        "operationId": "facelessYoutubeRealityCheck",
        "summary": "Reality-check a faceless / AI YouTube channel plan for expectation and monetization-policy risk (HIGH / MED / LOW)",
        "description": "Seven multiple-choice answers about visuals, voice, scripts, revenue timing, earnings estimates, timeline, and niche. Returns a HIGH / MED / LOW risk level, the signals that drove it, myths to drop, and a plain-text summary. Pushes back on viral 'Claude Code + YouTube = $10k/month' claims. Not a ban prediction.\n\nExample: https://faceless-yt-risk-check.vercel.app/api/score?visual=ai_slideshow&voiceover=ai_voice&scripts=identical_template&revenueTiming=before_ypp&estimates=as_income&timeline=ten_k_fast&niche=broad_storytime",
        "parameters": [
          {
            "name": "visual",
            "in": "query",
            "required": true,
            "description": "Main visual style: AI image slideshow, mass stock footage, original filmed, or mixed.",
            "schema": {
              "type": "string",
              "description": "Main visual style: AI image slideshow, mass stock footage, original filmed, or mixed.",
              "enum": [
                "ai_slideshow",
                "stock_mass",
                "original_filmed",
                "mixed"
              ]
            }
          },
          {
            "name": "voiceover",
            "in": "query",
            "required": true,
            "description": "Main voiceover: AI voice, human voiceover, or text only.",
            "schema": {
              "type": "string",
              "description": "Main voiceover: AI voice, human voiceover, or text only.",
              "enum": [
                "ai_voice",
                "human_vo",
                "text_only"
              ]
            }
          },
          {
            "name": "scripts",
            "in": "query",
            "required": true,
            "description": "Scripts: identical template each video, researched original, or recycled trend scripts.",
            "schema": {
              "type": "string",
              "description": "Scripts: identical template each video, researched original, or recycled trend scripts.",
              "enum": [
                "identical_template",
                "researched_original",
                "trend_recycled"
              ]
            }
          },
          {
            "name": "revenueTiming",
            "in": "query",
            "required": true,
            "description": "When the creator expects money: before YouTube Partner Program, after YPP, or not counting yet.",
            "schema": {
              "type": "string",
              "description": "When the creator expects money: before YouTube Partner Program, after YPP, or not counting yet.",
              "enum": [
                "before_ypp",
                "after_ypp",
                "not_counting"
              ]
            }
          },
          {
            "name": "estimates",
            "in": "query",
            "required": true,
            "description": "How VidIQ/SocialBlade-style earnings estimates are treated: as income, as guesses, or unused.",
            "schema": {
              "type": "string",
              "description": "How VidIQ/SocialBlade-style earnings estimates are treated: as income, as guesses, or unused.",
              "enum": [
                "as_income",
                "as_guesses",
                "unused"
              ]
            }
          },
          {
            "name": "timeline",
            "in": "query",
            "required": true,
            "description": "Expected timeline: $10k+/month in 1-2 months, multi-month craft, or unsure.",
            "schema": {
              "type": "string",
              "description": "Expected timeline: $10k+/month in 1-2 months, multi-month craft, or unsure.",
              "enum": [
                "ten_k_fast",
                "multi_month",
                "unsure"
              ]
            }
          },
          {
            "name": "niche",
            "in": "query",
            "required": true,
            "description": "Niche: broad storytime, researched angle, or mixed.",
            "schema": {
              "type": "string",
              "description": "Niche: broad storytime, researched angle, or mixed.",
              "enum": [
                "broad_storytime",
                "researched_angle",
                "mixed"
              ]
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Result as JSON. Always includes a `disclaimer` field.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true
                }
              }
            }
          },
          "400": {
            "description": "Missing or invalid input. The body explains what to send and gives an example."
          },
          "429": {
            "description": "Too many requests from one IP. Retry after the Retry-After seconds."
          }
        }
      },
      "post": {
        "operationId": "facelessYoutubeRealityCheckPost",
        "summary": "Reality-check a faceless / AI YouTube channel plan for expectation and monetization-policy risk (HIGH / MED / LOW) (JSON body)",
        "description": "Seven multiple-choice answers about visuals, voice, scripts, revenue timing, earnings estimates, timeline, and niche. Returns a HIGH / MED / LOW risk level, the signals that drove it, myths to drop, and a plain-text summary. Pushes back on viral 'Claude Code + YouTube = $10k/month' claims. Not a ban prediction.",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "visual",
                  "voiceover",
                  "scripts",
                  "revenueTiming",
                  "estimates",
                  "timeline",
                  "niche"
                ],
                "properties": {
                  "visual": {
                    "type": "string",
                    "description": "Main visual style: AI image slideshow, mass stock footage, original filmed, or mixed.",
                    "enum": [
                      "ai_slideshow",
                      "stock_mass",
                      "original_filmed",
                      "mixed"
                    ]
                  },
                  "voiceover": {
                    "type": "string",
                    "description": "Main voiceover: AI voice, human voiceover, or text only.",
                    "enum": [
                      "ai_voice",
                      "human_vo",
                      "text_only"
                    ]
                  },
                  "scripts": {
                    "type": "string",
                    "description": "Scripts: identical template each video, researched original, or recycled trend scripts.",
                    "enum": [
                      "identical_template",
                      "researched_original",
                      "trend_recycled"
                    ]
                  },
                  "revenueTiming": {
                    "type": "string",
                    "description": "When the creator expects money: before YouTube Partner Program, after YPP, or not counting yet.",
                    "enum": [
                      "before_ypp",
                      "after_ypp",
                      "not_counting"
                    ]
                  },
                  "estimates": {
                    "type": "string",
                    "description": "How VidIQ/SocialBlade-style earnings estimates are treated: as income, as guesses, or unused.",
                    "enum": [
                      "as_income",
                      "as_guesses",
                      "unused"
                    ]
                  },
                  "timeline": {
                    "type": "string",
                    "description": "Expected timeline: $10k+/month in 1-2 months, multi-month craft, or unsure.",
                    "enum": [
                      "ten_k_fast",
                      "multi_month",
                      "unsure"
                    ]
                  },
                  "niche": {
                    "type": "string",
                    "description": "Niche: broad storytime, researched angle, or mixed.",
                    "enum": [
                      "broad_storytime",
                      "researched_angle",
                      "mixed"
                    ]
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Result as JSON. Always includes a `disclaimer` field.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": true
                }
              }
            }
          },
          "400": {
            "description": "Missing or invalid input. The body explains what to send and gives an example."
          },
          "429": {
            "description": "Too many requests from one IP. Retry after the Retry-After seconds."
          }
        }
      }
    }
  }
}