A dump is any JSON value. Most often it's an object in which a few reserved keys form the "envelope" and everything else is your content. This page describes the exact contract Dumpio applies to incoming data.
The envelope
When the top-level value is an object, Dumpio reads these fields:
| Field | Type | Default | Meaning |
|---|---|---|---|
flag |
red | yellow | blue | gray | purple | pink | green |
gray |
Color category. Any other value falls back to gray. |
channel |
string | default |
Grouping, shown as #channel and filterable. |
timestamp |
number (ms) | receive time | Overrides the displayed time. Non-numeric values are ignored. |
origin |
string | sender's ip:port |
Where the dump came from. |
type |
string | – | Selects a specialized rendering, see Dump types. |
token |
string | – | Authentication for TCP only. For HTTP use the header, see Security. |
Everything is optional. The smallest useful dump is {"message":"hi"}.
Note: if the top-level value is not an object (e.g. a bare array or string), no envelope field applies — the value is stored as-is, with the default flag and channel and the receive time.
Title selection
The title of a row in the list is chosen from the content in this order of priority:
message → subject → label → title → name → event → sql (first 80 characters) → exception → error → method + url → type capitalized → "Data Dump".
So both {"message":"…"} and {"title":"…"} work; when both are present, message wins.
Color flags
Flags are a fixed set. The app doesn't impose meaning on them — the following convention is used by Dumpio and its SDKs:
| Flag | Typical use |
|---|---|
red |
Errors, exceptions, critical states, HTTP ≥ 500 |
yellow |
Warnings, deprecations, HTTP 4xx |
blue |
Information, general data |
green |
Success |
purple |
Database queries |
pink |
Email, user events |
gray |
Default / uncategorized |
Unparseable input is always marked with the red flag.
Limits and trimming
Before display, Dumpio defensively bounds each content so a hostile or accidentally huge dump can't block rendering:
| Limit | Default | Behavior on exceeding |
|---|---|---|
| Max depth | 32 | Deeper values are replaced with [Max depth exceeded] |
| Max string length | 100,000 chars | The string is trimmed with a …[truncated] marker |
| Max keys / elements | 2,000 | The overflow is collapsed into a …truncated marker |
Exception: html and mail dumps get a much larger string-length limit (2,000,000 chars) so whole page and email bodies survive.
These limits protect rendering and are independent of the network maximum size limit (that one rejects the whole request before parsing, see Security).
The raw fallback dump
If a message can't be parsed as JSON, Dumpio does not discard it. It stores a raw dump with the original text and the parser error, marked with the red flag. The detail shows "Could not parse as JSON – …" above the original content. This applies to HTTP (which still responds 202) and TCP.
A fuller example
1{2 "message": "Order placed",3 "flag": "green",4 "channel": "checkout",5 "timestamp": 1749900000000,6 "order_id": 123,7 "customer": { "id": 7, "email": "ada@example.com" },8 "totals": { "net": 1239.5, "vat": 260.4 }9}
Everything under the order_id, customer, and totals keys is your content and renders as an interactive tree with per-node copy buttons.