Developers · REST API

REST API quick start

Your first request in five minutes. The whole API follows the same few rules: send only what is needed when creating, every list is paged the same way, updates are PATCH, and errors carry a machine-readable code.

Base URL
https://rintup.com/api/v1

1. Create an API key

In the dashboard, go to Settings > API keys, create a new key and choose its access: read only, or read and write. The key is shown only once; store it somewhere safe.

Authorization: Bearer rup_live_...

A key belongs to one workspace; send it with the Authorization header on every request. Records of another workspace are never returned (404).

Go to API keys

2. Your first monitor: one line

Only the type and its target are required. Everything else has a sensible default: the name is derived from the address, the check interval and locations are chosen for your plan.

curl
curl -X POST https://rintup.com/api/v1/monitors -H "Authorization: Bearer rup_live_..." -H "Content-Type: application/json" -d '{"type":"http","http":{"url":"https://example.com"}}'

The response is 201 Created with the full record (defaults filled in); the Location header points to it. The full reference shows which fields have defaults (default).

3. Listing and paging

Every list returns the same envelope: data holds the records, nextCursor is the cursor of the next page.

curl
curl "https://rintup.com/api/v1/monitors?limit=50" -H "Authorization: Bearer rup_live_..."
200 OK
{
  "data": [ { "id": "…", "name": "example.com", "status": "up", … } ],
  "nextCursor": "eyJ…"
}

For the next page, send nextCursor unchanged as the cursor parameter. When nextCursor is null you are on the last page. Page size is limit, 1-200 (default 50). The cursor is opaque; do not decode or modify it.

curl
curl "https://rintup.com/api/v1/monitors?limit=50&cursor=<nextCursor>" -H "Authorization: Bearer rup_live_..."

Every endpoint documents a stable sort order, so paging through a list never skips or repeats a record.

4. Updating: PATCH

Updates always use PATCH and change only the fields you send; fields missing from the body stay the same. PUT with the whole object is not used.

curl
curl -X PATCH https://rintup.com/api/v1/monitors/<id> -H "Authorization: Bearer rup_live_..." -H "Content-Type: application/json" -d '{"intervalSeconds":60}'

To clear an optional text, send an empty string (""). For secret fields (passwords, tokens), null or the masked value keeps the current secret.

5. Actions

Operations that change state are verb paths under the resource, called with POST and no body. For example: pausing and resuming a monitor, or sending a test notification through a channel (POST /channels/{id}/test).

curl
curl -X POST https://rintup.com/api/v1/monitors/<id>/pause -H "Authorization: Bearer rup_live_..."
curl -X POST https://rintup.com/api/v1/monitors/<id>/resume -H "Authorization: Bearer rup_live_..."

6. Error format

Errors are returned as application/problem+json. In your code, check the code field rather than the title: code is stable, while title is written in Turkish or English depending on the Accept-Language header.

problem+json
HTTP/1.1 400 Bad Request
Content-Type: application/problem+json

{
  "type": "https://rintup.com/docs/errors/RUP-PLT-400-INVALID_PAGE",
  "title": "Invalid page request. …",
  "status": 400,
  "code": "RUP-PLT-400-INVALID_PAGE",
  "traceId": "…"
}

Validation errors include an errors field with messages per field name.

Status codes

  • 201: created (with a Location header)
  • 204: deleted, or an action without a body completed
  • 400: invalid request or validation error (field errors in errors)
  • 401: missing or invalid key
  • 403: the key's access does not allow this operation
  • 404: not found (a record of another workspace is also 404)
  • 402: plan limit (e.g. number of monitors)
  • 429: rate limit exceeded

The type field of every error links to the public page of its code: HTTP status, meaning in Turkish and English, and how to handle it.

All error codes

7. Rate limits

Authentication and verification code endpoints are limited to 10 requests per minute per IP, public status page endpoints to 120 requests per minute per IP. Above the limit you get 429 with the code RUP-PLT-429-RATE_LIMITED; wait a minute and retry.

A page returns at most 200 records. Walk large lists in order with nextCursor; request pages one after another instead of many parallel requests.

Full reference

Every endpoint, field, default and error code is in the interactive API reference (OpenAPI). If you work with an AI assistant, you can connect the RintUp MCP server.