Skip to content
Hoody.com

Use these endpoints to read file contents, list directory contents, search files, and download files from a container’s filesystem. The WebDAV-style endpoint at /{path} returns HTML or JSON listings, while the v1 endpoint at /api/v1/files/{path} exposes additional features such as grep, glob, thumbnails, line-range extraction, and remote backends. Both endpoints also support a journal mode for inspecting historical file revisions.

List directory contents in HTML or JSON format, or download a file. For file paths, append ?download (or ?download=true) to force a Content-Disposition: attachment response. The endpoint also exposes journal operations via ?history, ?at, ?revision, and ?diff query parameters.

NameInTypeRequiredDescription
pathpathstringYesFile or directory path
jsonquerystringNoReturn JSON format instead of HTML. Pass an empty value.
simplequerystringNoReturn simple text listing
sortquerystringNoSort by field. Allowed values: name, mtime, size.
orderquerystringNoSort order. Allowed values: asc, desc.
hashquerystringNoGet SHA256 hash of file (returns plain text hash)
sha256querystringNoGet SHA256 hash of file (alias for hash)
base64querystringNoGet file content as base64 encoded string
editquerystringNoOpen file in Web UI editor (requires allow-upload permission)
viewquerystringNoView file in Web UI (read-only mode)
downloadquerystringNoFor file paths: force browser download (Content-Disposition: attachment). Allowed values: empty, 1, or true. For directory paths, triggers the URL download-manager operation.
content-typequerystringNoOverride Content-Type header for file downloads
historyquerystringNoList all revisions of a file. Returns JSON with a revisions array; paginate via after_id. Mutually exclusive with at, revision, and diff.
atquerystringNoRead file content at a point in time. Accepts an RFC3339 timestamp or Unix milliseconds. Mutually exclusive with history, revision, and diff. Composable with lines, hash, and base64.
revisionqueryintegerNoRead file content by stable per-path sequence number. Mutually exclusive with history, at, and diff. Composable with lines, hash, and base64.
diffquerystringNoCompute a unified diff between two versions. Requires from_seq or from_ts. Optional to_seq or to_ts (defaults to current file). Mutually exclusive with history, at, and revision.
from_seqqueryintegerNoSource revision sequence number for ?diff. Mutually exclusive with from_ts.
from_tsquerystringNoSource timestamp for ?diff (RFC3339 or Unix ms). Mutually exclusive with from_seq.
to_seqqueryintegerNoTarget revision sequence number for ?diff. Mutually exclusive with to_ts. Defaults to current file on disk.
to_tsquerystringNoTarget timestamp for ?diff (RFC3339 or Unix ms). Mutually exclusive with to_seq.
after_idqueryintegerNoCursor for ?history pagination. Returns entries with id > after_id.
limitqueryintegerNoMaximum entries to return for ?history. Default: 100.
{
"auth": true,
"user": "alice@example.com",
"allow_archive": true,
"allow_delete": true,
"allow_search": true,
"allow_upload": true,
"dir_exists": true,
"href": "/home/alice",
"kind": "Index",
"uri_prefix": "/",
"paths": [
{
"name": "documents",
"path_type": "Dir",
"size": 5,
"mtime": 1700000000000,
"revisions": null
},
{
"name": "README.md",
"path_type": "File",
"size": 2048,
"mtime": 1700000000000,
"revisions": 3
}
]
}
Terminal window
curl -X GET "https://{projectId}-{containerId}-files-1.{server}.containers.hoody.com/home/alice?json=" \
-H "Authorization: Bearer <token>"

List directory contents in JSON format, download a file, or run a content search (grep/glob), thumbnail, or line-range extraction. Supports an optional backend parameter for remote file access, and the same journal operations (?history, ?at, ?revision, ?diff) as the WebDAV-style endpoint.

