Manager.Social
HomeAbout
SEO & site auditKeyword researchSocial publishingPPC managementContent marketingLink managementOneLink bio pagesReports & analytics
ComparisonContact Us
LoginGet started
Guide · Health Monitor

Health Monitor API.

Ask Manager.Social whether it is healthy, with just a key and a secret. This page is for the person who holds that key: no developer knowledge of the app is needed.

Base path/metrics-exchange/v1/monitor
FormatJSON
LoginBearer token or Basic
On this page
  1. What you get
  2. Getting access
  3. Logging in
  4. The four calls
  5. What the levels mean
  6. How often to ask
  7. Using an uptime tool
  8. Every parameter
  9. Errors and limits
  10. When access stops

1. What you get

A live answer to “is Manager.Social healthy right now?” plus the detail behind it: the database, queues, email, payments, data providers, the server's disk and memory, and more. You also get a short history, so you can see when something went wrong and for how long. It is read-only and carries no business data: no users, companies or numbers about customers.

Looking for the business Metrics Exchange API instead? →

2. Getting access

Only the Super Admin can give you access. They create a Health key for you, tick the health parameters you may see, and send you a client id and a client secret. The secret is shown only once, so keep it safe. You can only ever read the parameters that were ticked for you, and the Super Admin can take access away at any time.

3. Logging in

There are two ways. Use whichever your tool supports.

Bearer token. Swap your id and secret for a token, then send it with every call. A token lasts a limited time; when it expires, ask for a new one.

Get a token — curl
curl -s -X POST 'https://manager.social/metrics-exchange/v1/token' \
  -H 'Content-Type: application/x-www-form-urlencoded' \
  -d 'grant_type=client_credentials&client_id=<client_id>&client_secret=<client_secret>'

The answer contains access_token. Send it as Authorization: Bearer <token>.

Basic login. On the monitor routes you can skip the token and sendAuthorization: Basic base64(client_id:client_secret) on every call. This is the easiest choice for uptime tools, which usually have a “username and password” box: put the client id in the first and the secret in the second.

4. The four calls

All paths start with https://manager.social/metrics-exchange/v1.

GET /monitor — the full picture

The current state of every parameter ticked for you. overall is the worst level among them.reason is normally empty; it says checks_not_running when the app's own checks have stopped (the data is old), and then overall is critical. Each parameter has a stale flag that is true when its reading is older than it should be. Add ?params=id1,id2 to ask for just some.

Current state — curl
curl -s 'https://manager.social/metrics-exchange/v1/monitor' -H 'Authorization: Bearer <token>'
Answer (shortened)
{
  "overall": "warning",
  "reason": null,
  "checkedAt": "2026-11-06T09:41:00Z",
  "params": [
    {
      "id": "server.disk", "group": "server", "label": "Disk",
      "level": "warning", "value": 83, "unit": "percent", "detail": null,
      "since": "2026-11-05T22:10:00Z", "checkedAt": "2026-11-06T09:41:00Z", "stale": false
    }
  ]
}

GET /monitor/ping — one word, for machines

Returns { "overall": "…" }. The HTTP status is 200 unless the overall level is critical, in which case it is 503. That makes it perfect for an uptime tool: it only has to check the status code.

Ping — curl, Basic login
curl -s -o /dev/null -w '%{http_code}\n' 'https://manager.social/metrics-exchange/v1/monitor/ping' \
  -H 'Authorization: Basic <base64 of client_id:client_secret>'
# or let curl do the encoding:
curl -s -u '<client_id>:<client_secret>' 'https://manager.social/metrics-exchange/v1/monitor/ping'
Answer
{ "overall": "ok" }

GET /monitor/history — what happened

Per parameter, how many minutes it spent at each level, grouped by group=hour (up to the last 7 days) or group=day (up to the last 400 days). Use from and to (a date or date-time); without them you get the last 24 hours (hour) or 30 days (day). The uptime percentage is (ok + warning minutes) ÷ minutes with a known level; minutes in planned maintenance are left out.

History — curl
curl -s -u '<client_id>:<client_secret>' \
  'https://manager.social/metrics-exchange/v1/monitor/history?params=server.disk,infra.postgres&group=hour&from=2026-11-05'
