Request asynchronous resource file exports and poll for their completion status and download URLs.
All endpoints are served under /v1/{workspaceUrl}/projects/{projectUrl}/exports and return application/json responses.
Authentication is required. Both endpoints are guarded by the resourcesView team permission.
Workflow
The export process is asynchronous and follows a two-step pattern:
- Request an export via
POST— returns an exportidwith statusPROCESSING - Poll for completion via
GET— once status isSUCCESS, thedownloadUrlfield contains a pre-signed S3 URL for the ZIP file
POST .../exports --> { "id": "reg_...", "status": "PROCESSING" }
GET .../exports/{id} --> { "id": "reg_...", "status": "SUCCESS", "downloadUrl": "https://..." }
Endpoints
POST /v1/{workspaceUrl}/projects/{projectUrl}/exports -- Request a resource export
POST /v1/{workspaceUrl}/projects/{projectUrl}/exports -- Request a resource exportInitiates the creation of a resource export that is assembled asynchronously in the background. Once completed, the export produces a downloadable ZIP file containing the project's resource files.
Request Body — ResourceExportRequest (optional)
ResourceExportRequest (optional)All fields are optional filters. When omitted, all files and all languages are exported.
| Field | Type | Description |
|---|---|---|
filePaths | string[] | Export only specific files. Paths as shown in the Resources view, including locale placeholder (e.g. "config/locales/%{locale}/messages.yml") |
iso2Slugs | string[] | Export only specific locales — ISO 639-1 codes (e.g. "en", "de", "fr") |
exportFormat | string | Override the export format. Allowed: "strings.ios", "xml.android.resources", "properties", etc. |
Example Request Body
{
"filePaths": ["config/locales/%{locale}/messages.yml"],
"iso2Slugs": ["en", "de"],
"exportFormat": "json.standard"
}| Detail | Value |
|---|---|
| Auth | resourcesView permission on the project |
| Response | 200 — ResourceExportResponse with status: "PROCESSING" and an export id |
GET /v1/{workspaceUrl}/projects/{projectUrl}/exports/{id} -- Get export status
GET /v1/{workspaceUrl}/projects/{projectUrl}/exports/{id} -- Get export statusRetrieves the current status and details of a previously requested export. Poll this endpoint until the status changes from PROCESSING to SUCCESS or ERROR.
Path Parameters
| Parameter | Type | Description |
|---|---|---|
id | string | The export identifier returned by the POST endpoint (e.g. "reg_3163-0556-1428-5087674") |
Response — ResourceExportResponse
ResourceExportResponse| Field | Type | Description |
|---|---|---|
id | string | Unique export identifier |
status | string | "PROCESSING", "SUCCESS", or "ERROR" |
resourceExports | array | Individual file entries with filePath, iso2Slug, status, and downloadUrl |
errorDetails | string | null | Error message if the export failed |
filePath | string | null | Name of the ZIP file (e.g. "files.zip") once complete |
downloadUrl | string | null | Pre-signed S3 download URL — available only when status is SUCCESS |
triggerType | string | How the export was triggered (e.g. "API_V1") |
createdAt | timestamp | When the export was requested |
| Detail | Value |
|---|---|
| Auth | resourcesView permission on the project |
| Response | 200 — ResourceExportResponse with current status and download information |
Common Error Responses
| Status | Meaning |
|---|---|
401 | Unauthorized — authentication credentials are missing or invalid |
403 | Forbidden — insufficient resourcesView permission on the project |
404 | Not Found — workspace, project, export ID, or filtered file path does not exist |