NameInTypeRequiredDescription
pathpathstringYesFile or directory path
backendquerystringNoBackend ID for remote file access
hashquerystringNoGet SHA256 hash of file
sha256querystringNoGet SHA256 hash of file (alias for hash)
base64querystringNoGet file content as base64
previewquerystringNoPreview archive contents (for zip/tar files). Alias: ?contents.
contentsquerystringNoAlias for ?preview — list archive contents
statquerystringNoGet file/directory metadata (stat) without downloading content
thumbnailquerystringNoReturn a processed image (resize, format convert, blur, grayscale). Requires the service to be started with --allow-thumbnails; returns 403 when disabled.
grepquerystringNoSearch file/directory contents for a regex pattern (or literal if fixed_string=true). Requires --allow-grep.
ignore_casequerybooleanNoCase-insensitive grep matching. Default: false.
fixed_stringquerybooleanNoTreat grep pattern as literal string, not regex. Default: false.
globquerystringNoFind files matching a glob pattern (e.g. **/*.rs, src/**/*.{ts,tsx}). Requires --allow-search. Directory paths only.
contextqueryintegerNoNumber of context lines before/after each grep match. Default: 0.
max_countqueryintegerNoMax matches per file for grep. Default: 50.
max_matchesqueryintegerNoTotal max matches across all files for grep. Default: 500.
max_depthqueryintegerNoDirectory recursion depth for grep. Default: 50.
max_filesizequeryintegerNoSkip files larger than this (bytes) during grep. Default: 10485760.
timeoutqueryintegerNoGrep timeout in seconds. Default: 30.
no_ignorequerybooleanNoBypass .gitignore filtering during grep. Default: false.
max_resultsqueryintegerNoMax entries returned for glob search. Default: 1000.
max_files_scannedqueryintegerNoMax filesystem entries scanned during glob search. Default: 100000.
sortquerystringNoSort glob results by one of mtime, name, or size. Default: mtime.
orderquerystringNoSort order for glob results. Allowed values: asc, desc. Default: desc for mtime, asc for name/size.
linesquerystringNoExtract specific lines from a file. Formats: 10-50 (range, 1-indexed inclusive), 100 (single line), -20 (last 20 lines / tail), 50- (line 50 to end). Returns text/plain with X-Line-Range header. X-Total-Lines header included when naturally known (scan reached EOF). Max 100,000 lines or 64MB per request.
historyquerystringNoList all revisions of a file. Returns JSON with a revisions array; paginate via after_id. Mutually exclusive with at, revision, and diff.
atquerystringNoRead file content at a point in time. Accepts an RFC3339 timestamp or Unix milliseconds. Mutually exclusive with history, revision, and diff. Composable with lines, hash, and base64.
revisionqueryintegerNoRead file content by stable per-path sequence number. Mutually exclusive with history, at, and diff. Composable with lines, hash, and base64.
diffquerystringNoCompute a unified diff between two versions. Requires from_seq or from_ts. Optional to_seq or to_ts (defaults to current file). Mutually exclusive with history, at, and revision.
from_seqqueryintegerNoSource revision sequence number for ?diff. Mutually exclusive with from_ts.
from_tsquerystringNoSource timestamp for ?diff (RFC3339 or Unix ms). Mutually exclusive with from_seq.
to_seqqueryintegerNoTarget revision sequence number for ?diff. Mutually exclusive with to_ts. Defaults to current file on disk.
to_tsquerystringNoTarget timestamp for ?diff (RFC3339 or Unix ms). Mutually exclusive with to_seq.
after_idqueryintegerNoCursor for ?history pagination. Returns entries with id > after_id.
limitqueryintegerNoMaximum entries to return for ?history. Default: 100.
zipquerystringNoDownload a directory as a streaming zip archive (bare flag, e.g. ?zip). Local directories only; requires --allow-archive. Same behavior as the WebDAV-style /{directory}?zip.
{
"auth": true,
"user": "alice@example.com",
"allow_archive": true,
"allow_delete": true,
"allow_search": true,
"allow_upload": true,
"dir_exists": true,
"href": "/home/alice",
"kind": "Index",
"uri_prefix": "/",
"paths": [
{
"name": "documents",
"path_type": "Dir",
"size": 5,
"mtime": 1700000000000,
"revisions": null
},
{
"name": "README.md",
"path_type": "File",
"size": 2048,
"mtime": 1700000000000,
"revisions": 3
}
]
}
Terminal window
curl -X GET "https://{projectId}-{containerId}-files-1.{server}.containers.hoody.com/api/v1/files/home/alice/README.md" \
-H "Authorization: Bearer <token>"