Get job logs.
ROLES: AUTOMATION_READ,AUTOMATION_ADMIN USER: true SERVICE ACCOUNT: true
curl --request GET \
--url https://api.revoengine.com/api/v1/automation/job/{jobId}/logs \
--header 'Authorization: Bearer <token>'const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.revoengine.com/api/v1/automation/job/{jobId}/logs', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://api.revoengine.com/api/v1/automation/job/{jobId}/logs"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text){
"data": [
{
"logId": "a1b2c3",
"time": "2026-04-17T18:20:31.000Z",
"severity": "ERROR",
"event": "JOB_FAILED",
"message": "Execution failed.",
"args": {
"jobId": "11111111-1111-1111-1111-111111111111",
"reason": "Timeout"
},
"operationTime": 123
}
],
"results": 100,
"next": true,
"total": 1000
}Authorizations
Bearer JWT token or API Key (sk-*).
Path Parameters
Query Parameters
Number of rows to skip before pagination starts. Parsed from a query-string integer.
x >= 00
Maximum number of job log rows to return. Job logs are hard-capped at 1000 rows per request.
0 <= x <= 1000200
Include the total count in the response envelope only when explicitly true. Omitted or false skips the count query.
true
Job log filter tree as JSON. Valid log filter fields include time, operationTime, logId, severity, event, message, operationId, userId, duration, status, service, url, templateId, templatePath, error.
"{\"and\":[{\"field\":\"severity\",\"op\":\"eq\",\"value\":\"ERROR\"},{\"field\":\"message\",\"op\":\"ilike\",\"value\":\"%timeout%\"}]}"
Job log sort fields are time, operationTime, logId, severity, event, message. Job logs do not expose createdAt; use time or operationTime for chronological ordering.
"operationTime,logId"
Optional DISTINCT ON logical fields as a JSON array string, indexed array query object, array, or legacy CSV. Selected distinct fields are included in the projection.
"category,global"
Job log response fields are fixed to logId, time, severity, event, message, args, operationTime. Custom field projection is ignored for this endpoint.
"[\"logId\",\"time\",\"severity\",\"event\",\"message\",\"args\",\"operationTime\"]"
Optional join definitions as a JSON string or bracket-style query object. This is only honored by endpoints that explicitly enable dynamic joins, such as dynamic database data reads. Each join has table, alias, type (left or inner), and an on condition.
"[{\"table\":\"groups_users\",\"alias\":\"gu\",\"type\":\"left\",\"on\":{\"left\":\"gu.groupsGroupId\",\"op\":\"=\",\"right\":\"g.groupId\"}}]"
Optional groupBy logical fields as a JSON array string, indexed array query object, array, or legacy CSV. Only honored when the endpoint enables dynamic grouping or already has grouped defaults.
"[\"category\",\"global\"]"
Optional cast mapping as a JSON string or bracket-style query object. Keys are selected aliases or logical fields; values are database definition types such as TEXT, INTEGER, BIGINT, NUMERIC, BOOLEAN, DATE, TIMESTAMP, TIMESTAMPTZ, JSON, JSONB, or UUID where supported.
"{\"userCount\":\"INTEGER\"}"
Optional CTE definitions as a JSON string or bracket-style query object. Only honored by endpoints that explicitly enable dynamic CTEs.
"[{\"name\":\"active_groups\",\"query\":{\"from\":{\"table\":\"groups\",\"alias\":\"g\",\"definition\":[]}}}]"
Enable debug output for the request, including compiled SQL, bound params, and bounded EXPLAIN plans when the endpoint supports it.
false
Response
OK.
Current page of job log rows.
Show child attributes
Show child attributes
[
{
"logId": "a1b2c3",
"time": "2026-04-17T18:20:31.000Z",
"severity": "ERROR",
"event": "JOB_FAILED",
"message": "Execution failed.",
"args": {
"jobId": "11111111-1111-1111-1111-111111111111",
"reason": "Timeout"
},
"operationTime": 123
}
]
Number of rows returned in the current response.
100
Indicates there is another page available.
true
Total number of matching rows when count was requested.
1000
curl --request GET \
--url https://api.revoengine.com/api/v1/automation/job/{jobId}/logs \
--header 'Authorization: Bearer <token>'const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.revoengine.com/api/v1/automation/job/{jobId}/logs', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://api.revoengine.com/api/v1/automation/job/{jobId}/logs"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text){
"data": [
{
"logId": "a1b2c3",
"time": "2026-04-17T18:20:31.000Z",
"severity": "ERROR",
"event": "JOB_FAILED",
"message": "Execution failed.",
"args": {
"jobId": "11111111-1111-1111-1111-111111111111",
"reason": "Timeout"
},
"operationTime": 123
}
],
"results": 100,
"next": true,
"total": 1000
}
