Create Export
POSThttps://api.confident-ai.com/v2/projects/{projectId}/audit-logs/exports
Starts an export of one project's audit logs — every audited action recorded against that project — as a gzipped CSV, and returns the export to poll. Use the organization endpoint instead to cover every project at once.
Send an empty body ({}) to export every audit log ever recorded for the project. Send startTime and endTime together to export a single period instead: both ends are inclusive, endTime must be after startTime, and an audit log export has no cap on how long that period may be. searchTerm narrows it further. The startTime and endTime on the returned export are the period its file will cover — for an all-time export, the timestamps of the oldest and newest audit log matched.
The export runs in the background, so this responds 202 with status: IN_PROGRESS as soon as the job is queued. Poll GET /v2/projects/{projectId}/audit-logs/exports/{exportId} until status is COMPLETED; there is nothing to fetch before then. Then call GET /v2/projects/{projectId}/audit-logs/exports/{exportId}/download, which responds 302 with a Location header pointing at a pre-signed object storage URL valid for 15 minutes — follow the redirect to receive the file, and call the endpoint again rather than storing that URL. ERRORED is terminal: read errorMessage and start a new export rather than polling on.
One audit log export runs at a time per project and caller, so starting a second while one is IN_PROGRESS returns 409. A period matching no audit logs, or matching more than 10,000,000 audit logs, is rejected with 400 — narrow it with searchTerm or a shorter period.
curl -X POST "https://api.confident-ai.com/v2/projects/{projectId}/audit-logs/exports" \
-H "CONFIDENT_API_KEY: <ORGANIZATION-API-KEY>" \
-H "Content-Type: application/json" \
-d '{
"startTime": "2025-01-01T00:00:00.000Z",
"endTime": "2025-04-01T00:00:00.000Z",
"searchTerm": "jane@acme.com"
}'{
"success": true,
"data": {
"id": "<AUDIT-LOG-EXPORT-ID>",
"projectId": null,
"organizationId": "<ORGANIZATION-ID>",
"userId": "api",
"status": "IN_PROGRESS",
"exportType": "AUDIT_LOGS",
"startTime": "2025-01-01T00:00:00.000Z",
"endTime": "2025-04-01T00:00:00.000Z",
"rowCount": 18432,
"errorMessage": null,
"createdAt": "2025-04-02T09:15:00.000Z",
"completedAt": "2025-04-02T09:17:42.000Z"
},
"deprecated": false
}Headers
CONFIDENT_API_KEYstringRequiredThe organization API key for your Confident AI organization.
Path parameters
projectIdstringRequiredThe id of the project whose audit logs are exported. It must belong to the organization the API key belongs to.
Request body
startTimestringStart of the period to export, inclusive, as an ISO 8601 timestamp. Omit along with
endTimeto export all time.endTimestringEnd of the period to export, inclusive, as an ISO 8601 timestamp. Must be after
startTime. Omit along withstartTimeto export all time.searchTermstringOnly export audit logs matching this term. Matched as a substring against the actor email, API key name, API key id, actor type, action, HTTP method, IP address, resource id, user agent, and status code.
Response
Create Export succeeded.
successbooleanIndicates if the request was successful.
dataobjectOne run of an audit log export: the period it covers, where it is in its lifecycle, and how many audit logs its file holds once it completes.
Show 12 propertiesHide 12 properties
idstringThe id of the export, a UUID generated by Confident AI. Poll and download the export by this id.
projectIdstring | nullThe project whose audit logs the export covers, or null for an organization-wide export covering every project.
organizationIdstringThe organization the export belongs to.
userIdstringThe actor that started the export.
apifor an export started with an organization API key, or the user's id when started through an MCP OAuth session. An export is only visible to the actor that started it.statusenumWhere an export is in its lifecycle. It is created
IN_PROGRESS, becomesCOMPLETEDonce its file is written to storage, and becomesERROREDif the run failed. Only aCOMPLETEDexport has a file to download, and bothCOMPLETEDandERROREDare terminal.Show 3 enum valuesHide 3 enum values
IN_PROGRESSCOMPLETEDERRORED
exportTypeenumThe kind of data the file contains. Always
AUDIT_LOGSfor an export started at an audit log export endpoint.Show 5 enum valuesHide 5 enum values
TRACESTRACES_WITH_SPANSCONVERSATIONSCONVERSATION_METRICSAUDIT_LOGS
startTimestring | nullStart of the period the export covers, inclusive. For an all-time export this is the timestamp of the oldest audit log matched.
endTimestring | nullEnd of the period the export covers, inclusive. For an all-time export this is the timestamp of the newest audit log matched.
rowCountinteger | nullHow many audit logs were written to the file. Null until the export completes.
errorMessagestring | nullWhy the export failed, when
statusisERRORED. Null otherwise.createdAtstringWhen the export was started.
completedAtstring | nullWhen the export finished or failed. Null while it is still running.
deprecatedbooleanIndicates if this endpoint is deprecated.