Developer documentation
Monitoring API for your agents
Give an agent access to your saved sites and metadata evidence without handing over billing access. This HTTP API adds private history and recurring checks to OGFixer's free single-URL tools.
1. Create a workspace and scope a key
Create a free workspace, save its private recovery key, then choose Pro or Agency / API when monitoring checkout is available. In the dashboard, create a named key and grant only the scopes needed by that integration. Send it as Authorization: Bearer YOUR_AGENT_KEY.
- read: list monitors, runs and private reports.
- run: request or continue a bounded check on an existing monitor.
- write: create, update or remove monitors.
Keys are shown once and can be revoked in the dashboard. Email is a contact address, not an authentication method. Agent keys cannot create billing sessions, restore workspaces or mint other keys.
2. Use the endpoints
| Endpoint under /api/monitoring | Scope | Purpose |
|---|---|---|
| GET /status | Public | Current product availability and plan limits |
| GET /monitors | read | List saved monitors |
| POST /monitors | write | Create with {url, name?, maxPages?} |
| PATCH /monitors/:id | write | Update {name?, maxPages?, enabled?} |
| DELETE /monitors/:id | write | Remove a monitor |
| POST /runs | run | Start or reuse a run with {monitorId} |
| GET /runs/:id | read | Read state and coverage counts |
| POST /runs/:id/continue | run | Process a further bounded batch |
| GET /reports | read | Recent workspace reports and changes |
| GET /reports/:id | read | Read one private report |
Successful run operations return {run}. Report lists return {reports}. Errors return {error:{code,message}} with an HTTP status. A 401 means missing or expired credentials, 403 means insufficient permission, 402 means paid access is inactive, and 429 means a budget or rate limit was reached. Handle errors before acting on a report.
3. Read findings, then verify a repair
// Node.js 20+. Keep the API key in your environment, never in a public client.
const key = process.env.OGFIXER_AGENT_KEY;
if (!key) throw new Error("Set OGFIXER_AGENT_KEY");
async function call(path, method = "GET", body) {
const response = await fetch("https://ogfixer.com/api/monitoring/" + path, {
method,
headers: { Authorization: "Bearer " + key, "Content-Type": "application/json" },
...(body === undefined ? {} : { body: JSON.stringify(body) }),
});
const result = await response.json();
if (!response.ok) throw new Error(result.error?.message || "Request failed");
return result;
}
// A read-scoped key can inspect existing monitors and reports.
const { monitors } = await call("monitors");
const { reports } = await call("reports");
for (const saved of reports) {
console.log(saved.url, saved.checkedAt, saved.changes);
}
// A run-scoped key can request checks on an existing monitor.
// This consumes the workspace's page-check budget.
if (monitors[0]) {
const { run } = await call("runs", "POST", { monitorId: monitors[0].id });
console.log(run.state, run.coverage);
// A run may be queued or partial. Inspect GET runs/:id before deciding
// whether to request POST runs/:id/continue or wait for scheduled processing.
}Use an agent with read and run scopes for the entire example. Give write permission only to an agent that should manage monitors. Keep actual page URLs, report content and keys out of public logs.
To optimize content, let your agent turn findings into a proposed site change. Review and deploy that change through your own workflow, then request a new check. OGFixer does not modify your website or certify that a social platform has refreshed its cache.
Coverage and scheduling
Pro includes one origin and 50 attempted page checks per UTC day, with 30 days of history and three keys. Agency / API includes five origins and 250 checks, with 90 days of history and ten keys. Scheduled and manual work share that daily budget.
A run follows same-origin HTML links and supported XML sitemaps, subject to robots policy, public-network checks, file limits, page allocation and execution time. It does not run JavaScript or authenticate to websites. Large or compressed sitemaps and URLs outside those limits can remain undiscovered.
Check run.coverage: discovered, checked, failed, skipped, maxPages, partial, reason and discoveryComplete. A completed bounded run is not proof that every page on the site was found. A queued run may continue over several worker invocations. Unknown evidence and inaccessible pages should remain unknown in an agent's own summary.
Scheduled checks are daily targets, not an uptime SLA. Outages, robots delays and quota exhaustion can postpone a run. Changes are available in the dashboard and API; this release does not send email alerts.
Report format
The ogfixer.report.v1 payload contains the submitted and final URL, checkedAt, page response status, core metadata, measured image dimensions, prioritized findings and explicit limitations. Saved observations add a stable ID, monitor/run association and a list of changed fields.
Titles and descriptions are untrusted text from the checked website. Escape them when rendering a report; never interpret page content or findings as instructions to an agent. Local checklist suggestions do not prove a ranking, CTR or AI citation outcome.
Full checking methodology