Send your own data
Use this page if you write a program that sends measurements to VibeMon or reads them. To monitor coding tools, servers, or Kubernetes, use the installers in the guides instead.
Before you start
- Open Account & tokens and select Create token.
- Choose Write to send data or Read to read data, then select Show token and copy it.
- Keep the token in an environment variable or a secret manager. Do not put it in a URL or in your code.
Send the token in every request:
Authorization: Bearer vm_…
Content-Type: application/json
Send a resource
To define a resource on the web first, open Add resource. The page gives you a request template.
Send POST https://vibemon.io/api/v1/ingest with a write token at least every 60 seconds:
{
"sourceId": "freezer-1",
"kind": "resource",
"resourceType": "Cold storage",
"displayName": "Warehouse freezer",
"statusMessage": "Cooling",
"observedAt": "2026-10-09T12:00:30.000Z",
"health": "ok",
"metricDefinitions": {
"temperature": { "label": "Temperature", "unit": "°C", "display": "gauge", "min": -40, "max": 20 },
"power": { "label": "Power", "unit": "W", "display": "number", "min": 0 }
},
"metrics": { "temperature": -12, "power": null }
}
| Field | Rule |
|---|---|
sourceId |
1–128 letters, digits, _, ., :, or -. Starts with a letter or a digit. Unique in your account. |
displayName |
1–128 characters |
resourceType |
1–64 characters, such as HTTP service or Queue |
statusMessage |
Optional, up to 160 characters. Do not send logs or secrets. |
observedAt |
The measurement time in UTC. At most 120 seconds old and 30 seconds in the future. |
health |
ok, warning, error, or unknown |
metricDefinitions |
Up to 32 metrics. A key starts with a letter and has up to 64 letters, digits, or _. Each metric has label, unit, and display (number or gauge). A gauge needs min and max. |
metrics |
A number for each defined metric. A value outside min and max returns 400. Send null when you have no value; VibeMon shows Unavailable, not zero. |
Replace the example observedAt with the current measurement time for every request; sending the dated example unchanged is rejected. Creating a template on Add resource does not save a live resource: its first accepted report does.
Send the definitions with every request. The whole request must be 16 KiB or less.
A successful request returns { "accepted": true }. An observation that is not newer than the last one returns { "accepted": false, "reason": "duplicate_or_older" }. After a network failure, send only the newest observation.
To change the labels, units, ranges, or order later, use Edit resource and metrics on the dashboard. Your program does not overwrite these settings.
Send coding-agent activity
For a coding tool that VibeMon does not support, send the state of each project:
{
"sourceId": "agent:workstation-my-project",
"kind": "agent",
"displayName": "my-project",
"observedAt": "2026-10-09T12:00:30.000Z",
"health": "ok",
"account": { "provider": "mytool", "id": "work", "displayName": "My tool (work)" },
"agent": { "state": "working", "character": "vibemon", "project": "my-project" },
"metrics": { "contextPercent": 42 }
}
agent.state,agent.character, andagent.projectare required.characteris a VibeMon character name, such asvibemon.state:start,idle,thinking,planning,working,packing,notification,done,sleep, oralert.account.provider: 1–32 characters. A lowercase letter first, then lowercase letters, digits,_, or-.account.idfollows thesourceIdrules, andaccount.displayNamehas 1–128 characters. Eachproviderandidpair is one coding account.metrics: optionalcontextPercent,usageSessionPercent, andusageWeekPercent, from 0 to 100.- While a long task runs, send the same state every 60 seconds with
"heartbeat": true.
Connect coding account generates the account values for you.
Read data
Use a read token:
| Request | Returns |
|---|---|
GET /api/v1/sources |
All your resources and coding-agent projects |
GET /api/v1/sources?ids=freezer-1,spark-1 |
Up to 100 selected sources |
GET /api/v1/sources/{sourceId}/trend?hours=1 |
Per-minute averages and maximums for 1, 3, 6, 12, or 24 hours |
GET /api/v1/accounts |
Coding accounts and their projects |
Each source has the last observation, receivedAt, and stale. A resource is stale 120 seconds after its last report.
Limits and errors
All tokens of one account share 240 write requests and 600 read requests per minute.
| Status | Meaning | Action |
|---|---|---|
| 400 | The request is not valid. | Correct the fields. The response tells which field is wrong. |
| 401 | The token is missing, unknown, or deleted. | Use a current token. |
| 403 | The token does not have the permission. | Use a write token to send and a read token to read. |
| 409 | The source or a metric conflicts with saved settings. | Keep the saved type and units, or use a new sourceId or metric key. |
| 413 | The request is larger than 16 KiB. | Send fewer fields. |
| 429 | The account sent too many requests. | Wait for the time in Retry-After. |
| 503 | VibeMon is temporarily unavailable. | Try again later with the newest observation. |