Answer (one bucket shown)
{
  "from": "2026-11-05T00:00:00Z", "to": "2026-11-06T09:45:00Z", "group": "hour",
  "params": [
    {
      "id": "server.disk",
      "buckets": [
        {
          "start": "2026-11-05T00:00:00Z", "end": "2026-11-05T01:00:00Z",
          "minutes": { "ok": 60, "warning": 0, "critical": 0, "unknown": 0, "maintenance": 0 },
          "uptimePercent": 100, "avg": 54.3, "max": 54.9
        }
      ]
    }
  ]
}
  • start / end — The bucket's first instant and the instant after its last (UTC); an hour or a day long.
  • minutes — Minutes the parameter spent at each level in the bucket: ok, warning, critical, unknown, maintenance.
  • uptimePercent — (ok + warning) / (ok + warning + critical) x 100; null when no minute had a known level. Maintenance and unknown minutes are left out.
  • avg — Average measured value in the bucket, in the parameter's unit; null for state-only parameters or no data.
  • max — Highest measured value in the bucket; null when there is none.

GET /monitor/catalogue — what you can see

Lists your parameters with their description, thresholds and how often each is checked. Handy for building your own dashboard labels.

Catalogue — curl
curl -s -u '<client_id>:<client_secret>' 'https://manager.social/metrics-exchange/v1/monitor/catalogue'

5. What the levels mean

LevelMeaning
okWorking normally.
warningStill working, but something is getting close to a limit. Look at it soon.
criticalBroken or about to break. Act now.
unknownThe app could not tell. It is not counted as a failure, but look into it.
maintenanceA planned maintenance window is on, so a bad reading is expected.

Treat no answer, a timeout or any 5xx as critical. If the app is down it cannot tell you so, so silence is the loudest alarm there is.

value and detail are the latest raw reading, while level is the held (confirmed) level: a new level must be seen a few checks in a row before it replaces the old one, so for a minute or two they can disagree (for example 70 % used with level warning).

Inside the app, a warning or critical that lasts sends the Super Admins a reminder every 6 hours; each Super Admin can mute that per event in Notification settings.

6. How often to ask

  • /monitor/ping every 1 to 2 minutes.
  • /monitor every 5 minutes, for the detail.
  • /monitor/history only when you need a report; it does not change faster than hourly buckets.

Every call counts against your daily allowance (see Errors and limits), so there is no benefit in asking more often than the app checks.

7. Using an uptime tool

Works with UptimeRobot and similar tools. Create an HTTP(s) monitor:

  1. URL: https://manager.social/metrics-exchange/v1/monitor/ping
  2. Authentication: Basic. Username = your client id, password = your client secret.
  3. Check every 1 to 2 minutes (5 minutes on a free plan is fine).
  4. Expect HTTP status 200. Optionally add a keyword check for "overall":"ok" if you also want to be told about warnings.
  5. Send alerts to the people who should wake up. A 503, a timeout or no answer is a real outage.

8. Every parameter

You see only the ones ticked for your key. Thresholds: for most parameters a higher number is worse; for the SSL certificate a lower number is worse. A parameter with no thresholds reports its own state.

Services

IdWhat it measuresUnitLevelsChecked every
component.websiteThe web app answers (status page state).stateReports its own state1 min
component.sign_inLogin works (status page state).stateReports its own state1 min
component.apiThe API answers (status page state).stateReports its own state1 min
component.seo_dataSEO data providers work (status page state).stateReports its own state1 min
component.social_publishingScheduled posts go out (status page state).stateReports its own state1 min
component.short_linksShort links and OneLink work (status page state).stateReports its own state1 min

Infrastructure

IdWhat it measuresUnitLevelsChecked every
infra.postgresDatabase ping and latency.msWarning ≥ 1000 ms · Critical ≥ 4000 ms1 min
infra.postgres_connectionsUsed share of the maximum database connections.percentWarning ≥ 80 % · Critical ≥ 90 %1 min
infra.migrationsFailed or unfinished Prisma migrations.countCritical ≥ 115 min
infra.redis_cacheCache Redis ping time.msWarning ≥ 500 ms1 min
infra.redis_queueQueue Redis ping time.msWarning ≥ 500 ms1 min
infra.meilisearchMeilisearch ping time.msWarning ≥ 1000 ms1 min
infra.minioMinIO ping time.msWarning ≥ 1000 ms1 min

Background jobs

IdWhat it measuresUnitLevelsChecked every
jobs.failed_24hFailed background jobs across the main queues in the last 24 hours.countWarning ≥ 10 · Critical ≥ 501 min
jobs.backlogWaiting jobs plus delayed jobs that are overdue.countWarning ≥ 500 · Critical ≥ 20001 min
jobs.schedulerMinutes since the every-minute status job last ran.minutesWarning ≥ 5 min · Critical ≥ 15 min1 min

