Porter records an audit log entry for every authenticated API call made against your project — including dashboard actions, CLI commands, and direct API requests. The API Audit Logs tab lets you filter that history in the UI and export the filtered result set as CSV for compliance review, SIEM ingest, or offline analysis.Documentation Index
Fetch the complete documentation index at: https://porter-mintlify-c3759f77.mintlify.app/llms.txt
Use this file to discover all available pages before exploring further.
When to use this
- Producing evidence for SOC 2, HIPAA, or internal access-review controls.
- Investigating who made a specific change (e.g. “who redeployed the API last Friday at 2pm?”).
- Feeding Porter API activity into an external SIEM or data warehouse on a recurring cadence.
- Sharing a scoped slice of activity with auditors without granting them dashboard access.
Viewing audit logs
Navigate to Settings → API Audit Logs in your project. Each row records:- Started at — UTC timestamp the request arrived.
- Actor — the user, service account, or CLI bearer token that made the call.
- Method / Path / Action — HTTP method, route, and the high-level operation (for example,
UpdateApp). - Resource — the resource type, ID, and human-readable name the call targeted.
- Cluster and Preview environment — populated when the request was scoped to one.
- Remote IP and User agent — request origin.
- Status code — the response code returned to the caller.
Exporting to CSV
Once you’ve narrowed the view to the rows you care about, click Export CSV next to the view-mode toggle. The button submits the current filter set to the export endpoint and streams the matching rows back as a CSV file, which your browser downloads automatically. The file is namedapi-audit-logs-project-<project_id>-<start>-to-<end>.csv and uses a stable column order so it can be parsed by spreadsheet tools or scripts:
cluster_id is empty on project-scoped calls).
The export respects every filter currently applied in the UI. To dump the full project history for a window, clear all filters except the date range before clicking Export CSV.
Behavior and limits
- Streaming response. The CSV streams as it is generated, so large exports begin downloading immediately rather than waiting for the entire result set to be assembled. Keep the browser tab open until the download completes.
- Self-audited. Each export is itself recorded as an audit row (
action = ExportApiAuditLogs) so you have a trail of who exported what. - Truncation marker. If the stream fails after the file has started downloading, Porter appends a final row containing the single value
__porter_export_failed__. Treat any file ending in that sentinel as incomplete and retry with a narrower filter or date range. - Date range required. The export endpoint validates the request before streaming begins, so invalid date ranges return a
400error rather than a partial CSV.
Exporting via the API
The dashboard button callsPOST /api/v2/projects/{project_id}/api-audit-logs/export. You can call the same endpoint directly to script recurring exports.
The request body mirrors the filter contract used by the audit logs query API. start_date and end_date are required; all other fields are optional.
_exclude counterpart (actors_exclude, methods_exclude, actions_exclude, status_codes_exclude, ips_exclude, resource_types_exclude, application_ids_exclude, cluster_ids_exclude) for negative matches.
A successful response is a 200 with Content-Type: text/csv; charset=utf-8 and a Content-Disposition header carrying the filename. Errors before the stream starts are returned as JSON with the standard error envelope.
Related
- Role-based access control — limit who can see the API Audit Logs tab.
- SOC 2 and HIPAA compliance — broader compliance posture for Porter-managed infrastructure.

