AbuseZero

Exports

Export your workspace's evaluations as a CSV file, with or without their signal assessments.

Exports package your workspace's evaluations into a CSV file for your own analysis, warehouse or review. Each export covers up to the last 90 days. It's produced in the background and stays available for 24 hours after you request it. A data deletion removes every export in the workspace, so download what you need first. For a walkthrough, see Export and delete data.

Examples on this page use a server client:

import { AbuseZero } from "abusezero/server";

const abusezero = new AbuseZero({ key: process.env.ABUSEZERO_SECRET_KEY!, outage: "throw" });

The export object

{
  "object": "export",
  "id": "exp_6e0a2c4b-8d1f-4b3e-9a5c-7f2d4b6e8a01",
  "state": "complete",
  "failure": null,
  "rows": 4812,
  "include_evidence": false,
  "completed_at": "2026-10-29T12:04:37.000Z",
  "expires_at": "2026-10-30T12:03:58.000Z"
}
FieldTypeDescription
object"export"The object type.
idstringThe export ID, starting with exp_.
statepending, complete or failedpending is still being produced. complete is ready to download. failed couldn't be produced.
failureobject or nullWhy the export failed, with a code and a message. Present when state is failed, otherwise null.
rowsinteger or nullHow many evaluations the file holds. null until the export completes.
include_evidencebooleanWhether the file includes signal assessments and device profile status.
completed_atstring or nullWhen the export completed or failed.
expires_atstringWhen the export stops being available, 24 hours after it was requested.

An export holds at most 10,000 evaluations. When the chosen range has more, the export fails with failure.code too_many_rows. Request a shorter range.

failure.codefailure.message
too_many_rowsThis export has over 10,000 evaluations. Request a shorter date range.
export_failedAbuseZero couldn't finish this export. Request a new export.

New codes may be added within v1. Treat a code you don't recognize like export_failed.

File columns

ColumnDescription
evaluation_idThe evaluation ID, starting with eval_.
created_atWhen the evaluation ran.
benefitThe benefit key.
resultallow or deny.
reason_codeThe reason code.
reasonThe reason message.
risk_scoreThe AbuseZero Risk Score, from 0 to 100, or empty.
risk_bandlow, elevated, high or not_assessed.
policy_versionThe policy version the evaluation ran under.
claim_idThe claim_id you sent.
outcome_stateThe claim's outcome state.

With include_evidence, the file adds:

ColumnDescription
identity, device, network, automation, benefit_historyThe assessment for each signal family: clear, elevated, high or unavailable.
device_profile_statuscaptured when browser data was retained with the evaluation, or not_retained.
device_profile_expires_atWhen the retained browser data expires, or empty.

Request an export

MethodPathScopeIdempotency-Key
POST/v1/exportsexports:createRequired

Also available as abusezero exports create in the AbuseZero CLI, abusezero_request_export on the AbuseZero MCP server and requestExport() in the AbuseZero Node.js SDK.

An export with include_evidence also needs the evaluation_evidence:read scope. With an OAuth token, the signed-in member also needs permission to export data, plus permission to reveal evidence when include_evidence is true.

Request body

FieldTypeRequiredLimitsDescription
daysintegerNo1 to 90, default 30Export evaluations from this many recent days.
include_evidencebooleanNoDefault falseAdd the signal assessment and device profile columns.

Example

const job = await abusezero.requestExport({ days: 30 }, "export-2026-10-29");

Response

Returns 202. Retrieve the export at status_url until its state is complete.

{
  "object": "export",
  "id": "exp_6e0a2c4b-8d1f-4b3e-9a5c-7f2d4b6e8a01",
  "status": "pending",
  "status_url": "/v1/exports/exp_6e0a2c4b-8d1f-4b3e-9a5c-7f2d4b6e8a01"
}

Errors

CodeStatusMeaning
EVIDENCE_SCOPE_REQUIRED403include_evidence is true, but the credential doesn't have the evaluation_evidence:read scope.
PERMISSION_REQUIRED403With an OAuth token, the signed-in member doesn't have the permission this export needs. Ask the workspace owner.

For every other code, see REST API errors.

Retrieve an export

MethodPathScopeIdempotency-Key
GET/v1/exports/{id}exports:readNot used

Also available as abusezero exports get in the AbuseZero CLI, abusezero_get_export on the AbuseZero MCP server and call() in the AbuseZero Node.js SDK.

Path parameters

ParameterTypeDescription
idstringThe export ID, starting with exp_.

Example

const job = await abusezero.call("/v1/exports/exp_6e0a2c4b-8d1f-4b3e-9a5c-7f2d4b6e8a01");

Response

Returns 200 with an export object.

Errors

CodeStatusMeaning
RESOURCE_NOT_FOUND404No export with this ID exists in the workspace.

Download an export

Returns a short-lived link to the export's CSV file.

MethodPathScopeIdempotency-Key
GET/v1/exports/{id}/downloadexports:readNot used

Also available as abusezero exports download in the AbuseZero CLI, abusezero_get_export_download on the AbuseZero MCP server and call() in the AbuseZero Node.js SDK.

Downloading an export with evidence also needs the evaluation_evidence:read scope and, with an OAuth token, the signed-in member's permission to reveal evidence. Every download is recorded in your audit log.

Path parameters

ParameterTypeDescription
idstringThe export ID, starting with exp_.

Example

const download = await abusezero.call(
  "/v1/exports/exp_6e0a2c4b-8d1f-4b3e-9a5c-7f2d4b6e8a01/download",
) as { url: string; expires_at: string };
const csv = await fetch(download.url).then((response) => response.text());

Response

Returns 200.

{
  "object": "export_download",
  "url": "https://api.abusezero.com/…",
  "expires_at": "2026-10-30T12:03:58.000Z"
}
FieldTypeDescription
urlstringThe file link. It works for 5 minutes. Request the download again for a new link. A link that fails returns the standard error envelope, for example TRANSFER_EXPIRED once the 5 minutes have passed.
expires_atstringWhen the export itself stops being available.

Errors

CodeStatusMeaning
EXPORT_NOT_FOUND404The export doesn't exist or has expired. Request a new export.
EXPORT_NOT_READY409The export isn't complete. If it's pending, wait for it to finish, then download it. If it's failed, request a new export.
EVIDENCE_SCOPE_REQUIRED403The export includes evidence, but the credential doesn't have the evaluation_evidence:read scope.
PERMISSION_REQUIRED403With an OAuth token, the export includes evidence and the signed-in member doesn't have permission to reveal it. Ask the workspace owner.

List exports

Returns exports, most recent first.

MethodPathScopeIdempotency-Key
GET/v1/exportsexports:readNot used

Also available as abusezero exports list in the AbuseZero CLI, abusezero_list_exports on the AbuseZero MCP server and exports() in the AbuseZero Node.js SDK.

Query parameters

ParameterTypeRequiredLimitsDescription
limitintegerNo1 to 100, default 50How many exports to return.
cursorstringNoThe next_cursor from the previous page, unchanged.

Example

const page = await abusezero.exports();

Response

Returns 200.

{
  "object": "list",
  "data": [
    {
      "object": "export",
      "id": "exp_6e0a2c4b-8d1f-4b3e-9a5c-7f2d4b6e8a01",
      "state": "complete",
      "failure": null,
      "rows": 4812,
      "include_evidence": false,
      "completed_at": "2026-10-29T12:04:37.000Z",
      "expires_at": "2026-10-30T12:03:58.000Z"
    }
  ],
  "next_cursor": null
}

How is this guide?

Last updated on

On this page