appgram / docs
Dashboard

API REFERENCE

Service Monitoring

Uptime and performance monitors driving the status page.

v1.0
18 endpoints Authentication →

monitors

List monitors

GET /api/v1/monitors

Authorizations

Authorization string header required

Bearer token — an API key prefixed with app_. Create one in the dashboard under Settings → Developer → API Keys.

Query parameters

status_page_id string query required

Status page ID

GET /api/v1/monitors bash
curl --request GET \
  --url https://api.appgram.dev/api/v1/monitors \
  --header 'Authorization: Bearer <token>'
Response · 200 json
[
  {
    "auto_create_incident": true,
    "check_interval_seconds": 0,
    "check_regions": [
      "string"
    ],
    "consecutive_failures": 0,
    "consecutive_successes": 0,
    "created_at": "string",
    "current_response_time_ms": 0,
    "degraded_response_time_ms": 0,
    "description": "string",
    "expected_response_contains": "string",
    "expected_status_codes": [
      0
    ],
    "failure_threshold": 0,
    "http_body": "string",
    "http_method": "string",
    "id": "string",
    "incident_severity": "string",
    "is_active": true,
    "last_check_at": "string",
    "last_down_at": "string",
    "last_status_change_at": "string",
    "last_up_at": "string",
    "monitor_type": "http",
    "name": "string",
    "notify_on_failure": true,
    "notify_on_recovery": true,
    "recovery_threshold": 0,
    "service_id": "string",
    "ssl_expiry_warning_days": 0,
    "status_page_id": "string",
    "timeout_seconds": 0,
    "updated_at": "string",
    "url": "string",
    "verify_ssl": true
  }
]

monitors

Create a new monitor

POST /api/v1/monitors

Authorizations

Authorization string header required

Bearer token — an API key prefixed with app_. Create one in the dashboard under Settings → Developer → API Keys.

Body

application/json
auto_create_incident boolean
check_interval_seconds integer
check_regions array
degraded_response_time_ms integer
description string
expected_response_contains string
expected_status_codes array
failure_threshold integer
http_body string
http_headers object
http_method string
incident_severity string
monitor_type string required
name string required
notify_on_failure boolean
notify_on_recovery boolean
recovery_threshold integer
service_id string
ssl_expiry_warning_days integer
status_page_id string required
timeout_seconds integer
url string required
verify_ssl boolean
POST /api/v1/monitors bash
curl --request POST \
  --url https://api.appgram.dev/api/v1/monitors \
  --header 'Authorization: Bearer <token>' \
  --header 'Content-Type: application/json' \
  --data '{
  "auto_create_incident": true,
  "check_interval_seconds": 0,
  "check_regions": [
    "string"
  ],
  "degraded_response_time_ms": 0,
  "description": "string",
  "expected_response_contains": "string",
  "expected_status_codes": [
    0
  ],
  "failure_threshold": 0,
  "http_body": "string",
  "http_method": "string",
  "incident_severity": "string",
  "monitor_type": "string",
  "name": "string",
  "notify_on_failure": true,
  "notify_on_recovery": true,
  "recovery_threshold": 0,
  "service_id": "string",
  "ssl_expiry_warning_days": 0,
  "status_page_id": "string",
  "timeout_seconds": 0,
  "url": "string",
  "verify_ssl": true
}'
Response · 201 json
{
  "auto_create_incident": true,
  "check_interval_seconds": 0,
  "check_regions": [
    "string"
  ],
  "consecutive_failures": 0,
  "consecutive_successes": 0,
  "created_at": "string",
  "current_response_time_ms": 0,
  "degraded_response_time_ms": 0,
  "description": "string",
  "expected_response_contains": "string",
  "expected_status_codes": [
    0
  ],
  "failure_threshold": 0,
  "http_body": "string",
  "http_method": "string",
  "id": "string",
  "incident_severity": "string",
  "is_active": true,
  "last_check_at": "string",
  "last_down_at": "string",
  "last_status_change_at": "string",
  "last_up_at": "string",
  "monitor_type": "http",
  "name": "string",
  "notify_on_failure": true,
  "notify_on_recovery": true,
  "recovery_threshold": 0,
  "service_id": "string",
  "ssl_expiry_warning_days": 0,
  "status_page_id": "string",
  "timeout_seconds": 0,
  "updated_at": "string",
  "url": "string",
  "verify_ssl": true
}

monitors

Create maintenance window

