Oui Monitor
Non défini
7 minute de lecture
SEO monitoring, keyword tracking, backlink analysis, competitor intelligence, and comprehensive site audits.
SEO monitoring, keyword tracking, backlink analysis, competitor intelligence, and comprehensive site audits.
SEO monitoring, keyword tracking, backlink analysis, competitor intelligence, and comprehensive site audits.
Base URL: https://oui-monitor:8890/api
Overview
Authentication
GET /api/health
Response
{
"status": "ok",
"timestamp": "2025-12-30T15:31:59+01:00",
"version": "1.0.0"
}
Domain Endpoints
GET /api/domains
Retrieve all domains accessible to the API key.
Response
{
"success": true,
"message": "Success",
"data": [
{
"id": 1,
"name": "Example Site",
"domain": "example.com",
"force_path": "domaine",
"is_active": 1,
"last_sync_at": "2025-12-30 10:00:00"
}
]
}
GET /api/domains/{id}
Parameters
| Parameter | Type | Description |
|---|---|---|
| id | integer | Required Domain ID |
Response
{
"success": true,
"data": {
"id": 1,
"name": "Example Site",
"domain": "example.com",
"force_path": "domaine",
"is_active": 1,
"created_at": "2025-01-01 00:00:00",
"last_sync_at": "2025-12-30 10:00:00"
}
}
GET /api/domains/{id}/summary
Get comprehensive summary statistics for a domain.
Response
{
"success": true,
"data": {
"seo": {
"estimated_traffic": 1500,
"total_keywords": 209,
"keywords_top10": 31
},
"keywords": {
"total": 209,
"pos1": 2,
"top3": 7,
"top10": 31,
"total_traffic": 249
},
"backlinks": {
"trust_flow": 25,
"citation_flow": 30,
"backlinks_count": 150,
"referring_domains": 45
},
"competitors_count": 12
}
}
SEO Data Endpoints
GET /api/domains/{id}/seo/history
Parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
| limit | integer | 100 | Max records to return |
Response
{
"success": true,
"data": [
{
"Date": "2025-12",
"Est": 1500,
"Nbkw": 209,
"kw1": 2,
"kw3": 7,
"kw10": 31,
"kw20": 85,
"Nburl": 45,
"Rank": 125000
}
]
}
GET /api/domains/{id}/seo/keywords
Parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
| page | integer | 1 | Page number |
| per_page | integer | 50 | Results per page (max 100) |
| search | string | - | Filter by keyword |
| position_max | integer | - | Filter by max position |
| sort | string | position | Sort by: position, volume, traffic |
Response
{
"success": true,
"data": [
{
"id": 1,
"keyword": "example keyword",
"url": "https://example.com/page",
"position": 5,
"previous_position": 7,
"search_volume": 1200,
"estimated_traffic": 150,
"cpc": "1.50",
"seo_difficulty": 45,
"last_checked_at": "2025-12-30"
}
],
"meta": {
"total": 209,
"page": 1,
"per_page": 50,
"total_pages": 5
}
}
GET /api/domains/{id}/seo/urls
Parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
| limit | integer | 100 | Max URLs to return |
Response
{
"success": true,
"data": [
{
"Url": "https://example.com/page",
"Est": 500,
"Nbkw": 15,
"GtPot": 200
}
]
}
GET /api/domains/{id}/seo/competitors
Parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
| limit | integer | 100 | Max competitors to return |
Response
{
"success": true,
"data": [
{
"Conc": "competitor.com",
"Ind": 85,
"Est": 5000,
"Nbkw": 500,
"kw10": 150,
"kw1": 25,
"Nburl": 80
}
]
}
GET /api/domains/{id}/seo/opportunities
Parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
| type | string | short_term | short_term or long_term |
| limit | integer | 50 | Max opportunities |
Response
{
"success": true,
"data": [
{
"Kw": "target keyword",
"Rx": 15,
"RxPot": 5,
"Vol": 2400,
"Est": 50,
"EstPot": 300,
"GtPot": 250,
"cpc": "2.50",
"SeoKd": 35
}
]
}
GET /api/domains/{id}/seo/opportunities/stored
Parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
| type | string | - | short_term, long_term, or omit for both |
| limit | integer | 50 | Max results (max 200) |
| sort | string | traffic_gain | Sort by: traffic_gain, volume, position, potential |
Response
{
"success": true,
"data": {
"domain": "example.com",
"count": 25,
"opportunities": [
{
"id": 1,
"type": "short_term",
"keyword": "target keyword",
"current_position": 15,
"potential_position": 5,
"search_volume": 2400,
"current_traffic": 50,
"potential_traffic": 300,
"traffic_gain": 250,
"cpc": "2.50",
"seo_difficulty": 35
}
]
}
}
GET /api/domains/{id}/seo/backlinks
Response
{
"success": true,
"data": {
"trust_flow": 25,
"citation_flow": 30,
"backlinks_count": 1500,
"referring_domains": 450,
"dofollow_count": 1200,
"nofollow_count": 300
}
}
Rankings & Progression
GET /api/domains/{id}/seo/rankings
Parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
| days | integer | 30 | Time period (max 365) |
Response
{
"success": true,
"data": {
"domain": "example.com",
"current": {
"total_keywords": 219,
"pos1": 2,
"top3": 7,
"top10": 35,
"top20": 85,
"avg_position": 26.99,
"total_traffic": 249
},
"history": [
{
"date": "2025-12-01",
"total_keywords": 200,
"keywords_pos1": 1,
"keywords_top3": 5,
"keywords_top10": 30,
"keywords_top20": 75,
"avg_position": 28.5,
"total_traffic": 220
}
]
}
}
GET /api/domains/{id}/seo/keyword-history
Parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
| keyword | string | - | Required Keyword to track |
| days | integer | 90 | Time period (max 365) |
Response
{
"success": true,
"data": {
"keyword": "target keyword",
"current": {
"id": 123,
"keyword": "target keyword",
"url": "https://example.com/page",
"position": 5,
"previous_position": 7,
"search_volume": 2400,
"estimated_traffic": 300
},
"history": [
{
"date": "2025-10-01",
"position": 12,
"url": "https://example.com/page",
"search_volume": 2400,
"estimated_traffic": 100
}
]
}
}
SERP Data
GET /api/serp
Parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
| keyword | string | - | Required Keyword to search |
| location | string | fr | Country code (fr, us, uk, etc.) |
Response
{
"success": true,
"data": [
{
"position": 1,
"url": "https://result1.com/page",
"title": "Page Title",
"description": "Meta description..."
},
{
"position": 2,
"url": "https://result2.com/page",
"title": "Page Title 2",
"description": "Meta description..."
}
]
}
GET /api/domains/{id}/seo/serps
Parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
| position_max | integer | 10 | Only keywords in top N positions (max 100) |
| limit | integer | 20 | Max keywords to check (max 50) |
| location | string | fr | Country code |
Response
{
"success": true,
"data": {
"domain": "example.com",
"count": 15,
"position_max": 10,
"location": "fr",
"serps": [
{
"keyword": "keyword 1",
"our_position": 3,
"our_url": "https://example.com/page1",
"search_volume": 2400,
"estimated_traffic": 400,
"serp": [
{"position": 1, "url": "https://competitor1.com/..."},
{"position": 2, "url": "https://competitor2.com/..."},
{"position": 3, "url": "https://example.com/page1"}
]
}
],
"errors": []
}
}
Site Audits
GET /api/audit/quick
Fast audit with essential checks - ideal for prospects.
Parameters
| Parameter | Type | Description |
|---|---|---|
| url | string | Required Website URL to audit |
Response
{
"success": true,
"data": {
"url": "https://example.com",
"type": "quick",
"timestamp": "2025-12-30T15:00:00+01:00",
"score": 96,
"max_score": 100,
"grade": "A",
"duration_ms": 691,
"summary": {
"passed": 6,
"warnings": 0,
"failed": 0,
"total_issues": 1
},
"checks": {
"ssl": {
"score": 100,
"status": "pass",
"https": true,
"issues": []
},
"performance": {
"score": 100,
"status": "pass",
"load_time_ms": 450,
"page_size_kb": 256,
"compressed": true,
"issues": []
},
"seo": {
"score": 85,
"status": "pass",
"data": {
"title": "Example Site - Homepage",
"description": "This is the meta description...",
"h1": "Welcome to Example"
},
"issues": ["Title too short (35 chars)"]
},
"mobile": {
"score": 100,
"status": "pass",
"has_viewport": true,
"mobile_optimized": true
},
"social": {
"score": 100,
"status": "pass",
"data": {
"og_title": "Example Site",
"og_image": "https://example.com/image.jpg",
"twitter_card": "summary_large_image"
}
},
"security": {
"score": 100,
"status": "pass",
"headers": {
"x-frame-options": "DENY",
"x-content-type-options": "nosniff"
}
}
}
}
}
GET /api/audit/full
Comprehensive audit with all checks.
Parameters
| Parameter | Type | Description |
|---|---|---|
| url | string | Required Website URL to audit |
GET /api/audit/history
Parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
| url | string | - | Required Website URL |
| limit | integer | 10 | Max results (max 50) |
Response
{
"success": true,
"data": {
"url": "https://example.com",
"count": 5,
"history": [
{
"id": 10,
"url": "https://example.com",
"type": "full",
"score": 91,
"grade": "A",
"summary": {"passed": 9, "warnings": 1, "failed": 0},
"duration_ms": 2458,
"created_at": "2025-12-30 15:31:59"
}
]
}
}
GET /api/domains/{id}/audit/quick
Same as /api/audit/quick but uses domain URL from database.
GET /api/domains/{id}/audit/full
Same as /api/audit/full but uses domain URL from database.
Error Handling
| Code | Meaning |
|---|---|
| 400 | Bad Request - Missing or invalid parameters |
| 401 | Unauthorized - Missing or invalid API key |
| 403 | Forbidden - No permission for resource |
| 404 | Not Found - Resource not found |
| 429 | Rate Limit Exceeded - Too many requests |
| 500 | Server Error - Internal server error |
{
"success": false,
"message": "Error message here",
"code": 400
}