/api/v1/health
Check if the Hub is online. No authentication required.
{
"status": "ok",
"service": "Erodea Hub",
"version": "1.0.0",
"timestamp": "2026-02-23T10:00:00+00:00"
}
Welcome to the Erodea Hub API. This API allows your external platforms to communicate with the hub for user synchronization, logging, status checks, and security verification.
https://hub.eordea.it/api/v1
API keys are unique tokens used to authenticate requests from your external platforms to the Erodea Hub. Each platform can have multiple API keys with different permissions and rate limits.
ero_ followed by a 64-character hex stringhub.eordea.itAll API requests (except /health) must include a valid API key. You can provide it in two ways:
Authorization: Bearer ero_your_api_key_here
X-API-Key: ero_your_api_key_here
/api/v1/health
Check if the Hub is online. No authentication required.
{
"status": "ok",
"service": "Erodea Hub",
"version": "1.0.0",
"timestamp": "2026-02-23T10:00:00+00:00"
}
/api/v1/status
Get current status and settings of your platform.
{
"platform": "My App",
"slug": "my-app",
"is_active": true,
"maintenance_mode": false,
"block_registrations": false,
"require_verification": true,
"synced_users": 1523
}
/api/v1/sync-user
Sync a single user from your platform. Creates or updates.
Permission required: sync_users
{
"external_id": "usr_12345",
"username": "john_doe",
"email": "john@example.com",
"nickname": "Johnny",
"account_type": "premium",
"is_verified": true,
"metadata": {"plan": "pro", "region": "EU"},
"cookie_accepted_at": "2026-01-15T08:30:00"
}
{
"success": true,
"action": "created",
"external_id": "usr_12345",
"synced_at": "2026-02-23T10:05:00+00:00"
}
/api/v1/sync-users
Batch sync up to 100 users at once.
{
"users": [
{"external_id": "1", "username": "alice", "email": "alice@ex.com"},
{"external_id": "2", "username": "bob", "email": "bob@ex.com"}
]
}
/api/v1/log
Send a custom log entry from your platform.
Permission required: send_logs
{
"method": "POST",
"endpoint": "/users/register",
"ip_address": "203.0.113.50",
"status_code": 201,
"message": "New user registered",
"response_time_ms": 145.3
}
/api/v1/report-user
Submit a user report/flag.
{
"external_user_id": "usr_99",
"reporter_id": "usr_10",
"report_type": "spam",
"description": "Sending unsolicited messages"
}
/api/v1/check-ip?ip=203.0.113.50
Check if an IP is banned globally or for your platform.
{
"ip": "203.0.113.50",
"is_banned_global": false,
"is_banned_platform": true,
"is_banned": true
}
| Code | Meaning | Description |
|---|---|---|
AUTH_MISSING | 401 | No API key provided in headers |
AUTH_INVALID | 401 | API key does not match any active key |
AUTH_REVOKED | 401 | API key has been revoked |
IP_BANNED | 403 | IP is globally banned |
IP_BANNED_PLATFORM | 403 | IP is banned for this platform |
PLATFORM_SUSPENDED | 403 | Platform is suspended or inactive |
PERM_DENIED | 403 | API key lacks required permission |
RATE_LIMIT | 429 | Too many requests for this key |
MAINTENANCE | 503 | Platform is in maintenance mode |
INVALID_BODY | 400 | Invalid or missing JSON body |
MISSING_FIELD | 400 | Required field missing |
import requests
API_KEY = "ero_your_key_here"
BASE = "https://hub.eordea.it/api/v1"
headers = {"Authorization": f"Bearer {API_KEY}", "Content-Type": "application/json"}
# Sync a user
resp = requests.post(f"{BASE}/sync-user", json={
"external_id": "12345",
"username": "mario_rossi",
"email": "mario@example.com",
"is_verified": True
}, headers=headers)
print(resp.json())
const API_KEY = 'ero_your_key_here';
const BASE = 'https://hub.eordea.it/api/v1';
const response = await fetch(`${BASE}/sync-user`, {
method: 'POST',
headers: {
'Authorization': `Bearer ${API_KEY}`,
'Content-Type': 'application/json'
},
body: JSON.stringify({
external_id: '12345',
username: 'mario_rossi',
email: 'mario@example.com',
is_verified: true
})
});
const data = await response.json();
console.log(data);
curl -X POST https://hub.eordea.it/api/v1/sync-user \
-H "Authorization: Bearer ero_your_key_here" \
-H "Content-Type: application/json" \
-d '{"external_id":"12345","username":"mario_rossi","email":"mario@example.com"}'
$apiKey = 'ero_your_key_here';
$url = 'https://hub.eordea.it/api/v1/sync-user';
$ch = curl_init($url);
curl_setopt_array($ch, [
CURLOPT_POST => true,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => [
"Authorization: Bearer $apiKey",
"Content-Type: application/json"
],
CURLOPT_POSTFIELDS => json_encode([
'external_id' => '12345',
'username' => 'mario_rossi',
'email' => 'mario@example.com'
])
]);
$response = curl_exec($ch);
echo $response;