POST /api/v1/monitors/maintenance

Authorizations

Authorization string header required

Bearer token — an API key prefixed with app_. Create one in the dashboard under Settings → Developer → API Keys.

Body

application/json
description string
ends_at string required
is_recurring boolean
monitor_id string
name string required
recurrence_rule string
starts_at string required
status_page_id string
POST /api/v1/monitors/maintenance bash
curl --request POST \
  --url https://api.appgram.dev/api/v1/monitors/maintenance \
  --header 'Authorization: Bearer <token>' \
  --header 'Content-Type: application/json' \
  --data '{
  "description": "string",
  "ends_at": "string",
  "is_recurring": true,
  "monitor_id": "string",
  "name": "string",
  "recurrence_rule": "string",
  "starts_at": "string",
  "status_page_id": "string"
}'
Response · 201 json
{
  "created_at": "string",
  "created_by_user_id": "string",
  "description": "string",
  "ends_at": "string",
  "id": "string",
  "is_active": true,
  "is_recurring": true,
  "monitor_id": "string",
  "name": "string",
  "recurrence_rule": "string",
  "starts_at": "string",
  "status_page_id": "string",
  "updated_at": "string"
}

monitors

Get public monitor status

GET /api/v1/monitors/public/{status_page_id}/status

Path parameters

status_page_id string path required

Status page ID

GET /api/v1/monitors/public/{status_page_id}/status bash
curl --request GET \
  --url https://api.appgram.dev/api/v1/monitors/public/{status_page_id}/status
Response · 200 json
[
  {
    "id": "string",
    "last_check_at": "string",
    "name": "string",
    "response_time_ms": 0,
    "status": "up",
    "uptime_percent": 0
  }
]

monitors

Get public monitor uptime

GET /api/v1/monitors/public/{status_page_id}/uptime

Path parameters

status_page_id string path required

Status page ID

GET /api/v1/monitors/public/{status_page_id}/uptime bash
curl --request GET \
  --url https://api.appgram.dev/api/v1/monitors/public/{status_page_id}/uptime

monitors

Get scheduler status

GET /api/v1/monitors/scheduler/status

Authorizations

Authorization string header required

Bearer token — an API key prefixed with app_. Create one in the dashboard under Settings → Developer → API Keys.

GET /api/v1/monitors/scheduler/status bash
curl --request GET \
  --url https://api.appgram.dev/api/v1/monitors/scheduler/status \
  --header 'Authorization: Bearer <token>'

monitors

Get a monitor

GET /api/v1/monitors/{id}

Authorizations

Authorization string header required

Bearer token — an API key prefixed with app_. Create one in the dashboard under Settings → Developer → API Keys.

Path parameters

id string path required

Monitor ID

GET /api/v1/monitors/{id} bash
curl --request GET \
  --url https://api.appgram.dev/api/v1/monitors/{id} \
  --header 'Authorization: Bearer <token>'
Response · 200 json
{
  "auto_create_incident": true,
  "check_interval_seconds": 0,
  "check_regions": [
    "string"
  ],
  "consecutive_failures": 0,
  "consecutive_successes": 0,
  "created_at": "string",
  "current_response_time_ms": 0,
  "degraded_response_time_ms": 0,
  "description": "string",
  "expected_response_contains": "string",
  "expected_status_codes": [
    0
  ],
  "failure_threshold": 0,
  "http_body": "string",
  "http_method": "string",
  "id": "string",
  "incident_severity": "string",
  "is_active": true,
  "last_check_at": "string",
  "last_down_at": "string",
  "last_status_change_at": "string",
  "last_up_at": "string",
  "monitor_type": "http",
  "name": "string",
  "notify_on_failure": true,
  "notify_on_recovery": true,
  "recovery_threshold": 0,
  "service_id": "string",
  "ssl_expiry_warning_days": 0,
  "status_page_id": "string",
  "timeout_seconds": 0,
  "updated_at": "string",
  "url": "string",
  "verify_ssl": true
}

monitors

Delete a monitor

DELETE /api/v1/monitors/{id}

Authorizations

Authorization string header required

Bearer token — an API key prefixed with app_. Create one in the dashboard under Settings → Developer → API Keys.

Path parameters

id string path required

Monitor ID

DELETE /api/v1/monitors/{id} bash
curl --request DELETE \
  --url https://api.appgram.dev/api/v1/monitors/{id} \
  --header 'Authorization: Bearer <token>'

