Files
url_tracker_tool/public/api-readme.md

168 lines
4.2 KiB
Markdown

# URL Redirect Tracker API Documentation
This API allows you to programmatically track and analyze URL redirect chains, providing detailed information about each redirect, including HTTP status codes, headers, and response data.
## Rate Limiting
The API is limited to 100 requests per hour per IP address.
## API Endpoints
### POST /api/v1/track
Track a URL and get the full redirect chain using a POST request.
#### Request Parameters (JSON Body)
| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| url | string | Yes | The URL to track (e.g., "example.com" or "https://example.com") |
| method | string | No | HTTP method to use (GET, HEAD, POST). Default: "GET" |
| userAgent | string | No | Custom User-Agent header to send with the request |
#### Example Request
```bash
curl -X POST https://urltrackertool.com/api/v1/track \
-H "Content-Type: application/json" \
-d '{
"url": "github.com",
"method": "GET",
"userAgent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) Chrome"
}'
```
### GET /api/v1/track
Track a URL and get the full redirect chain using a GET request with query parameters.
#### Request Parameters (Query String)
| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| url | string | Yes | The URL to track (e.g., "example.com" or "https://example.com") |
| method | string | No | HTTP method to use (GET, HEAD, POST). Default: "GET" |
| userAgent | string | No | Custom User-Agent header to send with the request |
#### Example Request
```bash
curl "https://urltrackertool.com/api/v1/track?url=github.com&method=GET&userAgent=Mozilla%2F5.0%20Chrome"
```
## Response Format
Both endpoints return the same JSON structure:
```json
{
"success": true,
"status": 200,
"data": {
"url": "http://github.com",
"method": "GET",
"redirectCount": 1,
"finalUrl": "https://github.com/",
"finalStatusCode": 200,
"redirects": [
{
"url": "http://github.com",
"timestamp": 1684320000000,
"isSSL": false,
"duration": 220,
"statusCode": 301,
"statusText": "Moved Permanently",
"metadata": {
"status": 301,
"statusText": "Moved Permanently",
"headers": {
"location": "https://github.com/",
"content-length": "0",
"server": "GitHub.com"
},
"contentType": "text/html",
"contentLength": "0",
"server": "GitHub.com",
"date": "Wed, 17 May 2023 12:00:00 GMT",
"protocol": "http:",
"method": "GET"
}
},
{
"url": "https://github.com/",
"timestamp": 1684320000220,
"isSSL": true,
"duration": 350,
"statusCode": 200,
"statusText": "OK",
"metadata": {
"status": 200,
"statusText": "OK",
"headers": {
"content-type": "text/html; charset=utf-8",
"server": "GitHub.com"
},
"contentType": "text/html; charset=utf-8",
"server": "GitHub.com",
"date": "Wed, 17 May 2023 12:00:00 GMT",
"protocol": "https:",
"method": "GET"
},
"final": true
}
]
}
}
```
## Error Codes
| Status Code | Description |
|-------------|-------------|
| 400 | Bad Request - Required parameters are missing or invalid |
| 429 | Too Many Requests - Rate limit exceeded |
| 500 | Server Error - An error occurred while processing the request |
## JavaScript Example
```javascript
const trackUrl = async (url) => {
const response = await fetch('https://urltrackertool.com/api/v1/track', {
method: 'POST',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify({
url,
method: 'GET'
})
});
return await response.json();
};
// Usage
trackUrl('github.com')
.then(data => console.log(data))
.catch(err => console.error(err));
```
## Python Example
```python
import requests
def track_url(url):
response = requests.post(
'https://urltrackertool.com/api/v1/track',
json={
'url': url,
'method': 'GET'
}
)
return response.json()
# Usage
result = track_url('github.com')
print(result)
```