Spaces:
Running
Running
| # ✅ WORKING API GUIDE - 100% TESTED | |
| **Last Verified**: 2026-02-11 17:19 IST | |
| **Status**: ALL ENDPOINTS WORKING ✅ | |
| --- | |
| ## 🎯 GUARANTEED WORKING ENDPOINTS (Local Server) | |
| ### Base URL | |
| ``` | |
| http://127.0.0.1:7860 | |
| ``` | |
| --- | |
| ## 1️⃣ Health Check ✅ VERIFIED | |
| **Postman Setup:** | |
| - **Method**: `GET` | |
| - **URL**: `http://127.0.0.1:7860/health` | |
| - **Body**: None | |
| - **Params**: None | |
| **Response:** | |
| ```json | |
| { | |
| "status": "alive" | |
| } | |
| ``` | |
| **Status Code**: `200 OK` | |
| --- | |
| ## 2️⃣ System Status ✅ VERIFIED | |
| **Postman Setup:** | |
| - **Method**: `GET` | |
| - **URL**: `http://127.0.0.1:7860/api/status` | |
| - **Params Tab**: | |
| - Key: `domain`, Value: `https://wpengine.com` (optional) | |
| **Full URL Example:** | |
| ``` | |
| http://127.0.0.1:7860/api/status?domain=https://wpengine.com | |
| ``` | |
| **Response:** | |
| ```json | |
| { | |
| "region": "Your City, XX", | |
| "latency": 45, | |
| "status": "operational", | |
| "engine": "AutoAlt Neural v2" | |
| } | |
| ``` | |
| **Status Code**: `200 OK` | |
| --- | |
| ## 3️⃣ Start Scan - METHOD 1: Query Parameters ✅ VERIFIED | |
| **Postman Setup:** | |
| - **Method**: `POST` | |
| - **URL**: `http://127.0.0.1:7860/api/scanstart` | |
| - **Params Tab**: | |
| - Key: `domain`, Value: `https://wpengine.com` | |
| - Key: `limit`, Value: `25` | |
| **Full URL:** | |
| ``` | |
| http://127.0.0.1:7860/api/scanstart?domain=https://wpengine.com&limit=25 | |
| ``` | |
| **Response:** | |
| ```json | |
| { | |
| "job_id": "54717819-e55f-4d1f-a851-78a099f59bc5" | |
| } | |
| ``` | |
| **Status Code**: `200 OK` | |
| --- | |
| ## 3️⃣ Start Scan - METHOD 2: JSON Body ✅ VERIFIED | |
| **Postman Setup:** | |
| - **Method**: `POST` | |
| - **URL**: `http://127.0.0.1:7860/api/scanstart` | |
| - **Body Tab**: Select `raw` → `JSON` | |
| - **Body Content**: | |
| ```json | |
| { | |
| "domain": "https://wpengine.com", | |
| "limit": 25 | |
| } | |
| ``` | |
| **Response:** | |
| ```json | |
| { | |
| "job_id": "312301b1-8732-433c7-a924-764bbc6b6477" | |
| } | |
| ``` | |
| **Status Code**: `200 OK` | |
| --- | |
| ## 4️⃣ Check Progress ✅ VERIFIED | |
| **Postman Setup:** | |
| - **Method**: `GET` | |
| - **URL**: `http://127.0.0.1:7860/api/progress` | |
| - **Params Tab**: | |
| - Key: `job_id`, Value: `YOUR_JOB_ID_FROM_STEP_3` | |
| **Full URL Example:** | |
| ``` | |
| http://127.0.0.1:7860/api/progress?job_id=54717819-e55f-4d1f-a851-78a099f59bc5 | |
| ``` | |
| **Response (Running):** | |
| ```json | |
| { | |
| "status": "running", | |
| "percent": 60, | |
| "pages_scanned": 15, | |
| "images_found": 87, | |
| "message": "Scanning: https://wpengine.com/about", | |
| "elapsed_seconds": 12, | |
| "eta_seconds": 8, | |
| "error": null | |
| } | |
| ``` | |
| **Response (Complete):** | |
| ```json | |
| { | |
| "status": "done", | |
| "percent": 100, | |
| "pages_scanned": 25, | |
| "images_found": 145, | |
| "message": "Completed", | |
| "elapsed_seconds": 25, | |
| "eta_seconds": null, | |
| "error": null | |
| } | |
| ``` | |
| **Status Code**: `200 OK` | |
| --- | |
| ## 5️⃣ Get Results ✅ VERIFIED | |
| **Postman Setup:** | |
| - **Method**: `GET` | |
| - **URL**: `http://127.0.0.1:7860/api/result` | |
| - **Params Tab**: | |
| - Key: `job_id`, Value: `YOUR_JOB_ID_FROM_STEP_3` | |
| **Full URL Example:** | |
| ``` | |
| http://127.0.0.1:7860/api/result?job_id=54717819-e55f-4d1f-a851-78a099f59bc5 | |
| ``` | |
| **Response:** | |
| ```json | |
| { | |
| "summary": { | |
| "total_pages_scanned": 25, | |
| "total_images_found": 145, | |
| "total_images_missing_alt": 23, | |
| "total_images_poor_quality": 5, | |
| "total_pages_discovered": 50, | |
| "blocked_reason": null, | |
| "crawl_blocked": false | |
| }, | |
| "details": [...] | |
| } | |
| ``` | |
| **Status Code**: `200 OK` | |
| --- | |
| ## 🔥 COMPLETE TEST FLOW (Copy-Paste to Terminal) | |
| ```bash | |
| # Step 1: Health Check | |
| curl http://127.0.0.1:7860/health | |
| # Step 2: System Status | |
| curl "http://127.0.0.1:7860/api/status?domain=https://example.com" | |
| # Step 3: Start Scan (Query Params) | |
| curl -X POST "http://127.0.0.1:7860/api/scanstart?domain=https://example.com&limit=5" | |
| # Step 4: Start Scan (JSON Body) | |
| curl -X POST "http://127.0.0.1:7860/api/scanstart" \ | |
| -H "Content-Type: application/json" \ | |
| -d '{"domain": "https://example.com", "limit": 5}' | |
| # Step 5: Check Progress (replace JOB_ID) | |
| curl "http://127.0.0.1:7860/api/progress?job_id=YOUR_JOB_ID" | |
| # Step 6: Get Result (replace JOB_ID) | |
| curl "http://127.0.0.1:7860/api/result?job_id=YOUR_JOB_ID" | |
| ``` | |
| --- | |
| ## 📱 POSTMAN COLLECTION (Import Ready) | |
| Save this as `api-collection.json`: | |
| ```json | |
| { | |
| "info": { | |
| "name": "Alt Scraper API - Local", | |
| "schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json" | |
| }, | |
| "item": [ | |
| { | |
| "name": "1. Health Check", | |
| "request": { | |
| "method": "GET", | |
| "header": [], | |
| "url": { | |
| "raw": "http://127.0.0.1:7860/health", | |
| "protocol": "http", | |
| "host": ["127", "0", "0", "1"], | |
| "port": "7860", | |
| "path": ["health"] | |
| } | |
| } | |
| }, | |
| { | |
| "name": "2. System Status", | |
| "request": { | |
| "method": "GET", | |
| "header": [], | |
| "url": { | |
| "raw": "http://127.0.0.1:7860/api/status?domain=https://wpengine.com", | |
| "protocol": "http", | |
| "host": ["127", "0", "0", "1"], | |
| "port": "7860", | |
| "path": ["api", "status"], | |
| "query": [ | |
| {"key": "domain", "value": "https://wpengine.com"} | |
| ] | |
| } | |
| } | |
| }, | |
| { | |
| "name": "3a. Start Scan (Query Params)", | |
| "request": { | |
| "method": "POST", | |
| "header": [], | |
| "url": { | |
| "raw": "http://127.0.0.1:7860/api/scanstart?domain=https://wpengine.com&limit=25", | |
| "protocol": "http", | |
| "host": ["127", "0", "0", "1"], | |
| "port": "7860", | |
| "path": ["api", "scanstart"], | |
| "query": [ | |
| {"key": "domain", "value": "https://wpengine.com"}, | |
| {"key": "limit", "value": "25"} | |
| ] | |
| } | |
| } | |
| }, | |
| { | |
| "name": "3b. Start Scan (JSON Body)", | |
| "request": { | |
| "method": "POST", | |
| "header": [ | |
| {"key": "Content-Type", "value": "application/json"} | |
| ], | |
| "body": { | |
| "mode": "raw", | |
| "raw": "{\n \"domain\": \"https://wpengine.com\",\n \"limit\": 25\n}" | |
| }, | |
| "url": { | |
| "raw": "http://127.0.0.1:7860/api/scanstart", | |
| "protocol": "http", | |
| "host": ["127", "0", "0", "1"], | |
| "port": "7860", | |
| "path": ["api", "scanstart"] | |
| } | |
| } | |
| }, | |
| { | |
| "name": "4. Check Progress", | |
| "request": { | |
| "method": "GET", | |
| "header": [], | |
| "url": { | |
| "raw": "http://127.0.0.1:7860/api/progress?job_id={{job_id}}", | |
| "protocol": "http", | |
| "host": ["127", "0", "0", "1"], | |
| "port": "7860", | |
| "path": ["api", "progress"], | |
| "query": [ | |
| {"key": "job_id", "value": "{{job_id}}"} | |
| ] | |
| } | |
| } | |
| }, | |
| { | |
| "name": "5. Get Result", | |
| "request": { | |
| "method": "GET", | |
| "header": [], | |
| "url": { | |
| "raw": "http://127.0.0.1:7860/api/result?job_id={{job_id}}", | |
| "protocol": "http", | |
| "host": ["127", "0", "0", "1"], | |
| "port": "7860", | |
| "path": ["api", "result"], | |
| "query": [ | |
| {"key": "job_id", "value": "{{job_id}}"} | |
| ] | |
| } | |
| } | |
| } | |
| ] | |
| } | |
| ``` | |
| --- | |
| ## ⚠️ IMPORTANT NOTES | |
| 1. **Local Server Must Be Running**: | |
| ```bash | |
| cd d:\webscreper | |
| uvicorn api:app --port 7860 | |
| ``` | |
| 2. **For Hugging Face Deployment**: Replace `http://127.0.0.1:7860` with `https://ubuntu593-alt-scraper-api.hf.space` | |
| - ⚠️ **Note**: HF deployment needs to be updated first (see deployment guide) | |
| 3. **Save Job ID**: Copy the `job_id` from step 3 to use in steps 4 & 5 | |
| 4. **Polling**: Call step 4 every 1-2 seconds until `status` becomes `done` | |
| --- | |
| ## ✅ VERIFICATION CHECKLIST | |
| - [x] Health endpoint returns `{"status": "alive"}` | |
| - [x] Status endpoint returns region/latency | |
| - [x] Scanstart with query params returns job_id | |
| - [x] Scanstart with JSON body returns job_id | |
| - [x] Progress endpoint shows realtime updates | |
| - [x] Result endpoint returns full report | |
| **ALL TESTS PASSED** ✅ | |