{
  "openapi": "3.0.1",
  "info": {
    "title": "📰 AI News Brief | Multi-Source Research Agent",
    "description": "Plain English question in → cited intelligence brief out. Pulls Google News, RSS, Reddit, and Twitter. Routes tier-1 publishers to bypass paywalls. Claude analyses each article, flags anomalies, and corroborates across sources. Wikipedia grounds entities.  Built for analysts and policy teams.",
    "version": "0.3",
    "x-build-id": "AVRKjrA3kKBKLNfOi"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/kay_abraham~news-intelligence-agent/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-kay_abraham-news-intelligence-agent",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/acts/kay_abraham~news-intelligence-agent/runs": {
      "post": {
        "operationId": "runs-sync-kay_abraham-news-intelligence-agent",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor and returns information about the initiated run in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/runsResponseSchema"
                }
              }
            }
          }
        }
      }
    },
    "/acts/kay_abraham~news-intelligence-agent/run-sync": {
      "post": {
        "operationId": "run-sync-kay_abraham-news-intelligence-agent",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "inputSchema": {
        "type": "object",
        "required": [
          "userQuery",
          "claudeApiKey",
          "apifyToken"
        ],
        "properties": {
          "userQuery": {
            "title": "Your question",
            "type": "string",
            "description": "Ask in plain English. Example: What is the new virus outbreak doing to global supply chains? Focus on shipping, manufacturing, and oil prices."
          },
          "claudeApiKey": {
            "title": "Anthropic Claude API key",
            "type": "string",
            "description": "Your Anthropic API key (starts with sk-ant-). Get one at console.anthropic.com. Apify never stores it and never charges you for tokens. You pay Anthropic directly."
          },
          "apifyToken": {
            "title": "Apify API token (required)",
            "type": "string",
            "description": "Paste your personal Apify API token here (Apify Console -> Settings -> Integrations -> Personal API tokens). The agent uses it to call its child scraper Actors (rag-web-browser, article-extractor-smart, the dedicated publisher extractors). The platform-issued runtime token is scoped down and these calls fail without your personal token. Apify never reuses this token outside of this run."
          },
          "enableRss": {
            "title": "Use direct RSS feeds from top publishers",
            "type": "boolean",
            "description": "When on, the agent pulls articles directly from major publishers' RSS feeds (Reuters, AP, BBC, Bloomberg, FT, Guardian, NYT, WaPo, AlJazeera, CNN, CNBC, Politico) in addition to Google News. RSS feeds publish immediately, removing the 1-3 hour Google News indexing lag. Recommended on for breaking news and live monitoring.",
            "default": true
          },
          "enableReddit": {
            "title": "Include Reddit discussions",
            "type": "boolean",
            "description": "Pull relevant Reddit posts (via trudax/reddit-scraper-lite). Useful for sentiment, community signal, and topics that move on social before mainstream press. Adds ~$0.05 per run.",
            "default": false
          },
          "enableTwitter": {
            "title": "Include Twitter / X breaking signal",
            "type": "boolean",
            "description": "Pull relevant tweets from the last N days (via apidojo/twitter-scraper-lite). Strong for breaking news that hits Twitter 2-6 hours before mainstream press. Adds ~$0.10 per run.",
            "default": false
          },
          "enableWikipedia": {
            "title": "Enrich analysis with Wikipedia entity context",
            "type": "boolean",
            "description": "When on, the agent fetches Wikipedia summaries for the most-mentioned organizations, people, and countries in the article set. Claude uses this context in synthesis to ground its analysis in factual entity data. Adds ~$0.02 per run.",
            "default": false
          },
          "claudeModel": {
            "title": "Claude model",
            "enum": [
              "claude-sonnet-4-6",
              "claude-haiku-4-5-20251001",
              "claude-opus-4-7"
            ],
            "type": "string",
            "description": "Sonnet is the default balance of quality and cost. Haiku is fastest and cheapest. Opus is most thorough but slowest and most expensive.",
            "default": "claude-sonnet-4-6"
          },
          "outputLanguage": {
            "title": "Output language",
            "enum": [
              "English",
              "Arabic",
              "Chinese (Simplified)",
              "Chinese (Traditional)",
              "Spanish",
              "French",
              "German",
              "Russian",
              "Japanese",
              "Portuguese",
              "Italian",
              "Hindi",
              "Korean",
              "Turkish"
            ],
            "type": "string",
            "description": "Language of the final report. Articles are still pulled in their original language and translated for analysis if needed.",
            "default": "English"
          },
          "sourceMode": {
            "title": "Source selection mode",
            "enum": [
              "auto",
              "manual",
              "hybrid"
            ],
            "type": "string",
            "description": "Auto: Claude picks a balanced source set for your topic. Manual: only the sources you list. Hybrid: Claude suggestions plus yours.",
            "default": "auto"
          },
          "manualSources": {
            "title": "Manual source list",
            "type": "array",
            "description": "Domains to include. Examples: bbc.com, reuters.com, ft.com, bloomberg.com, aljazeera.com. Only used in manual or hybrid mode.",
            "items": {
              "type": "string"
            }
          },
          "excludeSources": {
            "title": "Excluded sources",
            "type": "array",
            "description": "Domains to skip even if Claude would otherwise suggest them.",
            "items": {
              "type": "string"
            }
          },
          "tags": {
            "title": "Semantic tags (optional)",
            "type": "array",
            "description": "Extra keywords or entity names Claude should weigh when filtering. Example: OPEC, semiconductors, NATO. Articles mentioning these get boosted relevance.",
            "items": {
              "type": "string"
            }
          },
          "countries": {
            "title": "Country focus (optional)",
            "type": "array",
            "description": "ISO codes of countries to focus on. Example: US, CN, RU, UK, FR, DE, JP, IN, SA, AE, IR. Leave empty for global.",
            "items": {
              "type": "string"
            }
          },
          "translateToEnglish": {
            "title": "Translate non-English articles during analysis",
            "type": "boolean",
            "description": "If true, Claude reads non-English articles in their original language and produces analysis in your chosen output language. If false, only articles in your output language are considered.",
            "default": true
          },
          "timeWindow": {
            "title": "Time window",
            "enum": [
              "last_24h",
              "last_7d",
              "last_30d",
              "last_90d",
              "custom"
            ],
            "type": "string",
            "description": "How recent the articles should be. Pick a preset, or choose 'custom' and set dateFrom and dateTo below.",
            "default": "last_7d"
          },
          "dateFrom": {
            "title": "Custom date range: from",
            "type": "string",
            "description": "Only used if timeWindow is 'custom'. ISO format YYYY-MM-DD. Example: 2026-04-01."
          },
          "dateTo": {
            "title": "Custom date range: to",
            "type": "string",
            "description": "Only used if timeWindow is 'custom'. ISO format YYYY-MM-DD. Example: 2026-05-12."
          },
          "depth": {
            "title": "Research depth",
            "enum": [
              "shallow",
              "medium",
              "deep"
            ],
            "type": "string",
            "description": "Shallow returns about 20 articles, medium about 50, deep about 100. Deeper means higher Claude token cost.",
            "default": "medium"
          },
          "maxArticles": {
            "title": "Max articles cap",
            "minimum": 5,
            "maximum": 200,
            "type": "integer",
            "description": "Hard ceiling on articles to deeply analyze. Overrides depth if smaller.",
            "default": 50
          },
          "bypassPaywalls": {
            "title": "Bypass paywalls when possible",
            "type": "boolean",
            "description": "Uses Googlebot user-agent on the Smart Article Extractor to access sites like Bloomberg and FT. Costs slightly more compute.",
            "default": true
          },
          "customInstructions": {
            "title": "Custom instructions for Claude (optional)",
            "type": "string",
            "description": "Power users only. Extra guidance for Claude on top of your question. Example: Weight Reuters and BBC 2x. Ignore opinion pieces. Highlight any mention of central bank rate changes."
          },
          "maxClaudeCost": {
            "title": "Max Claude spending per run (USD)",
            "minimum": 0.1,
            "maximum": 100,
            "type": "number",
            "description": "Hard ceiling on Claude token spend. The run stops cleanly if Claude tokens would exceed this. Protects you from runaway prompts.",
            "default": 5
          },
          "analysisFeatures": {
            "title": "Analysis features",
            "type": "object",
            "description": "Toggle which per-article analyses run. Disabling reduces token cost. Default is everything on.",
            "default": {
              "keywordExtraction": true,
              "impactScoring": true,
              "sentimentAnalysis": true,
              "entityExtraction": true,
              "quoteExtraction": true,
              "themeClustering": true,
              "anomalyDetection": true
            }
          },
          "webhookUrl": {
            "title": "Webhook URL (optional)",
            "type": "string",
            "description": "If set, the final markdown report is POSTed to this URL. Useful for Slack, email automation, or any other system."
          },
          "debugMode": {
            "title": "Debug mode (extra detail in output)",
            "type": "boolean",
            "description": "If on, stores the raw Claude plan, the search queries used, and per-stage timing in the output dataset. Helpful when something looks off in the report.",
            "default": false
          },
          "debugLog": {
            "title": "Verbose logging",
            "type": "boolean",
            "description": "If on, logs every Claude prompt size, every search query, and every Actor call. Helpful when troubleshooting a failed run. Logs are visible in the Apify Console Log tab.",
            "default": false
          }
        }
      },
      "runsResponseSchema": {
        "type": "object",
        "properties": {
          "data": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string"
              },
              "actId": {
                "type": "string"
              },
              "userId": {
                "type": "string"
              },
              "startedAt": {
                "type": "string",
                "format": "date-time",
                "example": "2025-01-08T00:00:00.000Z"
              },
              "finishedAt": {
                "type": "string",
                "format": "date-time",
                "example": "2025-01-08T00:00:00.000Z"
              },
              "status": {
                "type": "string",
                "example": "READY"
              },
              "meta": {
                "type": "object",
                "properties": {
                  "origin": {
                    "type": "string",
                    "example": "API"
                  },
                  "userAgent": {
                    "type": "string"
                  }
                }
              },
              "stats": {
                "type": "object",
                "properties": {
                  "inputBodyLen": {
                    "type": "integer",
                    "example": 2000
                  },
                  "rebootCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "restartCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "resurrectCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "computeUnits": {
                    "type": "integer",
                    "example": 0
                  }
                }
              },
              "options": {
                "type": "object",
                "properties": {
                  "build": {
                    "type": "string",
                    "example": "latest"
                  },
                  "timeoutSecs": {
                    "type": "integer",
                    "example": 300
                  },
                  "memoryMbytes": {
                    "type": "integer",
                    "example": 1024
                  },
                  "diskMbytes": {
                    "type": "integer",
                    "example": 2048
                  }
                }
              },
              "buildId": {
                "type": "string"
              },
              "defaultKeyValueStoreId": {
                "type": "string"
              },
              "defaultDatasetId": {
                "type": "string"
              },
              "defaultRequestQueueId": {
                "type": "string"
              },
              "buildNumber": {
                "type": "string",
                "example": "1.0.0"
              },
              "containerUrl": {
                "type": "string"
              },
              "usage": {
                "type": "object",
                "properties": {
                  "ACTOR_COMPUTE_UNITS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_WRITES": {
                    "type": "integer",
                    "example": 1
                  },
                  "KEY_VALUE_STORE_LISTS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_INTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_EXTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_SERPS": {
                    "type": "integer",
                    "example": 0
                  }
                }
              },
              "usageTotalUsd": {
                "type": "number",
                "example": 0.00005
              },
              "usageUsd": {
                "type": "object",
                "properties": {
                  "ACTOR_COMPUTE_UNITS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_WRITES": {
                    "type": "number",
                    "example": 0.00005
                  },
                  "KEY_VALUE_STORE_LISTS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_INTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_EXTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_SERPS": {
                    "type": "integer",
                    "example": 0
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}