Timeline
noodle stores response history for every request under <collection>/.timeline/.
One file per request, mirroring the request ID structure.

Directory Layout
Section titled “Directory Layout”.collection/├── .timeline/│ ├── get-users.yml # Timeline for request "get-users"│ ├── get-users.yml.bodies/ # Compressed bodies larger than 10 KB│ │ └── <entry-id>-response.gz│ └── users/│ └── login.yml # Timeline for request "users/login"File Format
Section titled “File Format”Each timeline file is a YAML array of entries. Max 50 entries, newest first
(prepended on save). Request and response bodies larger than 10 KB are stored
in a sibling .yml.bodies/ directory as gzip-compressed sidecars, so the full
body remains available without bloating the YAML file.
- timestamp: 1783374564216 envName: development request: id: users/get-users name: Get Users method: GET url: https://api.example.com/users headers: {} params: - name: page value: "1" auth: type: inherit response: status: 200 statusText: OK headers: content-type: application/json body: "[...]" timeMs: 56.27 size: 27520Entry Structure
Section titled “Entry Structure”| Field | Type | Description |
|---|---|---|
timestamp |
number | Unix timestamp in ms |
id |
string | Unique entry ID used to name body sidecars |
envName |
string | Active environment name when sent |
request |
object | Snapshot of the request at send time |
response |
object | Response data (present on success) |
error |
object | Error data (present on failure, instead of response) |
Response Fields
Section titled “Response Fields”| Field | Type | Description |
|---|---|---|
status |
number | HTTP status code |
statusText |
string | HTTP status text |
headers |
map | Response headers |
body |
string | Response body, when it is stored inline |
bodyRef |
object | Reference to a gzip sidecar for a body larger than 10 KB |
timeMs |
number | Response time in milliseconds |
size |
number | Response body size in bytes |
Error Fields
Section titled “Error Fields”| Field | Type | Description |
|---|---|---|
message |
string | Error description |
Security
Section titled “Security”Timeline request snapshots resolve ordinary environment variables but redact declared environment secrets, proxy/TLS settings secrets, sensitive headers, and literal auth credentials before persistence. Network messages and errors receive the same known-secret redaction. Server response status text, headers, and bodies remain exactly as received, and ordinary variables are not treated as secrets.
The stored snapshot represents the environment selected when the request was
sent; switching environments does not rewrite old entries. Timeline YAML and
compressed sidecars can still contain sensitive public variables or response
payloads, so do not commit .timeline/.
Body Sidecars
Section titled “Body Sidecars”When a request or response body exceeds 10 KB, the corresponding body field
is omitted and replaced with a bodyRef:
bodyRef: file: <entry-id>-response.gz encoding: gzip size: 27520The file path is relative to that request’s .yml.bodies/ directory. Noodle
removes sidecars when entries are evicted by the 50-entry limit or when the
timeline is cleared. Treat sidecars as application-managed files.
Useful Queries
Section titled “Useful Queries”Agents and scripts can analyze timeline data:
- Average response time: Sum
response.timeMs/ count - Success rate: Count
response.statusin 2xx range / total count - Recent errors: Filter entries where
erroris present - Response size trend: Compare
response.sizeacross entries - Environment usage: Which
envNamewas used per entry