monitors

Update a monitor

PATCH /api/v1/monitors/{id}

Authorizations

Authorization string header required

Bearer token — an API key prefixed with app_. Create one in the dashboard under Settings → Developer → API Keys.

Path parameters

id string path required

Monitor ID

Body

application/json
auto_create_incident boolean
check_interval_seconds integer
check_regions array
degraded_response_time_ms integer
description string
expected_response_contains string
expected_status_codes array
failure_threshold integer
http_body string
http_headers object
http_method string
incident_severity string
monitor_type string
name string
notify_on_failure boolean
notify_on_recovery boolean
recovery_threshold integer
service_id string
ssl_expiry_warning_days integer
timeout_seconds integer
url string
verify_ssl boolean
PATCH /api/v1/monitors/{id} bash
curl --request PATCH \
  --url https://api.appgram.dev/api/v1/monitors/{id} \
  --header 'Authorization: Bearer <token>' \
  --header 'Content-Type: application/json' \
  --data '{
  "auto_create_incident": true,
  "check_interval_seconds": 0,
  "check_regions": [
    "string"
  ],
  "degraded_response_time_ms": 0,
  "description": "string",
  "expected_response_contains": "string",
  "expected_status_codes": [
    0
  ],
  "failure_threshold": 0,
  "http_body": "string",
  "http_method": "string",
  "incident_severity": "string",
  "monitor_type": "string",
  "name": "string",
  "notify_on_failure": true,
  "notify_on_recovery": true,
  "recovery_threshold": 0,
  "service_id": "string",
  "ssl_expiry_warning_days": 0,
  "timeout_seconds": 0,
  "url": "string",
  "verify_ssl": true
}'
Response · 200 json
{
  "auto_create_incident": true,
  "check_interval_seconds": 0,
  "check_regions": [
    "string"
  ],
  "consecutive_failures": 0,
  "consecutive_successes": 0,
  "created_at": "string",
  "current_response_time_ms": 0,
  "degraded_response_time_ms": 0,
  "description": "string",
  "expected_response_contains": "string",
  "expected_status_codes": [
    0
  ],
  "failure_threshold": 0,
  "http_body": "string",
  "http_method": "string",
  "id": "string",
  "incident_severity": "string",
  "is_active": true,
  "last_check_at": "string",
  "last_down_at": "string",
  "last_status_change_at": "string",
  "last_up_at": "string",
  "monitor_type": "http",
  "name": "string",
  "notify_on_failure": true,
  "notify_on_recovery": true,
  "recovery_threshold": 0,
  "service_id": "string",
  "ssl_expiry_warning_days": 0,
  "status_page_id": "string",
  "timeout_seconds": 0,
  "updated_at": "string",
  "url": "string",
  "verify_ssl": true
}

monitors

Acknowledge an alert

POST /api/v1/monitors/{id}/alert/acknowledge

Authorizations

Authorization string header required

Bearer token — an API key prefixed with app_. Create one in the dashboard under Settings → Developer → API Keys.

Path parameters

id string path required

Monitor ID

Body

application/json
note string
POST /api/v1/monitors/{id}/alert/acknowledge bash
curl --request POST \
  --url https://api.appgram.dev/api/v1/monitors/{id}/alert/acknowledge \
  --header 'Authorization: Bearer <token>' \
  --header 'Content-Type: application/json' \
  --data '{
  "note": "string"
}'

monitors

Resolve an alert

POST /api/v1/monitors/{id}/alert/resolve

Authorizations

Authorization string header required

Bearer token — an API key prefixed with app_. Create one in the dashboard under Settings → Developer → API Keys.

Path parameters

id string path required

Monitor ID

Body

application/json
note string
reason string
POST /api/v1/monitors/{id}/alert/resolve bash
curl --request POST \
  --url https://api.appgram.dev/api/v1/monitors/{id}/alert/resolve \
  --header 'Authorization: Bearer <token>' \
  --header 'Content-Type: application/json' \
  --data '{
  "note": "string",
  "reason": "string"
}'

monitors

Check monitor now

POST /api/v1/monitors/{id}/check-now

Authorizations

Authorization string header required

Bearer token — an API key prefixed with app_. Create one in the dashboard under Settings → Developer → API Keys.

Path parameters

id string path required

Monitor ID

POST /api/v1/monitors/{id}/check-now bash
curl --request POST \
  --url https://api.appgram.dev/api/v1/monitors/{id}/check-now \
  --header 'Authorization: Bearer <token>'
