Can't build files which at root folder

When i trying to build single file translation via Build Project File Translation, if that file at root of project (directoryId = null), response code is 204 No content in exported file

Herethe file list:

{
  "data": [
    {
      "data": {
        "id": 2,
        "projectId": XXX,
        "branchId": null,
        "directoryId": null,
        "name": "bundle.properties",
        "title": null,
        "context": null,
        "type": "properties",
        "path": "/bundle.properties",
        "status": "active",
        "revisionId": 51,
        "priority": "normal",
        "importOptions": null,
        "exportOptions": {
          "escapeQuotes": 0,
          "escapeSpecialCharacters": 0,
          "exportPattern": "%file_name%_%two_letters_code%.%file_extension%"
        },
        "excludedTargetLanguages": null,
        "parserVersion": 11,
        "createdAt": "2024-05-12 13:16:27+00:00",
        "updatedAt": "2026-01-18 02:49:29+00:00"
      }
    },
    {
      "data": {
        "id": 8,
        "projectId": XXX,
        "branchId": null,
        "directoryId": 6,
        "name": "XXX@bundle.properties",
        "title": null,
        "context": null,
        "type": "properties",
        "path": "/XXX/XXX@bundle.properties",
        "status": "active",
        "revisionId": 1,
        "priority": "normal",
        "importOptions": null,
        "exportOptions": {
          "escapeQuotes": 0,
          "escapeSpecialCharacters": 0,
          "exportPattern": "%file_name%_%two_letters_code%.%file_extension%"
        },
        "excludedTargetLanguages": null,
        "parserVersion": 12,
        "createdAt": "2025-02-07 12:10:06+00:00",
        "updatedAt": "2025-02-08 15:46:21+00:00"
      }
    },
    {
      "data": {
        "id": 562,
        "projectId": XXX,
        "branchId": null,
        "directoryId": null,
        "name": "XXX@bundle.properties",
        "title": null,
        "context": null,
        "type": "properties",
        "path": "/XXX@bundle.properties",
        "status": "active",
        "revisionId": 1,
        "priority": "normal",
        "importOptions": null,
        "exportOptions": {
          "escapeQuotes": 0,
          "escapeSpecialCharacters": 0,
          "exportPattern": null
        },
        "excludedTargetLanguages": null,
        "parserVersion": 13,
        "createdAt": "2026-02-01 15:47:00+00:00",
        "updatedAt": "2026-02-01 15:47:05+00:00"
      }
    }
  ],
  "pagination": {
    "offset": 0,
    "limit": 25
  }
}

Both id 2 and 562 at root folder return 204, but id 8 return 200.

I can download translation them in web version (https://crowdin.com/project/{project}/{langcode}) > select a file > Download (single language translation).
I have a Custom Post-Export Processor activing, but if it is the reason of failure, why nothing happned in web version?

Oh! I realized these file at root folder also not including in whole project build (api), after build, download and zip extract, only get file with id 8.

Hi @SITUVNgcd,

For files located in the root folder, you should omit branchId and directoryId in the request body when building translations via API. Including directoryId: null causes the API to return 204 No Content. This is why your root files aren’t included in the build, while files inside folders work correctly.

As API docs, no branchId or directoryId sent in this single file build request, only fileId
Url: https://api.crowdin.com/api/v2/projects/XXX/translations/builds/files/2
Header: {'User-Agent': 'TestAPI', 'Authorization': 'Bearer <token>', 'Content-Type': 'application/json'}
Payload (JSON): {'targetLanguageId': 'vi'}

I’m also used python client api (https://crowdin.github.io/crowdin-api-client-python/) to request, but result is same.

Hi @SITUVNgcd

Just tested this call to build 1 translated file
https://support.crowdin.com/developer/api/v2/#tag/Translations/operation/api.projects.translations.builds.files.post

POST https://crowdin.com/api/v2/projects/xxx/translations/builds/files/xxx
with this payload:
{
“targetLanguageId”: “fr”,
“skipUntranslatedStrings”: false,
“skipUntranslatedFiles”: false,
“exportApprovedOnly”: false
}

returned a URL to save translated file (both if the source is at root and in a folder).
To troubleshoot this further, please check your project export configuration

1 Like

After a week, I’m removed all File Export Processor. But nothing change at all.

When I download from web, everything is OK for both single and project build.
But from API, single file build is 204 (again) and project build is lost all file at root.

This is project’s settings:

[V] Save context information in the files

[ ] Skip untranslated strings

[V] Skip untranslated files

[ ] Export only approved translations

[ ] Automatically fill in regional dialects

If you think Skip untranslated files cause this problem? No! All 3 files was translated.

This is API issue, not project’s settings or file processor related.

Or atleast, it only happened on my project.

If you need a test on my project, i can dm you my project/API key.

Hello @SITUVNgcd,

The Web UI “Download” generates a translation on the fly for that specific moment, whereas the API Build relies on the project’s export infrastructure. If the API is failing only for files where directoryId is null, it suggests a potential caching or indexing issue in the build service for your specific project.

Please try to slightly rename one of the root files (e.g., bundle.properties to bundle_test.properties) and then rename it back. This forces the system to re-index the file’s location in the database.

1 Like