Skip to content

Use these endpoints to query the file mutation journal, view journal storage statistics, and force pending entries to be flushed to disk. The journal records every file change event — including create, write, delete, move, copy, chmod, and chown operations — and supports cursor-based pagination for large result sets.

GET /api/v1/journal

Returns a paginated list of file mutation journal entries, filtered by path prefix, operation type, and timestamp. Use the after_id cursor to fetch subsequent pages when has_more is true.

NameInTypeRequiredDescription
pathquerystringNoFilter entries by path prefix
opquerystringNoFilter by operation type(s), comma-separated (e.g. write,delete)
sincequerystringNoFilter entries since timestamp (RFC3339 or Unix ms)
limitqueryintegerNoMax entries to return
after_idqueryintegerNoCursor: return entries with id > after_id
Terminal window
curl -G "https://api.hoody.com/api/v1/journal" \
-H "Authorization: Bearer <token>" \
--data-urlencode "path=/workspace/data" \
--data-urlencode "op=write,delete" \
--data-urlencode "limit=50"

GET /api/v1/journal/stats

Returns storage statistics for the journal system, including entry counts, blob storage usage, writer health, and pruning information. Use this to monitor journal health and detect completeness degradation.

This endpoint takes no parameters.

Terminal window
curl "https://api.hoody.com/api/v1/journal/stats" \
-H "Authorization: Bearer <token>"
FieldTypeRequiredDescription
entries_skipped_totalintegerYesNumber of paths with entries that were dropped (writer outage)
newest_entry_tsintegerNoTimestamp (Unix ms) of the most recent entry, or null if no entries
parse_failuresintegerYesCount of corrupted/malformed JSONL lines encountered during scans
pruned_before_datestringNoISO date (YYYY-MM-DD) before which all day files have been pruned, or null if no pruning
skipped_overflowintegerYesCount of dropped paths that exceeded the tracking cap. Non-zero means completeness detection is degraded
total_blob_bytesintegerYesTotal bytes used by content blobs
total_blobsintegerYesTotal number of content blobs stored
total_entriesintegerYesTotal number of journal entries across all day files
total_storage_bytesintegerYesTotal bytes used by journal (entries + blobs)
writer_healthybooleanYesWhether the background JSONL writer task is healthy

POST /api/v1/journal/flush

Forces all pending journal entries to be written and fsynced to disk. Returns 200 with flushed=true if all entries were durably persisted, or 503 with flushed=false if the flush failed or entries were lost.

This endpoint takes no parameters.

Terminal window
curl -X POST "https://api.hoody.com/api/v1/journal/flush" \
-H "Authorization: Bearer <token>"