Quick start
Every request authenticates with an API key you create in the app. Point curl, your CI, or any HTTP client at https://app.relvato.com/api/v1.
# 1 — Confirm your key works and see the endpoints curl https://app.relvato.com/api/v1 \ -H "Authorization: Bearer rlv_your_key" # 2 — List the sites Relvato monitors for you curl https://app.relvato.com/api/v1/sites \ -H "Authorization: Bearer rlv_your_key" # 3 — Read recent runs (optionally scoped to one site) curl "https://app.relvato.com/api/v1/runs?limit=10" \ -H "Authorization: Bearer rlv_your_key" # 4 — Trigger an on-demand scan of a site curl -X POST https://app.relvato.com/api/v1/sites/SITE_ID/scan \ -H "Authorization: Bearer rlv_your_key"
Authentication
Send your key on every request as Authorization: Bearer rlv_your_key (an x-api-key header works too). A missing, revoked, or unknown key returns 401.
Create and revoke keys under API access in the app. Keys start with rlv_, are shown once at creation, and act on your whole account — treat them like a password.
REST endpoints
Every endpoint is scoped to the account behind the key and returns JSON. Base URL https://app.relvato.com/api/v1.
| Method | Endpoint | Description |
|---|---|---|
| GET | /api/v1 | Confirms the key and lists the available endpoints. |
| GET | /api/v1/sites | Lists the websites Relvato monitors for you. |
| GET | /api/v1/runs | Recent verification runs, newest first — optional siteId and limit (1–100) query params. |
| POST | /api/v1/sites/:id/scan | Queues an on-demand scan of one site. Counts against your monthly run quota. |
Example: list sites
{
"sites": [
{
"id": "st_1a2b3c",
"name": "style4street",
"url": "https://style4street.com",
"connectionType": "wordpress"
}
]
}Example: recent runs
A run that failed but was later resolved (baseline accepted or ignored) reports status: "passed" with resolved: true.
{
"runs": [
{
"id": "rn_9f8e7d",
"siteId": "st_1a2b3c",
"journey": "checkout",
"status": "passed",
"startedAt": "2026-08-31T09:15:00.000Z",
"durationMs": 4210,
"resolved": false
}
]
}Rate limits
Requests are limited per minute, per account, across REST and MCP combined. Your plan sets the ceiling:
| Plan | Requests / min |
|---|---|
| Free | 30 |
| Pro | 120 |
| Business | 600 |
| Agency | 2,400 |
Every response carries X-RateLimit-Limit, X-RateLimit-Remaining, and X-RateLimit-Reset. Over the limit returns 429 with a Retry-After header.
Status codes
| Status | Meaning |
|---|---|
200 | Success. |
401 | Missing, unknown, or revoked API key. |
404 | Site not found for this account. |
409 | Site is disabled, or its domain isn't verified yet. |
429 | Rate limit hit, or the monthly run quota is used up. |
MCP server (for AI agents)
Relvato is also a remote Model Context Protocol server, so an agent like Claude can list your sites, read runs, and trigger scans in a conversation. It uses the same key and the same rate limit as the REST API.
Endpoint https://app.relvato.com/api/mcp
| Tool | What it does |
|---|---|
list_sites | List the websites Relvato is monitoring for the account. |
list_runs | List recent runs, newest first — optionally for one site. |
trigger_scan | Run an on-demand scan of a site now (respects the monthly quota). |
Add it as a remote HTTP connector. In a client that reads an mcp.json, the entry looks like this:
{
"mcpServers": {
"relvato": {
"type": "http",
"url": "https://app.relvato.com/api/mcp",
"headers": {
"Authorization": "Bearer rlv_your_key"
}
}
}
}Frequently asked questions
Which plans include API and MCP access?
All of them, including Free — only the per-minute rate limit differs. Free allows 30 requests a minute; paid plans allow more.
How do I get a key?
Sign in and open API access in the app. You can create several keys and revoke any of them at any time; each key acts on your whole account.
Do REST and MCP share the rate limit?
Yes. The limit is per account, per minute, counted across both surfaces together.
Does triggering a scan use my quota?
Yes. On-demand scans — over REST or MCP — draw from the same monthly run quota as scheduled checks.