Skip to main content
The UptimeIO REST API lets you create and manage monitors, groups, incidents and status pages, and read monitoring results, from your own scripts and pipelines.

Quick start

1

Create an API key

In the dashboard go to Settings > API Keys and create a key. See Authentication.
2

Make a request

3

Read the response

Every response is JSON with a success flag. On success the payload is in data; on failure the problem is in error.

Base URL

All API requests should be made to:

API Version

The current public API version is 1.0. Version information is returned in the X-API-Version: 1.0 response header and in the OpenAPI specification metadata. Versioning is metadata only at present: API URLs use the /api/... route prefix, not /api/v1/..., and clients do not need to send an X-API-Version request header.

Request Format

All requests use JSON for both request bodies and responses.

Headers

Request Example

Response Format

All API responses follow a consistent format for predictable error handling and data access.

Success Response

Successful requests return a 200-299 HTTP status code with the following structure:

Error Response

Failed requests return a 4xx or 5xx HTTP status code with this structure. details is optional and its shape depends on the error:

Paginated Response

Endpoints that paginate use one of two conventions, so check the specific endpoint’s reference page before assuming a shape. (Key listing, shown above, nests keys and the pagination fields directly under data.) Offset-based (used by list endpoints such as GET /api/monitors) nests results and pagination metadata under data:
Page-based (used by endpoints such as organization member listings) returns:

Pagination

Offset-based list endpoints, such as GET /api/monitors, accept:

Pagination Example

For large result sets, increase limit (up to the maximum of 100) to reduce the number of API calls.

Rate Limiting

UptimeIO implements rate limiting to ensure fair access and service stability.

Rate Limit Headers

All responses include rate limit information in the headers:

Rate Limit

The API applies a single global limit, the same on every plan: There are no separate per-plan or per-minute tiers today - Free, Pro, and Scale all share this one limit. Some unauthenticated, security-sensitive endpoints carry their own stricter limits, notably login attempts (5 per account per 15 minutes) and registration (10 per IP per 15 minutes).

Handling Rate Limits

If you exceed the rate limit, you’ll receive a 429 Too Many Requests response with a Retry-After header (seconds until the window resets):
Best practices:
1

Check Rate Limit Headers

Monitor the X-RateLimit-Remaining header to anticipate when you’re approaching limits.
2

Wait for Retry-After

When rate limited, wait the number of seconds in the Retry-After header before retrying:
3

Avoid redundant requests

Use filters and pagination rather than fetching everything repeatedly, and use the batch endpoints where they exist.

HTTP Status Codes

The UptimeIO API uses standard HTTP status codes to indicate request success or failure:

Request Examples

Common Patterns

Handling Errors

Always check the success flag and handle errors gracefully:

Pagination Loop

Iterate through all results using limit/offset: