Export request logs
OpenAPI contract
- Method
- GET
- Path
/api/v1/request-logs/export- Security
- jwtBearer (bearer) OR automationKey (bearer)
- Response status
- 200 400 401 403 429 500
Request and response schemas
JSON
{
"requestBody": {},
"responses": {
"200": {
"description": "CSV export",
"content": {
"text/csv": {
"format": "binary",
"type": "string"
}
}
},
"400": {
"description": "Invalid request",
"content": {
"application/json": {
"$ref": "#/components/schemas/RequestError"
}
}
},
"401": {
"description": "Authentication required or invalid",
"content": {
"application/json": {
"$ref": "#/components/schemas/SecurityError"
}
}
},
"403": {
"description": "Authenticated but not permitted",
"content": {
"application/json": {
"$ref": "#/components/schemas/SecurityError"
}
}
},
"429": {
"description": "Rate limit exceeded",
"content": {
"application/json": {
"$ref": "#/components/schemas/SecurityError"
}
}
},
"500": {
"description": "Unexpected server error",
"content": {
"application/json": {
"$ref": "#/components/schemas/ApiError"
}
}
}
}
}GET /api/v1/request-logs/export accepts a JWT or an nfy_ key with analytics:read. It accepts the same filters as the list endpoint (search, method, status, statusClass, path, apiKeyId, minLatencyMs, maxLatencyMs, from, to) except page and size, and returns up to 10,000 matching entries as a text/csv download, newest first, with a Content-Disposition filename.
The CSV begins with a header row (id,userId,apiKeyId,apiKeyPrefix,authType,method,path,queryString,statusCode,latencyMs,clientIp,userAgent,createdAt), then one row per matching entry. Fields starting with =, +, -, @, a tab, or a newline are prefixed with ' to neutralize spreadsheet formula injection.
http
GET /api/v1/request-logs/export?statusClass=5xx&from=2026-06-01T00:00:00Z
Authorization: Bearer <access token>