---
title: "Add Report Settings Template"
method: POST
path: "/projects/{projectId}/reports/settings-templates"
tags: ["Reports"]
---

# Add Report Settings Template

`POST /projects/{projectId}/reports/settings-templates`

## Request

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

**Required scopes:** `project.report` (Read and Write).

## Path parameters

- `projectId` integer, required

## Request body

- union
  - CrowdinPEReportProjectSettingsTemplateCreateForm
    - `name` string, required: Template name
    - `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', required: Defines report currency
    - `unit` 'strings' | 'words' | 'chars' | 'chars_with_spaces', required: Defines report unit
    - `config` PostEditReportSettingsTemplateFormConfig, required
      - `baseRates` PostEditReportSettingsTemplateFormBaseRates, required
        - `fullTranslation` number, required: Applies to all languages by default
        - `proofread` number, required
      - `individualRates` PostEditReportSettingsTemplateFormIndividualRate[], 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, required
        - `proofread` number, required
      - `netRateSchemes` PostEditReportSettingsTemplateFormNetRateSchemes, required
        - `tmMatch` PostEditReportSettingsTemplateFormNetRateSchemesTmMatchNetRate[], 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, required: Price, %
        - `mtMatch` PostEditReportSettingsTemplateFormNetRateSchemesMtMatchNetRate[], 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, required: Price, %
        - `aiMatch` PostEditReportSettingsTemplateFormNetRateSchemesAiMatchNetRate[]: __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, required: Price, %
        - `suggestionMatch` PostEditReportSettingsTemplateFormNetRateSchemesSuggestionMatchNetRate[], 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, required: Price, %
      - `calculateInternalMatches` boolean
      - `includePreTranslatedStrings` boolean
      - `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.
      - `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.
    - `isPublic` boolean: Defines report public
    - `isGlobal` boolean: Defines a report as global
  - CrowdinReportHourlySettingsTemplateCreateForm
    - `name` string, required: Template name
    - `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', required: Defines report currency
    - `unit` 'hours', required: Defines report unit
    - `config` HourlyReportSettingsTemplateFormConfig, required
      - `baseRates` HourlyReportSettingsTemplateFormBaseRates, required
        - `hourly` number, required
      - `individualRates` HourlyReportSettingsTemplateFormIndividualRate[], required: Individual rates (Custom rates for certain languages or users)
        - `languageIds` string[], required: Array of language ids
        - `userIds` integer[], required: Array of user ids
        - `hourly` number, required
    - `isPublic` boolean: Defines report public
    - `isGlobal` boolean: Defines a report as global

## Response `201`

Report Settings Template was successfully created

- ReportSettingsTemplateResource: 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` PEReportSettingsTemplate, required
    - `id` integer, required
    - `name` string, required: Template name
    - `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', required: Defines report currency
    - `unit` 'strings' | 'words' | 'chars' | 'chars_with_spaces', required: Defines report unit
    - `config` PostEditReportSettingsTemplateConfig, required
      - `baseRates` PostEditReportSettingsTemplateBaseRates, required
        - `fullTranslation` number, required: Applies to all languages by default
        - `proofread` number, required
      - `individualRates` PostEditReportSettingsTemplateIndividualRate[], 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, required
        - `proofread` number, required
      - `netRateSchemes` PostEditReportSettingsTemplateNetRateSchemes, required
        - `tmMatch` PostEditReportSettingsTemplateNetRateSchemesTmMatchNetRate[], required
          - `matchType` string, required: Match type, %
          - `price` number, required: Price, %
        - `mtMatch` PostEditReportSettingsTemplateNetRateSchemesMtMatchNetRate[], nullable, required
          - `matchType` string, required: Match type, %
          - `price` number, required: Price, %
        - `aiMatch` PostEditReportSettingsTemplateNetRateSchemesAiMatchNetRate[], nullable, required
          - `matchType` string, required: Match type, %
          - `price` number, required: Price, %
        - `suggestionMatch` PostEditReportSettingsTemplateNetRateSchemesSuggestionMatchNetRate[], nullable, required
          - `matchType` string, required: Match type, %
          - `price` number, required: Price, %
      - `calculateInternalMatches` boolean
      - `includePreTranslatedStrings` boolean
      - `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.
      - `useCategoryBasedProofreadRates` boolean: Use match proofreading rates.
      - `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.
    - `createdAt` string, date-time, required
    - `updatedAt` string, date-time, nullable
    - `isPublic` boolean, required: Defines report public
    - `isGlobal` boolean: Defines a report as global

## Other responses

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

---

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