Loading
Loading...
Please wait while we prepare your content
Loading...
Please wait while we prepare your content
Complete API reference for PingBuoy monitoring service
The PingBuoy API allows you to programmatically manage your website monitoring, alerts, and integrations. Our REST API uses standard HTTP methods and returns JSON responses.
https://pingbuoy.com/apiThe API uses different naming conventions for different resource types:
snake_caseUsed for Sites/Monitoring endpoints (matches database schema): last_checked, created_at, user_idcamelCaseUsed for Integrations/API Keys endpoints (JavaScript-friendly): lastUsed, createdAt, totalRequestsThis intentional design provides optimal ergonomics for each API context while maintaining consistency within each resource type.
PingBuoy uses API keys for authentication. Include your API key in the Authorization header of all requests.
Keep your API keys secure and never expose them in client-side code. Rotate keys regularly for enhanced security.
Generate API keys in your dashboard integrations page.
API requests are rate limited per operation type to ensure system stability and fair usage.
| Operation | Rate Limit |
|---|---|
| Site creation/deletion | 10 per hour |
| Integration operations | 20 per hour |
| Manual monitoring triggers | 10 per hour |
| Data exports | 3 per hour |
All API responses include rate limit information in headers:
When rate limited, the API returns HTTP 429 with a Retry-After header indicating seconds until reset.
Retrieve all monitored sites
| Name | Type | Required | Description |
|---|---|---|---|
| status | string | Optional | Filter by status (up, down, unknown) |
[
{
"id": "uuid",
"name": "My Website",
"url": "https://example.com",
"type": "website",
"status": "up",
"last_checked": "2025-01-15T10:30:00Z",
"created_at": "2025-01-01T00:00:00Z",
"user_id": "uuid",
"is_active": true
}
]Add a new site to monitor
| Name | Type | Required | Description |
|---|---|---|---|
| name | string | Required | Site display name (max 100 chars) |
| url | string | Required | Site URL to monitor (must be valid URL) |
| type | string | Optional | Site type: "website" or "api_endpoint" (default: "website") |
{
"id": "uuid",
"name": "My Website",
"url": "https://example.com",
"type": "website",
"status": "unknown",
"user_id": "uuid",
"is_active": true,
"created_at": "2025-01-15T10:30:00Z",
"last_checked": null
}Remove a site from monitoring
| Name | Type | Required | Description |
|---|---|---|---|
| id | string | Required | Site UUID (query parameter) |
{
"success": true
}Manually trigger a monitoring check for a site
| Name | Type | Required | Description |
|---|---|---|---|
| action | string | Required | Check type: "uptime", "pagespeed", or "deadlinks" |
| siteId | string | Required | Site UUID to check |
{
"success": true,
"site": {
"id": "uuid",
"name": "My Website",
"url": "https://example.com"
},
"result": {
"type": "uptime",
"status": "up",
"responseTime": 234,
"statusCode": 200,
"sslValid": true
}
}Get all your integrations (Slack, Discord, Webhooks)
[
{
"id": "uuid",
"name": "Slack Alerts",
"type": "slack",
"status": "active",
"config": {
"events": ["downtime", "recovery"]
},
"lastTest": "2025-01-15T10:30:00Z",
"lastTestStatus": "success",
"totalNotifications": 42
}
]Create a new integration
| Name | Type | Required | Description |
|---|---|---|---|
| name | string | Required | Integration name (max 100 chars) |
| integration_type | string | Required | Type: slack, discord, or webhook |
| webhook_url | string | Required | Webhook URL (must be valid URL format) |
| events | array | Optional | Events to monitor (downtime, recovery, page_speed, ssl_expiration, dead_links (default: all events)) |
{
"success": true,
"integration": {
"id": "uuid",
"name": "My Slack Integration",
"type": "slack",
"status": "active",
"config": {
"events": ["downtime", "recovery", "ssl_expiry"]
}
}
}Delete an integration
| Name | Type | Required | Description |
|---|---|---|---|
| id | string | Required | Integration UUID (query parameter) |
{
"success": true
}Get all your API keys
[
{
"id": "uuid",
"name": "Production API Key",
"prefix": "pb_12345",
"permissions": ["read", "write"],
"status": "active",
"totalRequests": 1234,
"lastUsed": "2025-01-15T10:30:00Z",
"createdAt": "2025-01-01T00:00:00Z"
}
]Generate a new API key
| Name | Type | Required | Description |
|---|---|---|---|
| name | string | Required | API key name (max 100 chars) |
| permissions | array | Required | Array of permissions (at least 1 required): ["read"], ["read", "write"], or ["read", "write", "admin"] |
{
"success": true,
"key": "pb_a1b2c3d4e5f6789012345678901234567890abcdef1234567890abcdef12345",
"apiKey": {
"id": "uuid",
"name": "My API Key",
"prefix": "pb_12345",
"permissions": ["read", "write"],
"status": "active"
}
}Revoke an API key
| Name | Type | Required | Description |
|---|---|---|---|
| id | string | Required | API key UUID (query parameter) |
{
"success": true
}Webhooks allow you to receive real-time notifications when incidents occur. PingBuoy will send HTTP POST requests to your configured endpoints.
PingBuoy sends webhooks for the following event types:
Webhook requests include a signature header for verification:
The API uses standard HTTP status codes and returns error details in JSON format.
200Success400Bad Request401Unauthorized403Forbidden404Not Found429Rate Limited500Server ErrorSDK Coming Soon! We're currently publishing our official SDK to npm. Check back in 24 hours!
Official SDKs and community libraries to integrate PingBuoy into your applications.
If you have questions about the API or need assistance with integration, our support team is here to help.