Logs are stored at SAMPLE_REPOSITORY/LogFiles/{id}.txt and served via GCS signed URL. Returns 404 — not a broken download link — when the file is absent from both local and GCS storage. Uses cursor-based pagination; do not mix cursor and offset.
Query parameters
-
Maximum number of results to return (1–100)
Minimum value is
1, maximum value is100. Default value is50. -
Opaque cursor token for cursor-based pagination. Do not mix with offset. Obtain next_cursor from the previous response's pagination object.
Maximum length is
255. -
Values are
debug,info,warning,error, orcritical. -
Values are
orchestrator,worker,build,test_runner, orweb. -
Maximum length is
100.
GET
/runs/{run_id}/logs
curl \
--request GET 'https://sampleplatform.ccextractor.org/api/v1/runs/{run_id}/logs' \
--header "Authorization: Bearer $ACCESS_TOKEN"
Response examples (200)
{
"data": [],
"pagination": {
"limit": 42,
"next_cursor": "string"
}
}
Response examples (401)
{
"code": "unauthorized",
"message": "Bearer token is missing, expired, or invalid.",
"details": {}
}
Response examples (403)
{
"code": "forbidden",
"message": "Token does not have the required scope for this operation.",
"details": {
"required_scope": "runs:write",
"token_scopes": [
"runs:read",
"results:read"
]
}
}
Response examples (404)
{
"code": "log_not_found",
"message": "Log file for run 9309 does not exist in any storage backend.",
"details": {
"run_id": 9309,
"checked": [
"local",
"gcs"
]
}
}
Response examples (429)
{
"code": "rate_limited",
"message": "Rate limit exceeded. Retry after 30 seconds.",
"details": {
"retry_after": 30,
"limit": 120,
"window": "60s"
}
}
Response examples (default)
{
"code": "not_found",
"message": "Run 9317 not found.",
"details": {}
}