The execution log API surfaces every log file produced by commands run inside an exec container. Use these endpoints to enumerate available logs, stream them in real time, read paginated slices, run full-text or regex searches, and prune old entries. All endpoints are scoped to a single exec instance and require a valid Hoody access token in the Authorization header.
The base URL for every operation on this page is https://{projectId}-{containerId}-exec-1.{server}.containers.hoody.com.
Enumerate log files and directories available to the exec instance. Use the optional type filter to narrow the result to a specific log class and limit to cap the number of entries returned.
Name In Type Required Description typequery string No Type query parameter limitquery string No Limit query parameter
curl -G " https://{projectId}-{containerId}-exec-1.{server}.containers.hoody.com/api/v1/exec/logs/list " \
-H " Authorization: Bearer <token> " \
--data-urlencode " type=execution " \
--data-urlencode " limit=50 "
import { HoodyClient } from ' hoody-sdk ' ;
const client = new HoodyClient ({ baseURL : ' https://{projectId}-{containerId}-exec-1.{server}.containers.hoody.com ' , token : process . env . HOODY_TOKEN });
await client . exec . logs . list ({ type : ' execution ' , limit : ' 50 ' });
" name " : " executions.log " ,
" path " : " /var/log/hoody/executions.log " ,
" modified " : " 2026-01-15T10:42:13.000Z "
" path " : " /var/log/hoody/errors.log " ,
" modified " : " 2026-01-15T10:41:02.000Z "
" error " : " VALIDATION_ERROR " ,
" code " : " VALIDATION_ERROR " ,
" timestamp " : " 2026-01-15T10:42:13.000Z " ,
" reason " : " Must be a positive integer "
Error Code Title Description Resolution VALIDATION_ERRORInvalid input Request parameters failed validation Check parameter format and requirements
" error " : " Internal server error " ,
" timestamp " : " 2026-01-15T10:42:13.000Z " ,
Open a live stream of a log file. The response stays open and emits new lines as they are appended to the file. Set follow=true to receive ongoing output (equivalent to tail -f); omit it for a one-shot dump.
Name In Type Required Description filequery string Yes File query parameter followquery string No Follow query parameter
curl " https://{projectId}-{containerId}-exec-1.{server}.containers.hoody.com/api/v1/exec/logs/stream?file=executions.log&follow=true " \
-H " Authorization: Bearer <token> "
import { HoodyClient } from ' hoody-sdk ' ;
const client = new HoodyClient ({ baseURL : ' https://{projectId}-{containerId}-exec-1.{server}.containers.hoody.com ' , token : process . env . HOODY_TOKEN });
await client . exec . logs . stream ({ file : ' executions.log ' , follow : ' true ' });
" error " : " VALIDATION_ERROR " ,
" code " : " VALIDATION_ERROR " ,
" timestamp " : " 2026-01-15T10:42:13.000Z " ,
" reason " : " File parameter is required "
Error Code Title Description Resolution VALIDATION_ERRORInvalid input Request parameters failed validation Check parameter format and requirements
" timestamp " : " 2026-01-15T10:42:13.000Z " ,
Error Code Title Description Resolution NOT_FOUNDResource not found The requested resource does not exist Verify the resource identifier
" error " : " Internal server error " ,
" timestamp " : " 2026-01-15T10:42:13.000Z " ,
Read a slice of a log file. Provide either file (a path) or executionId to identify the log. tail controls whether the slice is taken from the end or the beginning, lines caps the returned slice, and search filters lines to those containing the given substring.
Name Type Required Default Description filestring No — File executionIdstring No — Execution Id linesinteger No 100Lines tailboolean No trueTail searchstring No — Search
curl -X POST " https://{projectId}-{containerId}-exec-1.{server}.containers.hoody.com/api/v1/exec/logs/read " \
-H " Authorization: Bearer <token> " \
-H " Content-Type: application/json " \
"file": "executions.log",
import { HoodyClient } from ' hoody-sdk ' ;
const client = new HoodyClient ({ baseURL : ' https://{projectId}-{containerId}-exec-1.{server}.containers.hoody.com ' , token : process . env . HOODY_TOKEN });
await client . exec . logs . read ({
" file " : " executions.log " ,
" 2026-01-15T10:41:55.123Z [ERROR] Failed to connect to upstream service " ,
" 2026-01-15T10:41:57.481Z [ERROR] Retry attempt 2 timed out "
" modified " : " 2026-01-15T10:42:13.000Z "
" error " : " VALIDATION_ERROR " ,
" code " : " VALIDATION_ERROR " ,
" timestamp " : " 2026-01-15T10:42:13.000Z " ,
" reason " : " Must be a positive integer "
Error Code Title Description Resolution VALIDATION_ERRORInvalid input Request parameters failed validation Check parameter format and requirements
" timestamp " : " 2026-01-15T10:42:13.000Z " ,
Error Code Title Description Resolution NOT_FOUNDResource not found The requested resource does not exist Verify the resource identifier
" error " : " Internal server error " ,
" timestamp " : " 2026-01-15T10:42:13.000Z " ,
Search one or more log files for a substring (query) or a regular expression (regex). Use files to restrict the search to specific files; omit it to search every log file known to the container.
Name Type Required Default Description querystring No — Query regexstring No — Regex filesarray No — Files limitinteger No 1000Limit caseSensitiveboolean No falseCase Sensitive
curl -X POST " https://{projectId}-{containerId}-exec-1.{server}.containers.hoody.com/api/v1/exec/logs/search " \
-H " Authorization: Bearer <token> " \
-H " Content-Type: application/json " \
"regex": "Failed to connect .* upstream",
"files": ["executions.log", "errors.log"],
import { HoodyClient } from ' hoody-sdk ' ;
const client = new HoodyClient ({ baseURL : ' https://{projectId}-{containerId}-exec-1.{server}.containers.hoody.com ' , token : process . env . HOODY_TOKEN });
await client . exec . logs . search ({
regex : ' Failed to connect .* upstream ' ,
files : [ ' executions.log ' , ' errors.log ' ],
" query " : " Failed to connect .* upstream " ,
" file " : " executions.log " ,
" line " : " 2026-01-15T10:41:55.123Z [ERROR] Failed to connect to upstream service " ,
" timestamp " : " 2026-01-15T10:41:55.123Z "
" error " : " VALIDATION_ERROR " ,
" code " : " VALIDATION_ERROR " ,
" timestamp " : " 2026-01-15T10:42:13.000Z " ,
" reason " : " Invalid regular expression pattern "
Error Code Title Description Resolution VALIDATION_ERRORInvalid input Request parameters failed validation Check parameter format and requirements
" error " : " Internal server error " ,
" timestamp " : " 2026-01-15T10:42:13.000Z " ,
Delete log files or log entries. Without filters the operation refuses to run: either scope it to a single file with file, a log type with type, entries older than a threshold with olderThanDays, or set confirm=true to acknowledge a wholesale purge.
Name In Type Required Description filequery string No File query parameter typequery string No Type query parameter olderThanDaysquery string No OlderThanDays query parameter confirmquery string No Confirm query parameter
curl -X DELETE " https://{projectId}-{containerId}-exec-1.{server}.containers.hoody.com/api/v1/exec/logs/clear?type=execution&olderThanDays=30&confirm=true " \
-H " Authorization: Bearer <token> "
import { HoodyClient } from ' hoody-sdk ' ;
const client = new HoodyClient ({ baseURL : ' https://{projectId}-{containerId}-exec-1.{server}.containers.hoody.com ' , token : process . env . HOODY_TOKEN });
await client . exec . logs . clear ({ type : ' execution ' , olderThanDays : ' 30 ' , confirm : ' true ' });
" message " : " Cleared 42 log entries older than 30 days. "
" error " : " VALIDATION_ERROR " ,
" code " : " VALIDATION_ERROR " ,
" timestamp " : " 2026-01-15T10:42:13.000Z " ,
" reason " : " Destructive operation requires either confirm=true or a scoped filter "
Error Code Title Description Resolution VALIDATION_ERRORInvalid input Request parameters failed validation Check parameter format and requirements
" error " : " Internal server error " ,
" timestamp " : " 2026-01-15T10:42:13.000Z " ,
Caution
Clearing logs is irreversible. Always scope the request with file, type, or olderThanDays, or explicitly pass confirm=true. Once a log entry is deleted it cannot be recovered.