Spaces:
Running
Running
| # 🎯 COMPLETE API REFERENCE - POSTMAN READY | |
| **Base URL (Local)**: `http://127.0.0.1:7860` | |
| **Base URL (HF)**: `https://ubuntu593-alt-scraper-api.hf.space` | |
| **Status**: ✅ LOCAL WORKING | ⏳ HF PENDING SYNC | |
| --- | |
| ## 📋 ENDPOINT 1: Health Check | |
| ### Request Details | |
| - **Method**: `GET` | |
| - **Endpoint**: `/health` | |
| - **Parameters**: None | |
| ### Postman Setup | |
| ``` | |
| GET http://127.0.0.1:7860/health | |
| ``` | |
| ### Response | |
| ```json | |
| { | |
| "status": "alive" | |
| } | |
| ``` | |
| **Status Code**: 200 OK | |
| --- | |
| ## 📋 ENDPOINT 2: System Status | |
| ### Request Details | |
| - **Method**: `GET` | |
| - **Endpoint**: `/api/status` | |
| - **Parameters** (Query, Optional): | |
| - `domain` (string): Target URL to check connectivity | |
| ### Postman Setup | |
| **URL**: `http://127.0.0.1:7860/api/status` | |
| **Params Tab**: | |
| | Key | Value | Description | | |
| |-----|-------|-------------| | |
| | domain | `https://wpengine.com` | Optional: Domain to test | | |
| **Full URL Example**: | |
| ``` | |
| http://127.0.0.1:7860/api/status?domain=https://wpengine.com | |
| ``` | |
| ### Response | |
| ```json | |
| { | |
| "region": "Mumbai, IN", | |
| "latency": 45, | |
| "status": "operational", | |
| "engine": "AutoAlt Neural v2" | |
| } | |
| ``` | |
| **Status Code**: 200 OK | |
| --- | |
| ## 📋 ENDPOINT 3: Start Scan | |
| ### Request Details | |
| - **Method**: `POST` | |
| - **Endpoint**: `/api/scanstart` | |
| - **Parameters** (Supports BOTH methods): | |
| #### Method A: Query Parameters (Recommended) | |
| | Parameter | Type | Required | Default | Description | | |
| |-----------|------|----------|---------|-------------| | |
| | `domain` | string | ✅ Yes | - | Website URL to scan | | |
| | `limit` | integer | ⚠️ Optional | 25 | Max pages to crawl | | |
| #### Method B: JSON Body (Alternative) | |
| ```json | |
| { | |
| "domain": "string (required)", | |
| "limit": 25 | |
| } | |
| ``` | |
| ### Postman Setup (Query Parameters) ✅ VERIFIED WORKING | |
| **URL**: `http://127.0.0.1:7860/api/scanstart` | |
| **Method**: `POST` | |
| **Params Tab**: | |
| | Key | Value | Example | | |
| |-----|-------|---------| | |
| | domain | `https://wpengine.com` | Any valid URL | | |
| | limit | `26` | 1-100 recommended | | |
| **Full URL**: | |
| ``` | |
| http://127.0.0.1:7860/api/scanstart?domain=https://wpengine.com&limit=26 | |
| ``` | |
| ### Postman Setup (JSON Body Alternative) | |
| **URL**: `http://127.0.0.1:7860/api/scanstart` | |
| **Method**: `POST` | |
| **Body Tab**: Select `raw` → `JSON` | |
| **Body Content**: | |
| ```json | |
| { | |
| "domain": "https://wpengine.com", | |
| "limit": 26 | |
| } | |
| ``` | |
| **Headers** (auto-added): | |
| ``` | |
| Content-Type: application/json | |
| ``` | |
| ### Response | |
| ```json | |
| { | |
| "job_id": "9923ef39-44aa-4ccf-b97b-f230153e2fc1" | |
| } | |
| ``` | |
| **Status Code**: 200 OK | |
| **⚠️ Save this `job_id`** - you'll need it for the next endpoints! | |
| --- | |
| ## 📋 ENDPOINT 4: Check Scan Progress | |
| ### Request Details | |
| - **Method**: `GET` | |
| - **Endpoint**: `/api/progress` or `/api/progress/{job_id}` | |
| - **Parameters**: | |
| | Parameter | Type | Location | Required | Description | | |
| |-----------|------|----------|----------|-------------| | |
| | `job_id` | string | Query/Path | ✅ Yes | Job ID from scanstart | | |
| ### Postman Setup | |
| **URL**: `http://127.0.0.1:7860/api/progress` | |
| **Method**: `GET` | |
| **Params Tab**: | |
| | Key | Value | | |
| |-----|-------| | |
| | job_id | `9923ef39-44aa-4ccf-b97b-f230153e2fc1` | | |
| **Full URL Example**: | |
| ``` | |
| http://127.0.0.1:7860/api/progress?job_id=9923ef39-44aa-4ccf-b97b-f230153e2fc1 | |
| ``` | |
| **Alternative (Path Parameter)**: | |
| ``` | |
| http://127.0.0.1:7860/api/progress/9923ef39-44aa-4ccf-b97b-f230153e2fc1 | |
| ``` | |
| ### Response (While 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 (When Complete) | |
| ```json | |
| { | |
| "status": "done", | |
| "percent": 100, | |
| "pages_scanned": 26, | |
| "images_found": 145, | |
| "message": "Completed", | |
| "elapsed_seconds": 25, | |
| "eta_seconds": null, | |
| "error": null | |
| } | |
| ``` | |
| ### Response (If Error) | |
| ```json | |
| { | |
| "status": "error", | |
| "percent": 0, | |
| "pages_scanned": 0, | |
| "images_found": 0, | |
| "message": "Internal Error", | |
| "elapsed_seconds": 5, | |
| "eta_seconds": null, | |
| "error": "Scan failed: Title: Just a moment" | |
| } | |
| ``` | |
| **Status Code**: 200 OK (even for errors, check the `status` field) | |
| **Possible Status Values**: | |
| - `pending` - Job queued, not started yet | |
| - `running` - Actively scanning | |
| - `done` - Scan completed successfully | |
| - `error` - Scan failed | |
| --- | |
| ## 📋 ENDPOINT 5: Get Scan Result | |
| ### Request Details | |
| - **Method**: `GET` | |
| - **Endpoint**: `/api/result` or `/api/result/{job_id}` | |
| - **Parameters**: | |
| | Parameter | Type | Location | Required | Description | | |
| |-----------|------|----------|----------|-------------| | |
| | `job_id` | string | Query/Path | ✅ Yes | Job ID from scanstart | | |
| ### Postman Setup | |
| **URL**: `http://127.0.0.1:7860/api/result` | |
| **Method**: `GET` | |
| **Params Tab**: | |
| | Key | Value | | |
| |-----|-------| | |
| | job_id | `9923ef39-44aa-4ccf-b97b-f230153e2fc1` | | |
| **Full URL Example**: | |
| ``` | |
| http://127.0.0.1:7860/api/result?job_id=9923ef39-44aa-4ccf-b97b-f230153e2fc1 | |
| ``` | |
| **Alternative (Path Parameter)**: | |
| ``` | |
| http://127.0.0.1:7860/api/result/9923ef39-44aa-4ccf-b97b-f230153e2fc1 | |
| ``` | |
| ### Response (If Not Ready) | |
| ```json | |
| { | |
| "status": "running", | |
| "message": "Result not ready yet" | |
| } | |
| ``` | |
| ### Response (When Complete) | |
| ```json | |
| { | |
| "summary": { | |
| "total_pages_scanned": 26, | |
| "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": [ | |
| { | |
| "page_url": "https://wpengine.com/", | |
| "images": [ | |
| { | |
| "src": "https://wpengine.com/logo.png", | |
| "alt": "Company Logo", | |
| "missing_alt": false, | |
| "poor_quality": false, | |
| "dimensions": "1200x630" | |
| } | |
| ] | |
| } | |
| ] | |
| } | |
| ``` | |
| **Status Code**: 200 OK | |
| --- | |
| ## 🔄 COMPLETE WORKFLOW IN POSTMAN | |
| ### Step 1: Start a Scan | |
| ``` | |
| POST http://127.0.0.1:7860/api/scanstart?domain=https://wpengine.com&limit=26 | |
| ``` | |
| **Save the `job_id` from response!** | |
| --- | |
| ### Step 2: Poll for Progress (repeat every 2 seconds) | |
| ``` | |
| GET http://127.0.0.1:7860/api/progress?job_id=YOUR_JOB_ID | |
| ``` | |
| **Wait until `status` = `"done"`** | |
| --- | |
| ### Step 3: Get Final Result | |
| ``` | |
| GET http://127.0.0.1:7860/api/result?job_id=YOUR_JOB_ID | |
| ``` | |
| **Receive full scan report!** | |
| --- | |
| ## 📦 POSTMAN COLLECTION (IMPORT THIS) | |
| Save as `alt-scraper-api.postman_collection.json`: | |
| ```json | |
| { | |
| "info": { | |
| "name": "Alt Scraper API - Complete", | |
| "description": "Full API with all parameters - Tested & Working", | |
| "schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json" | |
| }, | |
| "variable": [ | |
| { | |
| "key": "base_url", | |
| "value": "http://127.0.0.1:7860", | |
| "type": "string" | |
| }, | |
| { | |
| "key": "job_id", | |
| "value": "", | |
| "type": "string" | |
| } | |
| ], | |
| "item": [ | |
| { | |
| "name": "1. Health Check", | |
| "request": { | |
| "method": "GET", | |
| "header": [], | |
| "url": { | |
| "raw": "{{base_url}}/health", | |
| "host": ["{{base_url}}"], | |
| "path": ["health"] | |
| } | |
| } | |
| }, | |
| { | |
| "name": "2. System Status", | |
| "request": { | |
| "method": "GET", | |
| "header": [], | |
| "url": { | |
| "raw": "{{base_url}}/api/status?domain=https://wpengine.com", | |
| "host": ["{{base_url}}"], | |
| "path": ["api", "status"], | |
| "query": [ | |
| { | |
| "key": "domain", | |
| "value": "https://wpengine.com", | |
| "description": "Optional: Domain to test connectivity" | |
| } | |
| ] | |
| } | |
| } | |
| }, | |
| { | |
| "name": "3. Start Scan (Query Params)", | |
| "event": [ | |
| { | |
| "listen": "test", | |
| "script": { | |
| "exec": [ | |
| "// Auto-save job_id to environment", | |
| "const response = pm.response.json();", | |
| "pm.collectionVariables.set('job_id', response.job_id);", | |
| "console.log('Job ID saved:', response.job_id);" | |
| ], | |
| "type": "text/javascript" | |
| } | |
| } | |
| ], | |
| "request": { | |
| "method": "POST", | |
| "header": [], | |
| "url": { | |
| "raw": "{{base_url}}/api/scanstart?domain=https://wpengine.com&limit=26", | |
| "host": ["{{base_url}}"], | |
| "path": ["api", "scanstart"], | |
| "query": [ | |
| { | |
| "key": "domain", | |
| "value": "https://wpengine.com", | |
| "description": "Target website URL" | |
| }, | |
| { | |
| "key": "limit", | |
| "value": "26", | |
| "description": "Max pages to crawl (default: 25)" | |
| } | |
| ] | |
| } | |
| } | |
| }, | |
| { | |
| "name": "3b. Start Scan (JSON Body)", | |
| "event": [ | |
| { | |
| "listen": "test", | |
| "script": { | |
| "exec": [ | |
| "const response = pm.response.json();", | |
| "pm.collectionVariables.set('job_id', response.job_id);" | |
| ], | |
| "type": "text/javascript" | |
| } | |
| } | |
| ], | |
| "request": { | |
| "method": "POST", | |
| "header": [ | |
| { | |
| "key": "Content-Type", | |
| "value": "application/json" | |
| } | |
| ], | |
| "body": { | |
| "mode": "raw", | |
| "raw": "{\n \"domain\": \"https://wpengine.com\",\n \"limit\": 26\n}" | |
| }, | |
| "url": { | |
| "raw": "{{base_url}}/api/scanstart", | |
| "host": ["{{base_url}}"], | |
| "path": ["api", "scanstart"] | |
| } | |
| } | |
| }, | |
| { | |
| "name": "4. Check Progress", | |
| "request": { | |
| "method": "GET", | |
| "header": [], | |
| "url": { | |
| "raw": "{{base_url}}/api/progress?job_id={{job_id}}", | |
| "host": ["{{base_url}}"], | |
| "path": ["api", "progress"], | |
| "query": [ | |
| { | |
| "key": "job_id", | |
| "value": "{{job_id}}", | |
| "description": "Job ID from scanstart response" | |
| } | |
| ] | |
| } | |
| } | |
| }, | |
| { | |
| "name": "5. Get Result", | |
| "request": { | |
| "method": "GET", | |
| "header": [], | |
| "url": { | |
| "raw": "{{base_url}}/api/result?job_id={{job_id}}", | |
| "host": ["{{base_url}}"], | |
| "path": ["api", "result"], | |
| "query": [ | |
| { | |
| "key": "job_id", | |
| "value": "{{job_id}}", | |
| "description": "Job ID from scanstart response" | |
| } | |
| ] | |
| } | |
| } | |
| } | |
| ] | |
| } | |
| ``` | |
| --- | |
| ## 🎯 QUICK REFERENCE TABLE | |
| | Endpoint | Method | Parameters | Response | | |
| |----------|--------|------------|----------| | |
| | `/health` | GET | None | `{"status":"alive"}` | | |
| | `/api/status` | GET | `domain` (optional) | System info | | |
| | `/api/scanstart` | POST | `domain` (required)<br>`limit` (optional, default=25) | `{"job_id":"..."}` | | |
| | `/api/progress` | GET | `job_id` (required) | Progress info | | |
| | `/api/result` | GET | `job_id` (required) | Full report | | |
| --- | |
| ## ✅ TESTED & VERIFIED | |
| **Last Test**: 2026-02-11 17:32 IST | |
| **Test Result**: ✅ 200 OK | |
| **Sample Job ID**: `9923ef39-44aa-4ccf-b97b-f230153e2fc1` | |
| All endpoints working perfectly on local server! | |
| --- | |
| ## 🌐 FOR HUGGING FACE DEPLOYMENT | |
| Replace `{{base_url}}` with: | |
| ``` | |
| https://ubuntu593-alt-scraper-api.hf.space | |
| ``` | |
| **(HF deployment will work once you trigger Factory Reboot in settings)** | |