Authentication
🔒 Session-Based Auth
All API endpoints require authentication via an HTTP-only session cookie. First call POST /api/auth/login to establish a session, then include credentials in subsequent requests.
Base URL
https://orionapps.org/api
Authentication Endpoints
Create a new account. Returns user object on success.
| Parameter | Type | Description |
|---|---|---|
email | string | User email address |
password | string | Password (min 8 characters) |
Response
{
"id": "uuid",
"email": "[email protected]",
"plan": "starter"
}
Authenticate and establish a session. Sets HTTP-only cookie.
| Parameter | Type | Description |
|---|---|---|
email | string | User email |
password | string | User password |
Get current authenticated user. Returns 401 if not logged in.
Clear session and log out.
Endpoint Management
List all monitored endpoints for the authenticated user.
Response
[
{
"id": "uuid",
"url": "https://example.com",
"name": "Production API",
"check_interval": 300,
"failure_threshold": 2,
"cooldown_minutes": 30,
"is_active": true,
"last_status": "up",
"uptime_24h": 99.95
}
]
Add a new endpoint to monitor.
| Parameter | Type | Default | Description |
|---|---|---|---|
url | string | required | URL to monitor |
name | string | null | Display name |
check_interval | integer | 300 | Seconds between checks |
failure_threshold | integer | 2 | Failures before alert |
cooldown_minutes | integer | 30 | Minutes between alerts |
Import multiple endpoints at once via CSV-like format.
| Parameter | Type | Description |
|---|---|---|
endpoints | array | Array of endpoint objects |
Update endpoint settings. Only provided fields are updated.
Soft delete an endpoint (stops monitoring).
Incidents
List recent incidents. Supports pagination via query params.
| Query Param | Type | Default | Description |
|---|---|---|---|
limit | integer | 20 | Max results |
status | string | all | Filter: open, resolved |
Get single incident details with notes.
Add a note to an incident.
| Parameter | Type | Description |
|---|---|---|
note_text | string | Note content |
is_public | boolean | Show on status page |
Checks History
Get check history for an endpoint.
| Query Param | Type | Description |
|---|---|---|
endpoint_id | uuid | Filter by endpoint |
limit | integer | Max results (default 100) |
Response
[
{
"id": 12345,
"endpoint_id": "uuid",
"ok": true,
"status_code": 200,
"latency_ms": 145,
"checked_at": "2026-03-01T00:00:00Z"
}
]
Alert Settings
Get current alert configuration.
Response
{
"telegram_enabled": true,
"email_enabled": false,
"webhook_enabled": false,
"webhook_url": null,
"quiet_hours_start": null,
"quiet_hours_end": null,
"timezone": "UTC"
}
Update alert settings. Supports Telegram, email, and webhook notifications.
| Parameter | Type | Description |
|---|---|---|
telegram_enabled | boolean | Enable Telegram alerts |
email_enabled | boolean | Enable email alerts (Pro+) |
webhook_enabled | boolean | Enable webhook alerts (Business) |
webhook_url | string | Slack/Discord/Custom webhook URL |
quiet_hours_start | integer | Start hour (0-23) |
quiet_hours_end | integer | End hour (0-23) |
timezone | string | IANA timezone |
Status Page
Enable public status page. Returns unique status page ID.
Get status page branding settings.
Customize status page branding.
| Parameter | Type | Description |
|---|---|---|
title | string | Page title (max 100 chars) |
logo_url | string | Logo image URL |
accent_color | string | Hex color (e.g., #3b82f6) |
Public API
Public endpoints don't require authentication and can be used to display status on external sites.
Get public status data for a status page. No auth required.
Response
{
"branding": {
"title": "System Status",
"logo_url": null,
"accent_color": "#3b82f6"
},
"endpoints": [
{
"name": "API",
"url": "https://api.example.com",
"last_check_ok": true
}
],
"incidents": [],
"uptime_30d": "99.95"
}
Get single incident with public notes only.
Error Responses
All errors follow a consistent format:
{
"error": "Error message",
"code": "ERROR_CODE" // optional
}
Common Status Codes
| Code | Meaning |
|---|---|
| 400 | Bad request - invalid parameters |
| 401 | Unauthorized - login required |
| 403 | Forbidden - plan limit or permission |
| 404 | Not found |
| 429 | Rate limited |
| 500 | Server error |
Rate Limits
API requests are rate-limited per endpoint:
- Auth endpoints: 10 requests/minute
- General API: 100 requests/minute
Rate limit headers are included in responses:
X-RateLimit-Limit: 100
X-RateLimit-Remaining: 95
X-RateLimit-Reset: 1709251200
SDK & Libraries
Official SDKs coming soon. In the meantime, use fetch with credentials:
// JavaScript example
const response = await fetch('https://orionapps.org/api/endpoints', {
credentials: 'include'
});
const endpoints = await response.json();
Need Help?
Contact us at [email protected] for API support.