Re-run the Agentic browsing check
POST
/sites/{siteId}/agentic/run- Scope
issues:recheck- MCP tool
run_agentic_check
Re-run the Agentic browsing check for one page Queues one PageSpeed run (performance and Agentic browsing, stored like a speed test) and answers 202 at once; a run takes 20 to 60 seconds. Poll GET /sites/{siteId}/agentic/runs/{jobId}. Uses one run of the website's daily PageSpeed budget.
Parameters
| Name | In | Details |
|---|---|---|
siteIdRequired | path | stringWebsite id, from GET /sites. |
Request body
| Field | Details |
|---|---|
url | address (URL) · required; A page of this website |
strategy | mobile | desktop · default mobile; Device to emulate; default mobile |
{
"url": "https://acmebikes.com/",
"strategy": "mobile"
}Response
202 · application/json
| Field | Details |
|---|---|
queued | true or false · required; Always true |
jobId | string · required; Run id to poll |
status | queued · required |
url | string · required; Page to test |
strategy | mobile | desktop · required; Device PageSpeed emulated |
budget | object · required; The website's daily PageSpeed budget, shared with speed tests |
budget.perDay | integer · required; PageSpeed runs per website per day (plan) |
budget.usedToday | integer · required; Runs in the last 24 hours |
budget.left | integer · required; Runs left now |
budget.nextFreeAt | string or null · required; When the next run frees up, when none is left |
poll | address (URL) · required; Address to poll |
note | string · required; What happens next |
Errors
| Status | Meaning |
|---|---|
400 | Bad request. Codes: bad_url, other_host, bad_strategy. |
401 | Missing, unknown or revoked key. Codes: missing_key, invalid_key. |
403 | The key lacks the scope, covers another website, or its owner lost access. Codes: missing_scope, other_site, owner_left, no_owner, forbidden. |
404 | Not found. Codes: not_found. |
409 | Conflict with the current state. Codes: already_queued. |
429 | A limit is reached. rate_limited: too many requests this hour for this key. Codes: rate_limited, budget_used, too_many_runs. |
Example request
curl -X POST \
-H "Authorization: Bearer mr_ws_…" \
-H "Content-Type: application/json" \
-d '{"url":"https://acmebikes.com/","strategy":"mobile"}' \
"https://app.monoranks.com/api/v1/sites/SITE_ID/agentic/run"const res = await fetch("https://app.monoranks.com/api/v1/sites/SITE_ID/agentic/run", {
method: "POST",
headers: { Authorization: "Bearer mr_ws_…", "Content-Type": "application/json" },
body: JSON.stringify({
"url": "https://acmebikes.com/",
"strategy": "mobile"
}),
});
if (!res.ok) throw new Error((await res.json()).error.message);
const data = await res.json();import requests
res = requests.post(
"https://app.monoranks.com/api/v1/sites/SITE_ID/agentic/run",
headers={"Authorization": "Bearer mr_ws_…"},
json={
"url": "https://acmebikes.com/",
"strategy": "mobile",
},
)
res.raise_for_status()
data = res.json()<?php
$ch = curl_init("https://app.monoranks.com/api/v1/sites/SITE_ID/agentic/run");
curl_setopt_array($ch, [
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_HTTPHEADER => ["Authorization: Bearer mr_ws_…", "Content-Type: application/json"],
CURLOPT_POSTFIELDS => '{"url":"https://acmebikes.com/","strategy":"mobile"}',
CURLOPT_RETURNTRANSFER => true,
]);
$data = json_decode(curl_exec($ch), true);import axios from "axios";
const { data } = await axios.post(
"https://app.monoranks.com/api/v1/sites/SITE_ID/agentic/run",
{
"url": "https://acmebikes.com/",
"strategy": "mobile"
},
{ headers: { Authorization: "Bearer mr_ws_…" } },
);Example response
{
"queued": true,
"jobId": "a1c3e5f7-9b1d-4f3b-8d5f-7b9d1f3b5d7e",
"status": "queued",
"url": "https://acmebikes.com/",
"strategy": "mobile",
"budget": {
"perDay": 5,
"usedToday": 2,
"left": 2,
"nextFreeAt": null
},
"poll": "https://app.monoranks.com/api/v1/sites/3f6c2a1e-8b4d-4c7a-9e21-5d0b7a6f4c13/agentic/runs/a1c3e5f7-9b1d-4f3b-8d5f-7b9d1f3b5d7e",
"note": "Queued: PageSpeed loads the page on Google's servers, which takes 20 to 60 seconds."
}{
"error": {
"code": "bad_url",
"message": "Send the page to test as { \"url\": \"https://…\" }."
}
}{
"error": {
"code": "missing_key",
"message": "Send the key as Authorization: Bearer mr_site_…"
}
}{
"error": {
"code": "missing_scope",
"message": "This key does not have the scope this call needs."
}
}{
"error": {
"code": "not_found",
"message": "Website not found."
}
}{
"error": {
"code": "already_queued",
"message": "A run for this URL is already queued (job a1c3e5f7-9b1d-4f3b-8d5f-7b9d1f3b5d7e)."
}
}{
"error": {
"code": "rate_limited",
"message": "More than 1200 requests this hour for this key."
}
}The MCP server does the same with the tool run_agentic_check.