verifai-api / README.md
Alex-Knight's picture
Upload 4 files
f996a72 verified
---
title: VerifAI News Verification API
emoji: πŸ”
colorFrom: purple
colorTo: blue
sdk: docker
app_port: 7860
pinned: false
license: mit
---
# VerifAI - Fake News Detection API
Multi-model fake news detection system for both **text** and **images** with intelligent API management and diverse global news sources.
**Version:** 3.0.0
**Last Updated:** January 2026
## ✨ Features
### Core Detection
- **Text Detection**: BERT + LLM (Gemini 2.0/Groq) + Web Verification
- **Image Detection**: OCR (EasyOCR) + Gemini Vision + Manipulation Analysis
- **Real-time API**: FastAPI with CORS support
### Intelligent API Management
- **6 Gemini API Keys** with smart round-robin rotation
- **Groq Llama 3.1 70B Fallback** when Gemini is exhausted
- **Response Caching** with 1-hour TTL (40-60% API reduction)
- **Rate Limit Detection** with 60-second cooldowns
### Diverse News Sources
- **100+ Trusted Domains** from all continents
- **Unique Domain Per Source** (no duplicate domains)
- Wire Services: Reuters, AP, AFP
- International: BBC, CNN, DW, Al Jazeera, NDTV, SCMP
- Regional coverage: US, UK, Europe, Asia, Africa, Latin America, Oceania
---
## πŸ“‘ API Endpoints
### Health Check
```http
GET /
```
Returns API status including cache stats and key health.
### API Key Status
```http
GET /api-status
```
Returns detailed status of all Gemini keys and Groq fallback.
### Text Verification
```http
POST /check
Content-Type: application/json
{"text": "Your news text to verify"}
```
**Response:**
```json
{
"credibility": 85.0,
"verdict": "VERIFIED",
"bert_score": 0.92,
"llm_score": 0.78,
"web_score": 1.0,
"sources": [
{
"title": "BBC News - Article Title",
"url": "https://bbc.com/...",
"trusted": true,
"domain": "bbc.com"
}
]
}
```
### Image Verification (Base64)
```http
POST /check-image
Content-Type: application/json
{"image": "data:image/jpeg;base64,..."}
```
**Response:**
```json
{
"credibility": 75,
"verdict": "LIKELY REAL",
"alert": "βœ… Content appears mostly credible",
"extracted_text": "Text extracted from image...",
"bert_score": 0.85,
"llm_score": 0.70,
"web_score": 0.8,
"image_manipulation_score": 0.2,
"concerns": "Minor artifacts detected",
"sources": [...]
}
```
### Image Verification (File Upload)
```http
POST /check-image-upload
Content-Type: multipart/form-data
image: <file>
```
### Text Extraction (OCR only)
```http
POST /extract-text
Content-Type: application/json
{"image": "data:image/jpeg;base64,..."}
```
---
## πŸ”§ Environment Variables
Set these in **Space Settings β†’ Repository secrets**:
| Variable | Description | Required |
|----------|-------------|----------|
| `GEMINI_API_KEY` | Additional Gemini API key | Optional |
| `GROQ_API_KEY` | Groq API key for fallback | Pre-configured |
> **Note:** 6 Gemini keys are already hardcoded in `app.py`. Environment variables are optional extras.
---
## πŸ“Š Credibility Scoring
| Score Range | Verdict | Description |
|-------------|---------|-------------|
| 80-100% | βœ… VERIFIED / REAL | Highly credible, matched trusted sources |
| 60-79% | ⚠️ LIKELY REAL | Mostly credible, some uncertainty |
| 40-59% | πŸ€” UNCERTAIN | Inconclusive, requires manual review |
| 20-39% | ⚠️ LIKELY FAKE | Suspicious patterns detected |
| 0-19% | 🚨 FAKE | Strong indicators of misinformation |
---
## 🌐 Trusted News Sources
**Wire Services:** Reuters, AP, AFP, UPI
**By Region:**
| Region | Example Sources |
|--------|----------------|
| **US** | NYT, WaPo, WSJ, CNN, NBC, Bloomberg, Forbes |
| **UK** | BBC, Guardian, Telegraph, FT, Economist |
| **Europe** | DW (Germany), France24, El PaΓ­s, Corriere |
| **Middle East** | Al Jazeera, Arab News, Times of Israel |
| **Asia** | NDTV, Hindu, SCMP, Japan Times, Korea Herald |
| **Africa** | News24, Daily Maverick, AllAfrica |
| **Latin America** | Folha, Infobae, El Universal |
| **Oceania** | ABC Australia, NZ Herald |
---
## πŸš€ Deployment
### Hugging Face Spaces
1. Create a new Space with **Docker** SDK
2. Upload contents of `huggingface/` folder
3. Space will auto-build and deploy
### Local Development
```bash
cd huggingface
pip install -r requirements.txt
python -m uvicorn app:app --host 127.0.0.1 --port 7860 --reload
```
---
## πŸ“ Model Information
| Component | Model | Purpose |
|-----------|-------|---------|
| **BERT** | `jy46604790/Fake-News-BERT-Detect` | Binary classification |
| **LLM** | Gemini 2.0 Flash / Groq Llama 3.1 70B | Fact analysis |
| **Vision** | Gemini Vision | Image manipulation detection |
| **OCR** | EasyOCR | Text extraction from images |
| **Search** | DuckDuckGo | Web verification |
---
## πŸ“ˆ Performance
- **Startup Time:** ~30-60s (model loading)
- **Text Analysis:** 3-8s per request
- **Image Analysis:** 5-12s per request
- **Cache Hit Rate:** 40-60% (reduces API calls)
- **Uptime:** 99.9% (Gemini + Groq redundancy)
---
## πŸ“„ License
MIT License