Response · 200 json
{
  "checked_at": "string",
  "checked_from": "string",
  "dns_resolution_time_ms": 0,
  "dns_resolved_ips": [
    "string"
  ],
  "error_message": "string",
  "monitor_id": "string",
  "response_body": "string",
  "response_time_ms": 0,
  "ssl_days_until_expiry": 0,
  "ssl_expires_at": "string",
  "ssl_issuer": "string",
  "status": "up",
  "status_code": 0
}

monitors

Get monitor checks with pagination

GET /api/v1/monitors/{id}/checks

Authorizations

Authorization string header required

Bearer token — an API key prefixed with app_. Create one in the dashboard under Settings → Developer → API Keys.

Path parameters

id string path required

Monitor ID

Query parameters

page integer query

Page number (1-based)

per_page integer query

Items per page

GET /api/v1/monitors/{id}/checks bash
curl --request GET \
  --url https://api.appgram.dev/api/v1/monitors/{id}/checks \
  --header 'Authorization: Bearer <token>'

monitors

Get check history

GET /api/v1/monitors/{id}/history

Authorizations

Authorization string header required

Bearer token — an API key prefixed with app_. Create one in the dashboard under Settings → Developer → API Keys.

Path parameters

id string path required

Monitor ID

Query parameters

limit integer query

Limit

GET /api/v1/monitors/{id}/history bash
curl --request GET \
  --url https://api.appgram.dev/api/v1/monitors/{id}/history \
  --header 'Authorization: Bearer <token>'
Response · 200 json
[
  {
    "checked_at": "string",
    "checked_from": "string",
    "dns_resolution_time_ms": 0,
    "dns_resolved_ips": [
      "string"
    ],
    "error_message": "string",
    "monitor_id": "string",
    "response_body": "string",
    "response_time_ms": 0,
    "ssl_days_until_expiry": 0,
    "ssl_expires_at": "string",
    "ssl_issuer": "string",
    "status": "up",
    "status_code": 0
  }
]

monitors

Pause a monitor

POST /api/v1/monitors/{id}/pause

Authorizations

Authorization string header required

Bearer token — an API key prefixed with app_. Create one in the dashboard under Settings → Developer → API Keys.

Path parameters

id string path required

Monitor ID

POST /api/v1/monitors/{id}/pause bash
curl --request POST \
  --url https://api.appgram.dev/api/v1/monitors/{id}/pause \
  --header 'Authorization: Bearer <token>'

monitors

Get response time data

GET /api/v1/monitors/{id}/response-times

Authorizations

Authorization string header required

Bearer token — an API key prefixed with app_. Create one in the dashboard under Settings → Developer → API Keys.

Path parameters

id string path required

Monitor ID

Query parameters

start string query

Start time (RFC3339)

end string query

End time (RFC3339)

GET /api/v1/monitors/{id}/response-times bash
curl --request GET \
  --url https://api.appgram.dev/api/v1/monitors/{id}/response-times \
  --header 'Authorization: Bearer <token>'
Response · 200 json
[
  {
    "response_time_ms": 0,
    "status": "up",
    "timestamp": "string"
  }
]

monitors

Resume a monitor

POST /api/v1/monitors/{id}/resume

Authorizations

Authorization string header required

Bearer token — an API key prefixed with app_. Create one in the dashboard under Settings → Developer → API Keys.

Path parameters

id string path required

Monitor ID

POST /api/v1/monitors/{id}/resume bash
curl --request POST \
  --url https://api.appgram.dev/api/v1/monitors/{id}/resume \
  --header 'Authorization: Bearer <token>'

monitors

Get monitor uptime

GET /api/v1/monitors/{id}/uptime

Authorizations

Authorization string header required

Bearer token — an API key prefixed with app_. Create one in the dashboard under Settings → Developer → API Keys.

Path parameters

id string path required

Monitor ID

Query parameters

period string query

Period (24h, 7d, 30d, 90d)

GET /api/v1/monitors/{id}/uptime bash
curl --request GET \
  --url https://api.appgram.dev/api/v1/monitors/{id}/uptime \
  --header 'Authorization: Bearer <token>'
Response · 200 json
{
  "avg_response_time_ms": 0,
  "period": "string",
  "total_downtime_seconds": 0,
  "total_incidents": 0,
  "uptime_percentage": 0
}