Referencia de la API
Integra Nova Uptime en tu flujo de trabajo. Monitoriza dominios, rastrea cambios en URLs y comprueba la salud del email de forma programática.
Introduction
The Nova Uptime API gives you programmatic access to manage your uptime monitors, run email health checks, and retrieve incident history. All endpoints return JSON and follow RESTful conventions.
Base URL
https://api.novauptime.com/api/v1Response Format
All responses are wrapped in a standard envelope:
{
"success": true,
"data": { ... },
"message": "Optional status message"
}Pagination
List endpoints return paginated results with this structure:
"pagination": {
"total": 42,
"page": 1,
"limit": 10,
"totalPages": 5
}Authentication
All API requests require authentication via an API key. Pass your key in theX-API-Keyheader with every request.
curl https://api.novauptime.com/api/v1/domains \ -H "X-API-Key: YOUR_API_KEY"
Getting your API key
Go to Dashboard → Settings → API Key to generate your key. You can regenerate or delete it at any time.
API Access — All Plans
The public API is available on all plans, including Free. Plan limits (domain count, check interval, etc.) still apply.
Rate Limits
The API enforces per-user rate limits based on your plan. If you exceed the limit, you'll receive a 429 Too Many Requests response. Rate limit headers are included in every response:
X-RateLimit-Limit— your plan's maximum requests per windowX-RateLimit-Remaining— requests remaining in the current windowX-RateLimit-Reset— Unix timestamp when the window resets
| Plan | Limit | Window |
|---|---|---|
| Free | 20 requests | 1 minute |
| Pro | 100 requests | 1 minute |
| Agency | 500 requests | 1 minute |
Plan Limits
Resource limits depend on your subscription plan. When a limit is reached, create/add endpoints will return a 400 error with a descriptive message.
| Feature | Free | Pro ($99/yr) | Agency ($699/yr) |
|---|---|---|---|
| API Access | ✓ | ✓ | ✓ |
| Domain monitors | 5 | 100 | 1,000 |
| URL monitors | 5 | 100 | 1,000 |
| Min check interval (domains) | 15 min | 5 min | 59s |
| Min check interval (URLs) | 24h | 3h | 1h |
Limit Exceeded Example
{
"success": false,
"message": "Maximum domain limit (100) reached. Upgrade your plan to add more domains."
}Dashboard & Status
Get an overview of all monitored resources and recent incidents.
Status Overview
Get a summary of all your monitored domains and URLs, including counts by state and plan usage.
Notes
- •Returns aggregate counts across all your monitored resources.
Recent Incidents
Get a list of recent downtime incidents across all your monitored domains.
Query Parameters
| Name | Type | Description |
|---|---|---|
limit | integer | Max number of incidents (1-50)(default: 10) |
Notes
- •Incidents are sorted by most recent first.
- •Only includes incidents from domains you own.
Domains
Monitor website uptime, SSL certificates, domain expiry, and email health.
List Domains
Retrieve a paginated list of your monitored domains with current status, SSL info, and email health grades.
Query Parameters
| Name | Type | Description |
|---|---|---|
page | integer | Page number(default: 1) |
limit | integer | Items per page (1-50)(default: 10) |
Notes
- •Results are sorted by creation date (newest first)
- •Only active (non-deleted) domains are returned
Get Domain
Retrieve detailed information about a specific domain including SSL, redirect detection, and monitoring config.
Path Parameters
| Name | Type | Description |
|---|---|---|
idrequired | string | The domain ID |
Error Responses
Add Domain
Add a new domain to monitor. Monitoring starts immediately with an initial health check. URL is automatically normalized (https:// prefix added if missing).
Body Parameters
| Name | Type | Description |
|---|---|---|
urlrequired | string | Domain URL to monitor (e.g., "example.com" or "https://fliplink.me") |
name | string | Friendly display name |
checkInterval | integer | Check interval in seconds. Minimum depends on plan: Free=900, Pro=300, Agency=59(default: 300) |
timeout | integer | Request timeout in seconds (5-30). Must be less than checkInterval(default: 30) |
Plan Limits
Domain limit depends on plan: Free=5, Pro=100, Agency=1000. Check interval minimum: Free=15min, Pro=5min, Agency=59s.
Error Responses
Delete Domain
Remove a domain from monitoring (soft delete). The domain data is retained but monitoring stops.
Path Parameters
| Name | Type | Description |
|---|---|---|
idrequired | string | The domain ID to delete |
Error Responses
Get Domain Incidents
Retrieve the last 20 incidents (downtime events) for a domain, including trigger/resolution status codes and screenshot URLs.
Path Parameters
| Name | Type | Description |
|---|---|---|
idrequired | string | The domain ID |
Error Responses
Notes
- •Returns up to 20 most recent incidents
- •Screenshot URLs may be null if screenshots are disabled
Get Check History
Retrieve health check history for a domain within a configurable time window. Returns up to 500 records.
Path Parameters
| Name | Type | Description |
|---|---|---|
idrequired | string | The domain ID |
Query Parameters
| Name | Type | Description |
|---|---|---|
hours | integer | Hours of history to fetch (1-720)(default: 24) |
Error Responses
Notes
- •Maximum 720 hours (30 days)
- •Maximum 500 records per request
- •Sorted newest first
Update Domain
Update monitoring settings for an existing domain.
Path Parameters
| Name | Type | Description |
|---|---|---|
idrequired | string | Domain ID |
Body Parameters
| Name | Type | Description |
|---|---|---|
name | string | Display name |
checkInterval | integer | Check interval in seconds (59-86400) |
timeoutSeconds | integer | Timeout in seconds (5-30) |
ccEmails | string[] | CC email addresses for alerts |
screenshotOnFailure | boolean | Capture screenshot on failure |
emailHealthInterval | integer | Email health check interval (seconds) |
cardColor | string | Card color hex code |
Notes
- •Only provided fields are updated.
- •Check interval must be >= your plan minimum.
Pause Domain Monitoring
Temporarily pause monitoring for a domain. No health checks or alerts while paused.
Path Parameters
| Name | Type | Description |
|---|---|---|
idrequired | string | Domain ID |
Notes
- •Monitoring is immediately paused.
- •Use Resume to restart monitoring.
Resume Domain Monitoring
Resume monitoring for a previously paused domain.
Path Parameters
| Name | Type | Description |
|---|---|---|
idrequired | string | Domain ID |
Notes
- •The domain state resets to unknown until the next check completes.
Domain Email Health Check
Run an email health check for a specific monitored domain (MX, SPF, DKIM, DMARC, Blacklist).
Path Parameters
| Name | Type | Description |
|---|---|---|
idrequired | string | Domain ID |
Query Parameters
| Name | Type | Description |
|---|---|---|
fresh | boolean | Skip cache and run fresh check(default: false) |
Notes
- •Results are cached for 1 hour unless fresh=true is specified.
Bulk Update Domains
Update monitoring settings for multiple domains at once. Only provided fields are changed.
Body Parameters
| Name | Type | Description |
|---|---|---|
domainIdsrequired | string[] | Array of domain IDs to update |
updatesrequired | object | Fields to update (checkInterval, timeoutSeconds, etc.) |
Notes
- •Domains are processed in chunks of 50.
- •Partial failures are reported in the errors array.
Bulk Delete Domains
Delete multiple monitored domains at once. Requires confirmation string.
Body Parameters
| Name | Type | Description |
|---|---|---|
domainIdsrequired | string[] | Array of domain IDs to delete |
confirmationrequired | string | Must be exactly "DELETE" |
Notes
- •This is a soft delete — domains are marked inactive.
- •Monitoring is immediately stopped for deleted domains.
Tags
Organize domains into folders/tags for easy management and filtering.
Create Tag
Create a new tag for organizing domains.
Body Parameters
| Name | Type | Description |
|---|---|---|
namerequired | string | Tag name (unique per account) |
color | string | Hex color code(default: #6B7280) |
Notes
- •Tag names must be unique within your account.
Update Tag
Update an existing tag name, color, or sort order.
Path Parameters
| Name | Type | Description |
|---|---|---|
idrequired | string | Tag ID |
Body Parameters
| Name | Type | Description |
|---|---|---|
name | string | New tag name |
color | string | New hex color code |
sortOrder | integer | Display order |
Delete Tag
Delete a tag. Domains are unlinked but not deleted.
Path Parameters
| Name | Type | Description |
|---|---|---|
idrequired | string | Tag ID |
Notes
- •Deleting a tag removes it from all domains but does not delete the domains.
URL Monitoring
Monitor specific URLs for uptime, content changes, and capture screenshots.
List URLs
Retrieve a paginated list of your monitored URLs with current status and check configuration.
Query Parameters
| Name | Type | Description |
|---|---|---|
page | integer | Page number(default: 1) |
limit | integer | Items per page (1-50)(default: 10) |
Notes
- •URL states: active (green), changed (amber), error (red), unknown (gray)
Get URL
Retrieve detailed information about a specific monitored URL.
Path Parameters
| Name | Type | Description |
|---|---|---|
idrequired | string | The URL monitor ID |
Error Responses
Add URL
Add a new URL to monitor. Monitoring starts immediately. URL is normalized with https:// prefix if missing.
Body Parameters
| Name | Type | Description |
|---|---|---|
urlrequired | string | URL to monitor (e.g., "https://example.com/status") |
name | string | Friendly display name |
checkInterval | integer | Check interval in seconds. Min depends on plan: Free=86400, Pro=10800, Agency=3600(default: 86400) |
Plan Limits
URL limit depends on plan: Free=5, Pro=100, Agency=1000. Check interval minimum: Free=24h, Pro=3h, Agency=1h.
Error Responses
Delete URL
Remove a URL from monitoring (soft delete). Monitoring stops immediately.
Path Parameters
| Name | Type | Description |
|---|---|---|
idrequired | string | The URL monitor ID to delete |
Error Responses
Check URL Now
Trigger an immediate check for a monitored URL. Runs the check without waiting for the next scheduled interval. Rate limited to one check every 30 seconds.
Path Parameters
| Name | Type | Description |
|---|---|---|
idrequired | string | The URL monitor ID to check |
Error Responses
Get Content Changes
Retrieve content change history for a monitored URL. Each entry includes a diff summary and change count.
Path Parameters
| Name | Type | Description |
|---|---|---|
idrequired | string | The URL monitor ID |
Query Parameters
| Name | Type | Description |
|---|---|---|
limit | integer | Number of records (1-50)(default: 20) |
Error Responses
Get Screenshots
Retrieve screenshot history for a monitored URL. Screenshots are captured at configurable intervals.
Path Parameters
| Name | Type | Description |
|---|---|---|
idrequired | string | The URL monitor ID |
Query Parameters
| Name | Type | Description |
|---|---|---|
limit | integer | Number of records (1-50)(default: 20) |
Error Responses
Update URL
Update monitoring settings for a URL.
Path Parameters
| Name | Type | Description |
|---|---|---|
idrequired | string | URL ID |
Body Parameters
| Name | Type | Description |
|---|---|---|
name | string | Display name |
checkInterval | integer | Check interval in seconds |
screenshotEnabled | boolean | Enable/disable screenshots |
screenshotWaitMs | integer | Wait time before screenshot (ms) |
timeoutSeconds | integer | Request timeout (5-30) |
Notes
- •Only provided fields are updated.
Pause URL Monitoring
Temporarily pause monitoring for a URL.
Path Parameters
| Name | Type | Description |
|---|---|---|
idrequired | string | URL ID |
Resume URL Monitoring
Resume monitoring for a paused URL.
Path Parameters
| Name | Type | Description |
|---|---|---|
idrequired | string | URL ID |
Bulk Update URLs
Update settings for multiple URLs at once.
Body Parameters
| Name | Type | Description |
|---|---|---|
urlIdsrequired | string[] | Array of URL IDs to update |
updatesrequired | object | Fields to update |
Bulk Delete URLs
Delete multiple monitored URLs at once. Requires explicit confirmation string.
Body Parameters
| Name | Type | Description |
|---|---|---|
urlIdsrequired | string[] | Array of URL IDs to delete |
confirmationrequired | string | Must be exactly "DELETE" to confirm |
Error Responses
Notes
- •This action is irreversible. Deleted URLs stop being monitored immediately.
- •The confirmation field must be the exact string "DELETE" (case-sensitive).
Email Health
Check MX, SPF, DKIM, DMARC, and blacklist status for any domain.
Check Email Health
Run a comprehensive email deliverability check including MX records, SPF, DKIM (50 selector scan), DMARC, and IP blacklist status. Results are cached for 1 hour.
Body Parameters
| Name | Type | Description |
|---|---|---|
domainrequired | string | Domain to check (e.g., "example.com"). Protocol and www prefix are auto-stripped. |
fresh | boolean | Skip cache and run a fresh check(default: false) |
Notes
- •Results cached in Redis for 1 hour (use fresh=true to bypass)
- •DKIM detection scans 50 common selectors in parallel
- •Scoring: MX 20%, SPF 25%, DKIM 20%, DMARC 25%, Blacklist 10%
- •Grades: A (90-100), B (80-89), C (70-79), D (60-69), F (0-59)
Notifications
View alerts and notification history for your monitored resources.
List Notifications
Get a paginated list of your notifications.
Query Parameters
| Name | Type | Description |
|---|---|---|
page | integer | Page number(default: 1) |
limit | integer | Items per page (1-50)(default: 20) |
type | string | Filter by type (status_change, ssl_expiry, etc.) |
Notes
- •Notification types: status_change, ssl_expiry, ssl_invalid, domain_expiry, email_health_alert, email_health_recovery, weekly_report.
Unread Notification Count
Get the count of pending (unsent) notifications.
Pause Notifications
Pause all notifications (email, WhatsApp, webhooks). Monitoring continues in the background — domains are still checked and incidents are still logged, but you will not receive alerts.
Notes
- •Monitoring continues — only alert delivery is paused.
- •Affects all channels: email, WhatsApp, and webhooks.
- •Use POST /notifications/resume to re-enable alerts.
Resume Notifications
Resume all notifications after pausing. You will start receiving alerts again when domains go down or recover.
Notification Pause Status
Check whether notifications are currently paused.
Team Members
Manage team members and shared domain access.
List Team Members
Get all team members and their invite status.
Notes
- •Only the account owner can manage team members.
Invite Team Member
Invite a new team member by email with optional domain access.
Body Parameters
| Name | Type | Description |
|---|---|---|
emailrequired | string | Email address to invite |
domainAccess | object[] | Array of { domainId, canWrite } objects |
Notes
- •Invite expires after 7 days.
- •Team member limits: Pro = 5, Agency = 20.
Remove Team Member
Remove a team member and revoke all their domain access.
Path Parameters
| Name | Type | Description |
|---|---|---|
membershipIdrequired | string | Membership ID |
Resend Invite
Resend an invitation email to a pending team member.
Path Parameters
| Name | Type | Description |
|---|---|---|
membershipIdrequired | string | Membership ID |
Notes
- •Generates a new invite token with a fresh 7-day expiry.
Webhooks
Manage outgoing webhook integrations for real-time alerts.
List Webhooks
Get all webhooks, optionally filtered by domain.
Query Parameters
| Name | Type | Description |
|---|---|---|
domainId | string | Filter by domain ID |
Create Webhook
Create a new webhook endpoint for receiving real-time alerts.
Body Parameters
| Name | Type | Description |
|---|---|---|
domainIdrequired | string | Domain to attach webhook to |
urlrequired | string | Webhook URL (must be HTTPS) |
label | string | Display label |
eventsrequired | string[] | Event types to subscribe to |
Notes
- •The signing secret is shown only once on creation.
- •Payloads are signed with HMAC-SHA256 in the X-NovaUptime-Signature header.
Delete Webhook
Delete a webhook endpoint.
Path Parameters
| Name | Type | Description |
|---|---|---|
idrequired | string | Webhook ID |
Test Webhook
Send a test payload to a webhook endpoint to verify connectivity.
Path Parameters
| Name | Type | Description |
|---|---|---|
idrequired | string | Webhook ID |
Notes
- •Sends a test event payload to the webhook URL.
Settings
View and update user settings including timezone, weekly reports, and notification pause.
Get Settings
Get your current settings — timezone, weekly report preference, and notification pause status.
Update Settings
Update one or more settings. Only include fields you want to change.
Body Parameters
| Name | Type | Description |
|---|---|---|
timezone | string | IANA timezone string (e.g., "America/New_York") |
weeklyReportEnabled | boolean | Enable or disable weekly email reports |
notificationsPaused | boolean | Pause all notifications (monitoring continues, alerts silenced) |
Notes
- •Set notificationsPaused to true to pause all alerts (email, WhatsApp, webhooks). Monitoring continues in the background.
Account & Billing
View account information, plan details, and payment history.
Get Account Info
Get your account profile and current plan information.
Billing Summary
Get your current plan, limits, expiry date, and add-on information.
Payment History
Get a list of past payments and license purchases.
Notes
- •Amounts are in cents (e.g., 9900 = $99.00).
Create Checkout Session
Create a Stripe checkout session and get a URL to complete the purchase. Redirect the user to the returned URL.
Body Parameters
| Name | Type | Description |
|---|---|---|
typerequired | string | Plan type: "pro" or "agency" |
isAddon | boolean | Set to true to purchase a domain add-on instead of a plan |
addonType | string | Add-on type: "domains_10", "domains_50", or "domains_100" (required when isAddon is true) |
Notes
- •Add-ons require an active Pro or Agency plan.
- •The URL expires after 24 hours.
Campaign Simulation
Run cold email deliverability simulations against prospect lists. Each unique domain checked costs 1 simulation credit. Public email domains (gmail.com, yahoo.com, etc.) are filtered automatically and do not cost credits.
Run Campaign Simulation
Start a cold email deliverability simulation. Deducts credits from your account based on the number of unique domains checked.
Body Parameters
| Name | Type | Description |
|---|---|---|
sendingDomainsrequired | string[] | Your sending domains (e.g., ["outreach.kitepin.com", "sales.fliplink.me"]) |
prospectEntriesrequired | string[] | Prospect emails or domains to check — see exampleRequest below for format |
name | string | Campaign name for easy identification (max 100 chars). Auto-generated if omitted. |
Error Responses
Notes
- •Each unique domain (sender + prospect) costs 1 credit. Public email domains (gmail.com, outlook.com, etc.) are filtered and do not cost credits.
- •Returns 402 Payment Required if you do not have enough credits.
- •Job processing is asynchronous — poll the status endpoint until status is "completed".
- •Rate limited to prevent abuse.
Get Simulation Status
Check the status and results of a campaign simulation job.
Path Parameters
| Name | Type | Description |
|---|---|---|
jobIdrequired | string | The job ID returned from the create endpoint |
Error Responses
Notes
- •Possible status values: "queued", "processing", "completed", "failed", "expired".
- •Poll every 3-5 seconds until status is "completed" or "failed".
- •CSV downloads are available when the corresponding has*Csv field is true.
- •shareUrl is the OTP-protected web share link for this campaign (null until campaign has a share token).
Get Simulation Credit Balance
Check your current simulation credit balance and recent transaction history.
Notes
- •Positive amounts are credit grants; negative amounts are usage deductions.
- •Annual credit allocations: Free = 60, Pro = 1,200, Agency = 12,000.
- •Add-on credits available: 1,000 credits / $9, 5,000 credits / $39, 10,000 credits / $69.
List Campaign Simulations
List your campaign simulation jobs, most recent first.
Query Parameters
| Name | Type | Description |
|---|---|---|
page | number | Page number (default: 1) |
limit | number | Results per page (default: 20, max: 50) |
Notes
- •Results are ordered by creation date, most recent first.
- •Each job includes a name and shareUrl for OTP-protected sharing.
- •Use the job ID with the status endpoint to get full details.
Download Simulation CSV
Download the CSV results of a completed campaign simulation. Three CSV types are available: campaign (full prospect analysis), sender (sending domain health), and suggestion (improvement recommendations).
Path Parameters
| Name | Type | Description |
|---|---|---|
jobIdrequired | string | The job ID returned from the create endpoint |
typerequired | string | CSV type: "campaign", "sender", or "suggestion" |
Error Responses
Notes
- •Only available after the job status is "completed".
- •Check the has*Csv fields in the status response to see which CSVs are available.
- •The response is a binary file download, not JSON.
- •campaign = full prospect domain analysis, sender = your sending domain health, suggestion = improvement recommendations.
Free Tools
Standalone diagnostic checks that don't require domains to be added to your account. Useful for ad-hoc validation, signup forms, and integrations.
Check Disposable Email
Check whether an email address (or bare domain) belongs to a disposable / temporary email provider. Backed by a 72,000+ domain blocklist. Use to block fake signups, throwaway trial accounts, or low-quality leads at registration.
Body Parameters
| Name | Type | Description |
|---|---|---|
emailrequired | string | Full email address or bare domain to check (see exampleRequest) |
Error Responses
Notes
- •Legitimate privacy providers (ProtonMail, StartMail, SimpleLogin, Tutanota) are NOT flagged.
- •Accepts either a full email address or a bare domain.
- •No credit cost — runs against an in-memory blocklist (sub-millisecond).
- •Source list: github.com/disposable/disposable-email-domains (refreshed periodically).
Error Codes
The API uses standard HTTP status codes. Errors include a descriptive message in the response body.
| Code | Meaning |
|---|---|
200 | Success — request completed normally |
201 | Created — resource was created successfully |
400 | Bad Request — invalid parameters, duplicate, or plan limit reached |
401 | Unauthorized — missing or invalid API key |
403 | Forbidden — plan limit reached (e.g., max domains) or feature requires upgrade |
404 | Not Found — resource does not exist or belongs to another user |
429 | Rate Limited — too many requests, try again later |
500 | Server Error — something went wrong on our end |
Error Response Format
{
"success": false,
"message": "Human-readable error description"
}¿Listo para empezar?
Genera tu clave API desde el dashboard y empieza a construir.