Spaces:
Running
API Usage Inventory
This document lists all external API integrations in the application.
1. NVIDIA NIM API
Purpose: OCR (Optical Character Recognition) for extracting text from images
API Key Required: NVIDIA_API_KEY
Endpoints:
- OCR:
https://ai.api.nvidia.com/v1/cv/nvidia/nemoretriever-ocr-v1 - Chat/Parser:
https://integrate.api.nvidia.com/v1/chat/completions
Used In:
config.py- Configuration setupprocessing.py-call_nim_ocr_api()function for OCRroutes.py- Question number extraction and redaction featuresredact.py- Picture redaction in imagestest.sh- Testing scripttemplates/question_entry_v2.html- Frontend OCR feature
Features:
- Automatic question number extraction from cropped images
- Text detection and OCR processing
- Image redaction for removing pictures from scanned documents
2. Google Gemini API
Purpose: AI-powered question classification and question-answer extraction
API Key Required: GEMINI_API_KEY or GOOGLE_API_KEY
Endpoints:
https://generativelanguage.googleapis.com/v1beta/models/gemini-2.0-flash-lite:generateContent
Used In:
gemini_classifier.py-classify_questions_with_gemini()- Classifies questions into subjects and chaptersgemini_subjective.py- Subjective question generationqtab_routes.py-process_image_for_questions()- Extracts question-answer pairs from imagesclassifier_routes.py- Auto-classification of cropped questions (via user setting)neetprep.py- NeetPrep question classification (via user setting)
Features:
- Automatic question classification by subject and NCERT chapter
- Question-answer pair extraction from answer key images
- Subjective question generation
- Model:
gemini-2.0-flash-lite
3. OpenRouter API (Amazon Nova)
Purpose: Alternative AI model for question classification
API Key Required: OPENROUTER_API_KEY
Endpoints:
https://openrouter.ai/api/v1/chat/completions
Used In:
nova_classifier.py-classify_questions_with_nova()- Classifies questions using Amazon Nova modelclassifier_routes.py- Auto-classification (when user selects Nova model)neetprep.py- NeetPrep question classification (when user selects Nova model)test.py- Testing script for Nova API
Features:
- Question classification by subject and NCERT chapter
- Alternative to Gemini classifier
- Model:
amazon/nova-2-lite-v1:free - User-selectable via Settings page
4. NeetPrep GraphQL API
Purpose: Fetch questions and test attempts from NeetPrep platform
API Key Required: None (uses session/headers)
Endpoints:
https://www.neetprep.com/graphql
Used In:
neetprep.py-run_hardcoded_query()function
Features:
- Fetch user test attempts
- Get incorrect question IDs
- Retrieve question details (text, options, correct answer, level, topics)
- Batch processing of questions
GraphQL Queries:
GetAttempts- Fetch test attemptsGetIncorrectIds- Get incorrect question IDs from attemptsGetQuestionDetails- Retrieve full question data
5. External Resource Downloads
Purpose: Download files from external sources
Used In:
routes.py- Download PDFs and images from URLscli.py- CLI download functionalityutils.py- Download Arial font from GitHubjson_processor.py/json_processor_v3.py- Download images from URLs for PDF generation
Endpoints (Examples):
- GitHub:
https://github.com/kavin808/arial.ttf/raw/refs/heads/master/arial.ttf - User-provided PDF/image URLs
API Key Summary
| Environment Variable | Required For | Used By |
|---|---|---|
NVIDIA_API_KEY |
NVIDIA NIM OCR | processing.py, routes.py, redact.py, config.py |
GEMINI_API_KEY or GOOGLE_API_KEY |
Google Gemini AI | gemini_classifier.py, gemini_subjective.py, qtab_routes.py |
OPENROUTER_API_KEY |
Amazon Nova via OpenRouter | nova_classifier.py, test.py |
User-Configurable API Settings
Classifier Model Selection
Location: Settings page (templates/settings.html)
Database Field: users.classifier_model
Options:
- Gemini Classifier (Default) - Uses Google Gemini API
- Amazon Nova Lite - Uses OpenRouter API
Affects:
classifier_routes.py- Auto-classification of cropped questionsneetprep.py- NeetPrep question classification
Users can choose their preferred AI model for question classification based on:
- API key availability
- Model performance preferences
- Cost considerations
Rate Limiting & Timeouts
Configured Timeouts:
- NVIDIA NIM OCR: 300 seconds (5 minutes)
- Gemini API: 300 seconds (5 minutes)
- Nova API: 300 seconds (5 minutes)
- NeetPrep GraphQL: 30 seconds
- Font download: 30 seconds
Batch Processing:
- Classifier batch size: 7 questions per batch
- Wait time between batches:
- Classifier routes: 5 seconds
- NeetPrep: 6 seconds
Notes
- API Key Storage: All API keys are stored as environment variables, not in the database
- Error Handling: All API calls include error handling with logging
- Fallback Behavior: If APIs are unavailable, features gracefully disable with user notifications
- Security: API keys are never exposed in templates or client-side code