---
title: "Generate Organization Report"
method: POST
path: "/reports"
tags: ["Reports"]
---

# Generate Organization Report

`POST /reports`

## Request

- Base URL: `https://api.crowdin.com/api/v2`
- URL: `https://api.crowdin.com/api/v2/reports`
- Auth: none declared
- TypeScript: <https://skmtc.dev/crowdin/apis/crowdin-enterprise-api-v2/docs/reports/post.ts> (a function with typed inputs; its response is checked against the schema)

**Required scopes:** `group` (Read only).

## Request body

- union
  - GroupTranslationCostsPostEditing: Calculate the real translation costs to pay your translators and proofreaders
    - `name` 'group-translation-costs-pe', required: group-translation-costs-pe
    - `schema` union, required: Group Translation Costs Post-Editing Report schema
      - object
        - `projectIds` integer[]: Array of project ids. Get via [List Projects](#operation/api.projects.getMany)
        - `unit` 'strings' | 'words' | 'chars' | 'chars_with_spaces': Defines report unit
        - `currency` 'USD' | 'EUR' | 'JPY' | 'GBP' | 'AUD' | 'CAD' | 'CHF' | 'CNY' | 'SEK' | 'NZD' | 'MXN' | 'SGD' | 'HKD' | 'NOK' | 'KRW' | 'TRY' | 'RUB' | 'INR' | 'BRL' | 'ZAR' | 'GEL' | 'UAH' | 'DDK' | 'PLN': Defines report currency
        - `format` 'xlsx' | 'csv' | 'json': Defines export file format
        - `baseRates` GroupTranslationCostsPeReportBaseRates, required
          - `fullTranslation` number, float, required: Applies to all languages by default
          - `proofread` number, float: Proofread rate. Required when `useCategoryBasedProofreadRates` is `false`.
        - `individualRates` GroupTranslationCostsPeReportIndividualRate[], required: Individual rates (Custom rates for certain languages or users)
          - `languageIds` string[], required: Array of language ids
          - `userIds` integer[], required: Array of user ids
          - `fullTranslation` number, float, required
          - `proofread` number, float: Proofread rate. Required when `useCategoryBasedProofreadRates` is `false`.
        - `netRateSchemes` GroupTranslationCostsPeReportNetRateSchemes, required
          - `tmMatch` GroupTranslationCostsPeReportNetRateSchemesTmMatchNetRate[], required: Must include the `100` match type, and the `perfect` match type when `useTmEditDistance` is `false`. With `useTmEditDistance` enabled, edit-distance matching produces no perfect matches (capped at `100`).
            - `matchType` string, required: Match type, %. Possible values: `perfect`, `100`, or a percentage range (e.g., `99-82`, `81-60`)
            - `price` number, float, required: Price, %
          - `mtMatch` GroupTranslationCostsPeReportNetRateSchemesMtMatchNetRate[], required: Must include the `100` match type.
            - `matchType` string, required: Match type, %. Possible values: `100` or a percentage range (e.g., `99-82`, `81-60`)
            - `price` number, float, required: Price, %
          - `aiMatch` GroupTranslationCostsPeReportNetRateSchemesAiMatchNetRate[]: __Note:__ The `aiMatch` field is optional. If this field is not filled in, the schema will be taken from the `mtMatch` field. When filled in, it must include the `100` match type.
            - `matchType` string, required: Match type, %. Possible values: `100` or a percentage range (e.g., `99-82`, `81-60`)
            - `price` number, float, required: Price, %
          - `suggestionMatch` GroupTranslationCostsPeReportNetRateSchemesSuggestionMatchNetRate[], required: Must include the `100` match type.
            - `matchType` string, required: Match type, %. Possible values: `100` or a percentage range (e.g., `99-82`, `81-60`)
            - `price` number, float, required: Price, %
        - `useCategoryBasedProofreadRates` boolean: Approvals are treated as submitting an identical translation at the 100% match rate of the corresponding Net Rate Scheme category (TM, MT, AI, or other). When disabled, all approvals use the flat base proofread rate.
        - `useTmEditDistance` boolean: Calculations are based on the edit distance between the TM match and final translation instead of source segment similarity. Matches recorded before July 13, 2026, fall back to traditional source similarity.
        - `excludeApprovalsForEditedTranslations` boolean: Exclude approvals when the same user has made translations for the string.
        - `preTranslatedStringsCategorizationAdjustment` boolean: Repetitive translations of pre-translated strings are reported under TM or MT match rates instead of Other suggestion match rates, depending on the initial pre-translation type.
        - `groupBy` 'user' | 'language' | 'project': Defines grouping parameter
        - `dateFrom` string, date-time: Report date from in UTC, ISO 8601
        - `dateTo` string, date-time: Report date to in UTC, ISO 8601
        - `userIds` integer[]: Array of user ids. Get via [List Project Members](#operation/api.projects.members.getMany)
        - `skipArchiving` boolean: If true, the report will not be saved to the archive for historical reference.
      - object
        - `unit` 'strings' | 'words' | 'chars' | 'chars_with_spaces': Defines report unit
        - `currency` 'USD' | 'EUR' | 'JPY' | 'GBP' | 'AUD' | 'CAD' | 'CHF' | 'CNY' | 'SEK' | 'NZD' | 'MXN' | 'SGD' | 'HKD' | 'NOK' | 'KRW' | 'TRY' | 'RUB' | 'INR' | 'BRL' | 'ZAR' | 'GEL' | 'UAH' | 'DDK' | 'PLN': Defines report currency
        - `format` 'xlsx' | 'csv' | 'json': Defines export file format
        - `baseRates` TranslationCostsPeReportBaseRates, required
          - `fullTranslation` number, float, required: Applies to all languages by default
          - `proofread` number, float: Proofread rate. Required when `useCategoryBasedProofreadRates` is `false`.
        - `individualRates` TranslationCostsPeReportIndividualRate[], required: Individual rates (Custom rates for certain languages or users)
          - `languageIds` string[], required: Array of language ids
          - `userIds` integer[], required: Array of user ids
          - `fullTranslation` number, float, required
          - `proofread` number, float: Proofread rate. Required when `useCategoryBasedProofreadRates` is `false`.
        - `netRateSchemes` TranslationCostsPeReportNetRateSchemes, required
          - `tmMatch` TranslationCostsPeReportNetRateSchemesTmMatchNetRate[], required: Must include the `100` match type, and the `perfect` match type when `useTmEditDistance` is `false`. With `useTmEditDistance` enabled, edit-distance matching produces no perfect matches (capped at `100`).
            - `matchType` string, required: Match type, %. Possible values: `perfect`, `100`, or a percentage range (e.g., `99-82`, `81-60`)
            - `price` number, float, required: Price, %
          - `mtMatch` TranslationCostsPeReportNetRateSchemesMtMatchNetRate[], required: Must include the `100` match type.
            - `matchType` string, required: Match type, %. Possible values: `100` or a percentage range (e.g., `99-82`, `81-60`)
            - `price` number, float, required: Price, %
          - `aiMatch` TranslationCostsPeReportNetRateSchemesAiMatchNetRate[]: __Note:__ The `aiMatch` field is optional. If this field is not filled in, the schema will be taken from the `mtMatch` field. When filled in, it must include the `100` match type.
            - `matchType` string, required: Match type, %. Possible values: `100` or a percentage range (e.g., `99-82`, `81-60`)
            - `price` number, float, required: Price, %
          - `suggestionMatch` TranslationCostsPeReportNetRateSchemesSuggestionMatchNetRate[], required: Must include the `100` match type.
            - `matchType` string, required: Match type, %. Possible values: `100` or a percentage range (e.g., `99-82`, `81-60`)
            - `price` number, float, required: Price, %
        - `taskIds` integer[]: Array of task ids. Get via [List Tasks](#operation/api.projects.tasks.getMany)
        - `useCategoryBasedProofreadRates` boolean: Approvals are treated as submitting an identical translation at the 100% match rate of the corresponding Net Rate Scheme category (TM, MT, AI, or other). When disabled, all approvals use the flat base proofread rate.
        - `useTmEditDistance` boolean: Calculations are based on the edit distance between the TM match and final translation instead of source segment similarity. Matches recorded before July 13, 2026, fall back to traditional source similarity.
        - `excludeApprovalsForEditedTranslations` boolean: Exclude approvals when the same user has made translations for the string.
        - `preTranslatedStringsCategorizationAdjustment` boolean: Repetitive translations of pre-translated strings are reported under TM or MT match rates instead of Other suggestion match rates, depending on the initial pre-translation type.
        - `skipArchiving` boolean: If true, the report will not be saved to the archive for historical reference.
  - GroupTopMembers: Generate a list of translators based on a specific period of time to see who contributed the most to your project's translation.
    - `name` 'group-top-members', required: group-top-members
    - `schema` object, required: Group Top Members Report schema
      - `projectIds` integer[]: Project Identifier for which the report should be generated. Get via [List Projects](#operation/api.projects.getMany)
      - `unit` 'strings' | 'words' | 'chars' | 'chars_with_spaces': Defines report unit
      - `languageId` string: Language Identifier for which the report should be generated. Get via [List Supported Languages](#operation/api.languages.getMany)
      - `format` 'xlsx' | 'csv' | 'json': Defines export file format
      - `dateFrom` string, date-time: Task date from in UTC, ISO 8601
      - `dateTo` string, date-time: Task date to in UTC, ISO 8601
      - `userIds` integer[]: Array of user ids
  - GroupTaskUsage: Explore detailed statistics on task creation, workload, progress, and performance.
    - `name` 'group-task-usage', required: group-task-usage
    - `schema` union, required
      - object
        - `format` 'xlsx' | 'csv' | 'json', required: Defines export file format
        - `type` 'workload', required: workload
        - `projectIds` integer[]: Array of project ids. Get via [List Projects](#operation/api.projects.getMany)
        - `dateFrom` string, date-time: Report date from in UTC, ISO 8601
        - `dateTo` string, date-time: Report date to in UTC, ISO 8601
        - `groupBy` 'user' | 'language' | 'type' | 'project': Defines grouping parameter
        - `typeTasks` 0 | 1 | 2 | 3: Task type: * 0 - translate * 1 - proofread * 2 - translate by vendor * 3 - proofread by vendor
        - `languageId` string: Language Identifier for which the report should be generated. Get via [List Supported Languages](#operation/api.languages.getMany)
        - `creatorId` integer: User Identifier for which the report should be generated. Get via [List Project Members](#operation/api.projects.members.getMany)
        - `assigneeId` integer: User Identifier for which the report should be generated. Get via [List Project Members](#operation/api.projects.members.getMany)
      - object
        - `format` 'xlsx' | 'csv' | 'json', required: Defines export file format
        - `type` 'created-vs-resolved', required: created-vs-resolved
        - `projectIds` integer[]: Array of project ids. Get via [List Projects](#operation/api.projects.getMany)
        - `dateFrom` string, date-time: Report date from in UTC, ISO 8601
        - `dateTo` string, date-time: Report date to in UTC, ISO 8601
        - `groupBy` 'language' | 'type' | 'project': Defines grouping parameter
        - `typeTasks` 0 | 1 | 2 | 3: Task type: * 0 - translate * 1 - proofread * 2 - translate by vendor * 3 - proofread by vendor
        - `languageId` string: Language Identifier for which the report should be generated. Get via [List Supported Languages](#operation/api.languages.getMany)
        - `creatorId` integer: User Identifier for which the report should be generated. Get via [List Project Members](#operation/api.projects.members.getMany)
      - object
        - `format` 'xlsx' | 'csv' | 'json', required: Defines export file format
        - `type` 'performance', required: performance
        - `projectIds` integer[]: Array of project ids. Get via [List Projects](#operation/api.projects.getMany)
        - `dateFrom` string, date-time: Report date from in UTC, ISO 8601
        - `dateTo` string, date-time: Report date to in UTC, ISO 8601
        - `groupBy` 'language' | 'type' | 'project': Defines grouping parameter
        - `typeTasks` 0 | 1 | 2 | 3: Task type: * 0 - translate * 1 - proofread * 2 - translate by vendor * 3 - proofread by vendor
        - `languageId` string: Language Identifier for which the report should be generated. Get via [List Supported Languages](#operation/api.languages.getMany)
        - `creatorId` integer: User Identifier for which the report should be generated. Get via [List Project Members](#operation/api.projects.members.getMany)
        - `assigneeId` integer: User Identifier for which the report should be generated. Get via [List Project Members](#operation/api.projects.members.getMany)
      - object
        - `format` 'xlsx' | 'csv' | 'json', required: Defines export file format
        - `type` 'time', required: time
        - `projectIds` integer[]: Array of project ids. Get via [List Projects](#operation/api.projects.getMany)
        - `dateFrom` string, date-time: Report date from in UTC, ISO 8601
        - `dateTo` string, date-time: Report date to in UTC, ISO 8601
        - `groupBy` 'language' | 'type' | 'project': Defines grouping parameter
        - `typeTasks` 0 | 1 | 2 | 3: Task type: * 0 - translate * 1 - proofread * 2 - translate by vendor * 3 - proofread by vendor
        - `languageId` string: Language Identifier for which the report should be generated. Get via [List Supported Languages](#operation/api.languages.getMany)
        - `creatorId` integer: User Identifier for which the report should be generated. Get via [List Project Members](#operation/api.projects.members.getMany)
        - `assigneeId` integer: User Identifier for which the report should be generated. Get via [List Project Members](#operation/api.projects.members.getMany)
        - `wordsCountFrom` integer
        - `wordsCountTo` integer
      - object
        - `format` 'xlsx' | 'csv' | 'json', required: Defines export file format
        - `type` 'cost', required: cost
        - `projectIds` integer[]: Array of project ids. Get via [List Projects](#operation/api.projects.getMany)
        - `dateFrom` string, date-time: Report date from in UTC, ISO 8601
        - `dateTo` string, date-time: Report date to in UTC, ISO 8601
        - `groupBy` 'language' | 'type' | 'project': Defines grouping parameter
        - `typeTasks` 0 | 1 | 2 | 3: Task type: * 0 - translate * 1 - proofread * 2 - translate by vendor * 3 - proofread by vendor
        - `languageId` string: Language Identifier for which the report should be generated. Get via [List Supported Languages](#operation/api.languages.getMany)
        - `creatorId` integer: User Identifier for which the report should be generated. Get via [List Project Members](#operation/api.projects.members.getMany)
        - `assigneeId` integer: User Identifier for which the report should be generated. Get via [List Project Members](#operation/api.projects.members.getMany)
        - `statuses` string[]: Task statuses to filter by
  - GroupQaCheckIssues: Generate a report showing changes in project qa check issues overtime
    - `name` 'group-qa-check-issues', required: group-qa-check-issues
    - `schema` GroupQaCheckIssuesReport, required
      - `projectIds` integer[]: Array of project ids. Get via [List Projects](#operation/api.projects.getMany)
      - `format` 'xlsx' | 'csv' | 'json': Defines export file format
      - `dateFrom` string, date-time: Report date from in UTC, ISO 8601
      - `dateTo` string, date-time: Report date to in UTC, ISO 8601
  - GroupTranslationActivity: Generate a report showing project consumption metrics including translation activity and proofreading activity over time
    - `name` 'group-translation-activity', required: group-translation-activity
    - `schema` GroupTranslationActivityReport, required
      - `unit` 'strings' | 'words' | 'chars' | 'chars_with_spaces': Defines report unit
      - `projectIds` integer[]: Array of project ids. Get via [List Projects](#operation/api.projects.getMany)
      - `format` 'xlsx' | 'csv' | 'json': Defines export file format
      - `dateFrom` string, date-time: Report date from in UTC, ISO 8601
      - `dateTo` string, date-time: Report date to in UTC, ISO 8601
      - `userIds` integer[]: Array of user ids for filtering
  - GroupSourceContentUpdates: Generate a report showing changes in source content over time, including added, deleted and modified strings/words/characters
    - `name` 'group-source-content-updates', required: group-source-content-updates
    - `schema` GroupSourceContentUpdatesReport, required
      - `unit` 'strings' | 'words' | 'chars' | 'chars_with_spaces': Defines report unit
      - `format` 'xlsx' | 'csv' | 'json': Defines export file format
      - `projectIds` integer[]: Array of project ids. Get via [List Projects](#operation/api.projects.getMany)
      - `dateFrom` string, date-time: Report date from in UTC, ISO 8601
      - `dateTo` string, date-time: Report date to in UTC, ISO 8601
  - GroupTimeSpent: Explore detailed statistics on task creation, workload, progress, and performance.
    - `name` 'group-time-spent', required: group-time-spent
    - `schema` GroupTimeSpentReport, required
      - `format` 'xlsx' | 'csv' | 'json': Defines export file format
      - `groupBy` 'user' | 'language' | 'task' | 'project': Defines grouping parameter
      - `baseRates` TimeSpentReportBaseRates
        - `hourly` number, float, required
      - `individualRates` TimeSpentReportIndividualRate[]: Individual rates (Custom rates for certain languages or users)
        - `languageIds` string[], required
        - `userIds` integer[], required: Array of user ids
        - `hourly` number, float, required
      - `languageId` string: Language Identifier for which the report should be generated. Get via [List Supported Languages](#operation/api.languages.getMany)
      - `userIds` integer[]: Array of user ids
      - `typeTasks` 0 | 1 | 2 | 3: Task type: * 0 - translate * 1 - proofread * 2 - translate by vendor * 3 - proofread by vendor
      - `dateFrom` string, date-time: Report date from in UTC, ISO 8601
      - `dateTo` string, date-time: Report date to in UTC, ISO 8601
      - `projectIds` integer[]: Project Identifier for which the report should be generated. Get via [List Projects](#operation/api.projects.getMany)
      - `taskIds` integer[]: Array of task ids. Get via [List Tasks](#operation/api.projects.tasks.getMany)
      - `skipArchiving` boolean: If true, the report will not be saved to the archive for historical reference.
  - GroupPreTranslateAccuracy: Calculate the accuracy of the pre-translation process __Note:__ The strings included in this report must be approved and have at least one "pre-translate" type translation. All other human translations will not be considered in this report, except in cases where such a translation is approved and used as a reference.
    - `name` 'group-pre-translate-accuracy', required: group-pre-translate-accuracy
    - `schema` union, required: Group Pre-translation Accuracy Report schema
      - object
        - `unit` 'strings' | 'words' | 'chars' | 'chars_with_spaces': Defines report unit
        - `languageId` string: Language Identifier for which the report should be generated. Get via [List Supported Languages](#operation/api.languages.getMany)
        - `format` 'xlsx' | 'csv' | 'json': Defines export file format
        - `dateFrom` string, date-time: Report date from in UTC, ISO 8601
        - `dateTo` string, date-time: Report date to in UTC, ISO 8601
        - `postEditingCategories` string[]: Split into categories by edit distance. **Deprecated**. Use `matchScoreCategories` instead
        - `matchScoreCategories` string[]: Split into categories by match score. Ranges should be in descending order (e.g., 100-90, 89-80)
        - `projectIds` integer[]: Project Identifier for which the report should be generated. Get via [List Projects](#operation/api.projects.getMany)
        - `skipArchiving` boolean: If true, the report will not be saved to the archive for historical reference.
      - object: Calculate the approximate translation costs to help plan your budget
        - `unit` 'strings' | 'words' | 'chars' | 'chars_with_spaces': Defines report unit
        - `format` 'xlsx' | 'csv' | 'json': Defines export file format
        - `matchScoreCategories` string[]: Split into categories by match score. Ranges should be in descending order (e.g., 100-90, 89-80)
        - `taskIds` integer[]: Array of task ids. Get via [List Tasks](#operation/api.projects.tasks.getMany)
        - `skipArchiving` boolean: If true, the report will not be saved to the archive for historical reference.
  - GroupTranslatorAccuracy: Calculate the accuracy of the user process __Note:__ The strings included in this report must be approved and translated by a human. Any other translations, including those that are only self-approved, will not be included unless they are also approved by another party and used as a reference.
    - `name` 'group-translator-accuracy', required: group-translator-accuracy
    - `schema` GroupTranslatorAccuracyReportGeneral, required
      - `unit` 'strings' | 'words' | 'chars' | 'chars_with_spaces': Defines report unit
      - `languageId` string: Language Identifier for which the report should be generated. Get via [List Supported Languages](#operation/api.languages.getMany)
      - `format` 'xlsx' | 'csv' | 'json': Defines export file format
      - `dateFrom` string, date-time: Report date from in UTC, ISO 8601
      - `dateTo` string, date-time: Report date to in UTC, ISO 8601
      - `postEditingCategories` string[]: Split into categories by edit distance. **Deprecated**. Use `matchScoreCategories` instead
      - `matchScoreCategories` string[]: Split into categories by match score. Ranges should be in descending order (e.g., 100-90, 89-80)
      - `userIds` integer[]: Array of user ids. Get via [List Project Members](#operation/api.projects.members.getMany)
      - `projectIds` integer[]: Project Identifier for which the report should be generated. Get via [List Projects](#operation/api.projects.getMany)
      - `skipArchiving` boolean: If true, the report will not be saved to the archive for historical reference.
  - GroupSavingActivity: Generate a report showing translation savings activity over time for a group, including MT/AI cost savings and efficiency metrics
    - `name` 'group-saving-activity', required: group-saving-activity
    - `schema` GroupSavingActivityReport, required
      - `unit` 'strings' | 'words' | 'chars' | 'chars_with_spaces': Defines report unit
      - `projectIds` integer[]: Array of project ids. Get via [List Projects](#operation/api.projects.getMany)
      - `format` 'xlsx' | 'csv' | 'json': Defines export file format
      - `dateFrom` string, date-time: Report date from in UTC, ISO 8601
      - `dateTo` string, date-time: Report date to in UTC, ISO 8601
      - `languageId` string: Language Identifier for which the report should be generated. Get via [List Supported Languages](#operation/api.languages.getMany)
      - `mode` 'relative' | 'currency': Report mode. `currency` mode available only if group has savingsReportSettingsTemplateId set

## Response `201`

Report generation was successfully started

- GroupReportResource: Base schema of resource container. Container is a wrapper object that contains payload in required `data` property and provides space for adding any other metadata.
  - `data` GroupReportGenerate, required: Generate Group Report Response Model
    - `identifier` string: Class GroupReportResponseModel
    - `status` string
    - `progress` integer: in percentages
    - `attributes` object
      - `format` string
      - `reportName` string
      - `projectIds` integer[]
      - `schema` object
    - `createdAt` string, date-time
    - `updatedAt` string, date-time
    - `startedAt` string, date-time
    - `finishedAt` string, date-time

## Other responses

- `400`: Invalid Request Parameters
- `401`: Unauthorized
- `403`: Forbidden
- `404`: Project with specified id was not found
- `405`: Method Not Allowed
- `409`: Conflict

---

[API](https://skmtc.dev/crowdin/apis/crowdin-enterprise-api-v2.md) - [All operations](https://skmtc.dev/crowdin/apis/crowdin-enterprise-api-v2/llms.txt) - [OpenAPI document](https://skmtc.dev/crowdin/apis/crowdin-enterprise-api-v2/revisions/dc68744c5384?raw)
