Skip to content
Browse documentation · Send your own data
On this page

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

  1. Open Account & tokens and select Create token.
  2. Choose Write to send data or Read to read data, then select Show token and copy it.
  3. 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, and agent.project are required. character is a VibeMon character name, such as vibemon.
  • state: start, idle, thinking, planning, working, packing, notification, done, sleep, or alert.
  • account.provider: 1–32 characters. A lowercase letter first, then lowercase letters, digits, _, or -. account.id follows the sourceId rules, and account.displayName has 1–128 characters. Each provider and id pair is one coding account.
  • metrics: optional contextPercent, usageSessionPercent, and usageWeekPercent, 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.