# 🎯 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)
`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)**