Exports

Export a tenant or one account as an archive, then download or delete it.

Guides: Exports.

MethodPathOperationScope
GET/v1/exportsList exports, newest firstadmin
POST/v1/exportsExport the tenant or one accountadmin
GET/v1/exports/{exportId}Get an exportadmin
DELETE/v1/exports/{exportId}Delete an export and its fileadmin
GET/v1/exports/{exportId}/downloadDownload an export (application/gzip)admin
GET
/v1/exports

Runs in your browser against api.workwae.com with the key you enter. Use a read-only key, limited to a test account if you can.

Requires the admin scope.

Required scope: admin.

Query Parameters

limit?integer
Range1 <= value <= 200
Default50
cursor?string
Length1 <= length <= 512

Response Body

OK

application/json
  1. response
items*array<>
nextCursor*|null
Example Request
curl -X GET 'https://api.workwae.com/v1/exports'
Example Response
{  "items": [    {      "id": "c4e6a8b0-1d3f-4a5c-8e7b-9d1f3a5c7e9b",      "accountId": "6f1c2a4e-8b3d-4e5f-9a7b-1c2d3e4f5a6b",      "accountEmail": "string",      "status": "queued",      "bytes": 0,      "sha256": "string",      "contents": {        "property1": 0,        "property2": 0      },      "error": "string",      "createdAt": "2026-05-04T09:30:00.000Z",      "startedAt": "2026-05-04T09:30:00.000Z",      "completedAt": "2026-05-04T09:30:00.000Z",      "expiresAt": "2026-05-04T09:30:00.000Z"    }  ],  "nextCursor": "eyJ0eG5pZCI6IjQyIiwiaWQiOjEwMDF9"}
POST
/v1/exports

Runs against the live API with the key you enter: this change really happens. Use a key limited to a test account.

Builds a gzip-compressed tar in the background: accounts without secrets, mailboxes, message metadata (JSON lines), stored message bodies as .eml, calendars and events as JSON and .ics, and for a tenant export its webhooks (without signing secrets), templates and settings. Follow it with GET /v1/exports/{exportId}, or the export.completed and export.failed events. Requires the admin scope.

Required scope: admin.

Request Body

application/json
  1. body
accountId?string
Formatuuid

Response Body

OK

application/json
  1. response
id*string
Formatuuid
accountId*|null
accountEmail*string|null
status*ExportStatus
Value in"queued""running""completed""failed""expired"
bytes*integer
sha256*string|null
contents*
error*string|null
createdAt*string
Formatdate-time
startedAt*|null
completedAt*|null
expiresAt*|null
Example Request
curl -X POST 'https://api.workwae.com/v1/exports' \  -H 'Content-Type: application/json' \  -d '{}'
Example Response
{  "id": "c4e6a8b0-1d3f-4a5c-8e7b-9d1f3a5c7e9b",  "accountId": "6f1c2a4e-8b3d-4e5f-9a7b-1c2d3e4f5a6b",  "accountEmail": "string",  "status": "queued",  "bytes": 0,  "sha256": "string",  "contents": {    "property1": 0,    "property2": 0  },  "error": "string",  "createdAt": "2026-05-04T09:30:00.000Z",  "startedAt": "2026-05-04T09:30:00.000Z",  "completedAt": "2026-05-04T09:30:00.000Z",  "expiresAt": "2026-05-04T09:30:00.000Z"}

Get an export

GET
/v1/exports/{exportId}

Runs in your browser against api.workwae.com with the key you enter. Use a read-only key, limited to a test account if you can.

Requires the admin scope.

Required scope: admin.

Path Parameters

exportId*string
Formatuuid

Response Body

OK

application/json
  1. response
id*string
Formatuuid
accountId*|null
accountEmail*string|null
status*ExportStatus
Value in"queued""running""completed""failed""expired"
bytes*integer
sha256*string|null
contents*
error*string|null
createdAt*string
Formatdate-time
startedAt*|null
completedAt*|null
expiresAt*|null
Example Request
curl -X GET 'https://api.workwae.com/v1/exports/56677aa9-5bc6-4869-a067-424b6e1df1a0'
Example Response
{  "id": "c4e6a8b0-1d3f-4a5c-8e7b-9d1f3a5c7e9b",  "accountId": "6f1c2a4e-8b3d-4e5f-9a7b-1c2d3e4f5a6b",  "accountEmail": "string",  "status": "queued",  "bytes": 0,  "sha256": "string",  "contents": {    "property1": 0,    "property2": 0  },  "error": "string",  "createdAt": "2026-05-04T09:30:00.000Z",  "startedAt": "2026-05-04T09:30:00.000Z",  "completedAt": "2026-05-04T09:30:00.000Z",  "expiresAt": "2026-05-04T09:30:00.000Z"}
DELETE
/v1/exports/{exportId}

Runs against the live API with the key you enter: this change really happens. Use a key limited to a test account.

Requires the admin scope.

Required scope: admin.

Path Parameters

exportId*string
Formatuuid

Response Body

OK

application/json
  1. response
Example Request
curl -X DELETE 'https://api.workwae.com/v1/exports/56677aa9-5bc6-4869-a067-424b6e1df1a0'
Example Response
null
GET
/v1/exports/{exportId}/download

Runs in your browser against api.workwae.com with the key you enter. Use a read-only key, limited to a test account if you can.

Streams the decrypted .tar.gz; compare it with the export's sha256. Requires the admin scope.

Required scope: admin.

Path Parameters

exportId*string
Formatuuid

Response Body

The export as a gzip-compressed tar

response?stringapplication/gzip
Example Request
curl -X GET 'https://api.workwae.com/v1/exports/56677aa9-5bc6-4869-a067-424b6e1df1a0/download'
Example Response
"string"