Server

IdWhat it measuresUnitLevelsChecked every
server.diskRoot disk used.percentWarning ≥ 80 % · Critical ≥ 90 %1 min
server.memoryRAM used.percentWarning ≥ 85 % · Critical ≥ 95 %1 min
server.cpu_load5-minute load average divided by cores.ratioWarning ≥ 1.5 · Critical ≥ 31 min
server.processesapi-server and ms-web online; restarts in the last hour.countWarning ≥ 2 · Critical ≥ 41 min
server.sslDays until the public site's certificate ends.daysWarning ≤ 14 days · Critical ≤ 3 days1 h
server.backupHours since the newest database dump.hoursWarning ≥ 26 h · Critical ≥ 50 h15 min

Traffic

IdWhat it measuresUnitLevelsChecked every
api.errorsShare of API responses that were 5xx in the last 5 minutes.percentWarning ≥ 1 % · Critical ≥ 5 %1 min

Email

IdWhat it measuresUnitLevelsChecked every
email.stuckEmails still queued or pending after 15 minutes (last 24 hours).countWarning ≥ 5 · Critical ≥ 201 min
email.failure_rateFailed or refused sends divided by all send attempts in the last hour.percentWarning ≥ 10 % · Critical ≥ 25 %1 min
email.configPrimary WiredMessage is on and the alert purpose is mapped.stateReports its own state15 min

Payments

IdWhat it measuresUnitLevelsChecked every
payments.invoice_syncCompleted purchases of the last 30 days whose eSimplified invoice sync failed.countWarning ≥ 15 min
payments.mismatchPayment-recovery mismatches reported in the last 24 hours.countWarning ≥ 15 min

Data providers

IdWhat it measuresUnitLevelsChecked every
provider.dataforseoFailed share of DataForSEO calls in the last 15 minutes.percentWarning ≥ 10 % · Critical ≥ 50 %1 min
provider.serperFailed share of Serper calls in the last 15 minutes.percentWarning ≥ 10 % · Critical ≥ 50 %1 min
provider.google_adsFailed share of Google Ads calls in the last 15 minutes.percentWarning ≥ 10 % · Critical ≥ 50 %1 min
provider.aiA primary AI provider is set and its last test passed.stateReports its own state15 min

Maintenance

IdWhat it measuresUnitLevelsChecked every
maintenance.activeA planned window or deploy maintenance is on now (information only).stateReports its own state1 min

9. Errors and limits

CodeHTTPWhat it means
TOKEN_EXPIRED401Your token ran out or was revoked. Ask for a new one (or use Basic login).
CLIENT_DISABLED403The Super Admin switched your access off.
SCOPE_DISABLED403The health switch is off for the whole platform.
MX_WRONG_CLIENT_KIND403This key is not a health key (or you used a health key on a business-data route).
MX_PARAM_NOT_ALLOWED403You asked for a parameter that is not ticked for your key.
MX_UNKNOWN_PARAM400You asked for a parameter that does not exist.
INVALID_RANGE400A bad from/to/group in /monitor/history.
RATE_LIMITED429Too many calls today. The Retry-After header says how many seconds to wait.

By default a health key may make 3,000 calls a day (the Super Admin can change this for your key). Past that you get 429 with a Retry-After header: wait that many seconds. A call to/ping that returns 503 still counts, because it is a valid answer.

10. When access stops

If your calls start failing with 401 or 403, it is almost always one of these. Ask the Super Admin to check:

  • your key was disabled;
  • your secret was revoked or replaced (you need the new one);
  • the parameters ticked for you were changed;
  • the platform's health switch is off.

If instead you get a 5xx or no answer at all, treat it as critical: the app itself may be down.

Manager.Social
Social Media
Capricorn Infotech (India) Pvt. Ltd.

Capricorn Infotech India Pvt. Ltd.

Specializes in software distribution, web technologies and digital solutions that empower businesses.

  • 01161400066
  • [email protected]
  • G-5, Vikas Deep Building, Plot-18
    Laxmi Nagar District Centre
    Delhi- 110 092, India

Services

  • SEO & site audit
  • Keyword research
  • Social publishing
  • PPC management
  • Content marketing
  • Link management
  • OneLink bio pages
  • Reports & analytics

Quick Link

  • About Us
  • Comparison
  • Contact Us
  • FAQs
  • What's New
  • Metrics Exchange API
IdeasandRKM
© 2026 Capricorn Infotech India Pvt Ltd. All rights reserved.
Terms of ServicePrivacy PolicyCookie Policy