Phrase Translations API

The Translations API from Phrase — 17 operation(s) for translations.

OpenAPI Specification

phrase-translations-api-openapi.yml Raw ↑
openapi: 3.0.3
info:
  title: Phrase Strings API Reference Accounts Translations API
  version: 2.0.0
  description: Phrase Strings is a translation management platform for software projects. You can collaborate on language file translation with your team or order translations through our platform. The API allows you to import locale files, download locale files, tag keys or interact in other ways with the localization data stored in Phrase Strings for your account.
  contact:
    name: Phrase Support
    url: https://developers.phrase.com/api/
    email: support@phrase.com
  x-logo:
    url: https://developers.phrase.com/images/phrase-logo.svg
    backgroundColor: '#03eab3'
    altText: Phrase Strings
  termsOfService: https://phrase.com/terms/
  license:
    name: MIT
    url: https://choosealicense.com/licenses/mit/
servers:
- url: https://api.phrase.com/v2
  description: EU production server
- url: https://api.us.app.phrase.com/v2
  description: US production server
security:
- Token: []
- Basic: []
tags:
- name: Translations
paths:
  /projects/{project_id}/translations:
    get:
      summary: List all translations
      description: 'List translations for the given project. If you want to download all translations for one locale we recommend to use the `locales#download` endpoint.

        '
      operationId: translations/list
      tags:
      - Translations
      parameters:
      - $ref: '#/components/parameters/X-PhraseApp-OTP'
      - $ref: '#/components/parameters/If-Modified-Since'
      - $ref: '#/components/parameters/If-None-Match'
      - $ref: '#/components/parameters/project_id'
      - $ref: '#/components/parameters/page'
      - $ref: '#/components/parameters/per_page'
      - description: specify the branch to use
        example: my-feature-branch
        name: branch
        in: query
        schema:
          type: string
      - description: 'Sort criteria. Can be one of: key_name, created_at, updated_at.'
        example: updated_at
        name: sort
        in: query
        schema:
          type: string
      - description: 'Order direction. Can be one of: asc, desc.'
        example: desc
        name: order
        in: query
        schema:
          type: string
      - description: 'Specify a query to find translations by content (including wildcards).


          *Note: Search is limited to 10000 results and may not include recently updated data (depending on the project size).*


          The following qualifiers are supported in the query:


          * `id:translation_id,...` for queries on a comma-separated list of ids

          * `tags:XYZ` for tags on the translation

          * `unverified:{true|false}` for verification status

          * `excluded:{true|false}` for exclusion status

          * `updated_at:{>=|<=}2013-02-21T00:00:00Z` for date range queries

          * `reviewed_after:2013-02-21T00:00:00Z` for fetching translations that were reviewed after the given timestamp


          Find more examples [here](/en/api/strings/usage-examples).

          '
        example: PhraseApp*%20unverified:true%20excluded:true%20tags:feature,center
        name: q
        in: query
        schema:
          type: string
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/translation'
          headers:
            X-Rate-Limit-Limit:
              $ref: '#/components/headers/X-Rate-Limit-Limit'
            X-Rate-Limit-Remaining:
              $ref: '#/components/headers/X-Rate-Limit-Remaining'
            X-Rate-Limit-Reset:
              $ref: '#/components/headers/X-Rate-Limit-Reset'
            Link:
              $ref: '#/components/headers/Link'
            Pagination:
              $ref: '#/components/headers/Pagination'
        '400':
          $ref: '#/components/responses/400'
        '404':
          $ref: '#/components/responses/404'
        '429':
          $ref: '#/components/responses/429'
      x-code-samples:
      - lang: Curl
        source: "curl \"https://api.phrase.com/v2/projects/:project_id/translations?branch=my-feature-branch&sort=updated_at&order=desc&q=PhraseApp*%2520unverified:true%2520excluded:true%2520tags:feature,center\" \\\n  -u USERNAME_OR_ACCESS_TOKEN"
      - lang: CLI v2
        source: 'phrase translations list \

          --project_id <project_id> \

          --branch my-feature-branch \

          --sort updated_at \

          --order desc \

          --query ''PhraseApp*%20unverified:true%20excluded:true%20tags:feature,center'' \

          --access_token <token>'
      x-cli-version: 2.6.4
    post:
      summary: Create a translation
      description: Create a translation.
      operationId: translation/create
      tags:
      - Translations
      parameters:
      - $ref: '#/components/parameters/X-PhraseApp-OTP'
      - $ref: '#/components/parameters/project_id'
      responses:
        '201':
          description: Created
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/translation_details'
          headers:
            X-Rate-Limit-Limit:
              $ref: '#/components/headers/X-Rate-Limit-Limit'
            X-Rate-Limit-Remaining:
              $ref: '#/components/headers/X-Rate-Limit-Remaining'
            X-Rate-Limit-Reset:
              $ref: '#/components/headers/X-Rate-Limit-Reset'
        '400':
          $ref: '#/components/responses/400'
        '404':
          $ref: '#/components/responses/404'
        '429':
          $ref: '#/components/responses/429'
      x-code-samples:
      - lang: Curl
        source: "curl \"https://api.phrase.com/v2/projects/:project_id/translations\" \\\n  -u USERNAME_OR_ACCESS_TOKEN \\\n  -X POST \\\n  -d '{\"branch\":\"my-feature-branch\",\"locale_id\":\"abcd1234cdef1234abcd1234cdef1234\",\"key_id\":\"abcd1234cdef1234abcd1234cdef1234\",\"content\":\"My translation\"}' \\\n  -H 'Content-Type: application/json'"
      - lang: CLI v2
        source: 'phrase translations create \

          --project_id <project_id> \

          --data ''{"branch":"my-feature-branch", "locale_id":"abcd1234cdef1234abcd1234cdef1234", "key_id":"abcd1234cdef1234abcd1234cdef1234", "content": "My translation"}'' \

          --access_token <token>'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              title: translation/create/parameters
              properties:
                branch:
                  description: specify the branch to use
                  type: string
                  example: my-feature-branch
                locale_id:
                  description: Locale. Can be the name or id of the locale. Preferred is id
                  type: string
                  example: abcd1234cdef1234abcd1234cdef1234
                key_id:
                  description: Key
                  type: string
                  example: abcd1234cdef1234abcd1234cdef1234
                content:
                  description: Translation content
                  type: string
                  example: My translation
                plural_suffix:
                  description: 'Plural suffix. Can be one of: zero, one, two, few, many, other. Must be specified if the key associated to the translation is pluralized.'
                  type: string
                  example: null
                unverified:
                  description: Indicates whether translation is unverified. Part of the [Advanced Workflows](https://support.phrase.com/hc/en-us/articles/5784094755484) feature.
                  type: boolean
                  example: null
                excluded:
                  description: Indicates whether translation is excluded.
                  type: boolean
                  example: null
                autotranslate:
                  description: Indicates whether the translation should be auto-translated. Responses with status 422 if provided for translation within a non-default locale or the project does not have the Autopilot feature enabled.
                  type: boolean
                  example: null
      x-cli-version: '2.5'
  /projects/{project_id}/locales/{locale_id}/translations:
    get:
      summary: List translations by locale
      description: 'List translations for a specific locale. If you want to download all translations for one locale we recommend to use the `locales#download` endpoint.

        '
      operationId: translations/by_locale
      tags:
      - Translations
      parameters:
      - $ref: '#/components/parameters/X-PhraseApp-OTP'
      - $ref: '#/components/parameters/project_id'
      - $ref: '#/components/parameters/locale_id'
      - $ref: '#/components/parameters/page'
      - $ref: '#/components/parameters/per_page'
      - description: specify the branch to use
        example: my-feature-branch
        name: branch
        in: query
        schema:
          type: string
      - description: 'Sort criteria. Can be one of: key_name, created_at, updated_at.'
        example: updated_at
        name: sort
        in: query
        schema:
          type: string
      - description: 'Order direction. Can be one of: asc, desc.'
        example: desc
        name: order
        in: query
        schema:
          type: string
      - description: 'Specify a query to find translations by content (including wildcards).


          *Note: Search is limited to 10000 results and may not include recently updated data (depending on the project size).*


          The following qualifiers are supported in the query:

          - `id:translation_id,...` for queries on a comma-separated list of ids

          - `unverified:{true|false}` for verification status

          - `tags:XYZ` for tags on the translation

          - `excluded:{true|false}` for exclusion status

          - `updated_at:{>=|<=}2013-02-21T00:00:00Z` for date range queries


          Find more examples [here](/en/api/strings/usage-examples).

          '
        example: PhraseApp*%20unverified:true%20excluded:true%20tags:feature,center
        name: q
        in: query
        schema:
          type: string
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/translation'
          headers:
            X-Rate-Limit-Limit:
              $ref: '#/components/headers/X-Rate-Limit-Limit'
            X-Rate-Limit-Remaining:
              $ref: '#/components/headers/X-Rate-Limit-Remaining'
            X-Rate-Limit-Reset:
              $ref: '#/components/headers/X-Rate-Limit-Reset'
            Link:
              $ref: '#/components/headers/Link'
            Pagination:
              $ref: '#/components/headers/Pagination'
        '400':
          $ref: '#/components/responses/400'
        '404':
          $ref: '#/components/responses/404'
        '429':
          $ref: '#/components/responses/429'
      x-code-samples:
      - lang: Curl
        source: "curl \"https://api.phrase.com/v2/projects/:project_id/locales/:locale_id/translations?branch=my-feature-branch&sort=updated_at&order=desc&q=PhraseApp*%2520unverified:true%2520excluded:true%2520tags:feature,center\" \\\n  -u USERNAME_OR_ACCESS_TOKEN"
      - lang: CLI v2
        source: 'phrase translations by_locale \

          --project_id <project_id> \

          --locale_id <locale_id> \

          --branch my-feature-branch \

          --sort updated_at \

          --order desc \

          --query ''PhraseApp*%20unverified:true%20excluded:true%20tags:feature,center'' \

          --access_token <token>'
      x-cli-version: '2.5'
  /projects/{project_id}/keys/{key_id}/translations:
    get:
      summary: List translations by key
      description: List translations for a specific key.
      operationId: translations/by_key
      tags:
      - Translations
      parameters:
      - $ref: '#/components/parameters/X-PhraseApp-OTP'
      - $ref: '#/components/parameters/project_id'
      - $ref: '#/components/parameters/key_id'
      - $ref: '#/components/parameters/page'
      - $ref: '#/components/parameters/per_page'
      - description: specify the branch to use
        example: my-feature-branch
        name: branch
        in: query
        schema:
          type: string
      - description: 'Sort criteria. Can be one of: key_name, created_at, updated_at.'
        example: updated_at
        name: sort
        in: query
        schema:
          type: string
      - description: 'Order direction. Can be one of: asc, desc.'
        example: desc
        name: order
        in: query
        schema:
          type: string
      - description: 'Specify a query to find translations by content (including wildcards).


          The following qualifiers are supported in the query:


          * `id:translation_id,...` for queries on a comma-separated list of ids

          * `unverified:{true|false}` for verification status

          * `tags:XYZ` for tags on the translation

          * `excluded:{true|false}` for exclusion status

          * `updated_at:{>=|<=}2013-02-21T00:00:00Z` for date range queries


          Find more examples [here](/en/api/strings/usage-examples).

          '
        example: PhraseApp*%20unverified:true%20excluded:true%20tags:feature,center
        name: q
        in: query
        schema:
          type: string
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/translation'
          headers:
            X-Rate-Limit-Limit:
              $ref: '#/components/headers/X-Rate-Limit-Limit'
            X-Rate-Limit-Remaining:
              $ref: '#/components/headers/X-Rate-Limit-Remaining'
            X-Rate-Limit-Reset:
              $ref: '#/components/headers/X-Rate-Limit-Reset'
            Link:
              $ref: '#/components/headers/Link'
            Pagination:
              $ref: '#/components/headers/Pagination'
        '400':
          $ref: '#/components/responses/400'
        '404':
          $ref: '#/components/responses/404'
        '429':
          $ref: '#/components/responses/429'
      x-code-samples:
      - lang: Curl
        source: "curl \"https://api.phrase.com/v2/projects/:project_id/keys/:key_id/translations?branch=my-feature-branch&sort=updated_at&order=desc&q=PhraseApp*%2520unverified:true%2520excluded:true%2520tags:feature,center\" \\\n  -u USERNAME_OR_ACCESS_TOKEN"
      - lang: CLI v2
        source: 'phrase translations by_key \

          --project_id <project_id> \

          --key_id <key_id> \

          --branch my-feature-branch \

          --sort updated_at \

          --order desc \

          --query ''PhraseApp*%20unverified:true%20excluded:true%20tags:feature,center'' \

          --access_token <token>'
      x-cli-version: '2.5'
  /projects/{project_id}/translations/search:
    post:
      summary: Search translations
      description: Search translations for the given project. Provides the same search interface as `translations#index` but allows POST requests to avoid limitations imposed by GET requests. If you want to download all translations for one locale we recommend to use the `locales#download` endpoint.
      operationId: translations/search
      tags:
      - Translations
      parameters:
      - $ref: '#/components/parameters/X-PhraseApp-OTP'
      - $ref: '#/components/parameters/project_id'
      - $ref: '#/components/parameters/page'
      - $ref: '#/components/parameters/per_page'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/translation'
          headers:
            X-Rate-Limit-Limit:
              $ref: '#/components/headers/X-Rate-Limit-Limit'
            X-Rate-Limit-Remaining:
              $ref: '#/components/headers/X-Rate-Limit-Remaining'
            X-Rate-Limit-Reset:
              $ref: '#/components/headers/X-Rate-Limit-Reset'
            Pagination:
              $ref: '#/components/headers/Pagination'
        '400':
          $ref: '#/components/responses/400'
        '404':
          $ref: '#/components/responses/404'
        '429':
          $ref: '#/components/responses/429'
      x-code-samples:
      - lang: Curl
        source: "curl \"https://api.phrase.com/v2/projects/:project_id/translations/search\" \\\n  -u USERNAME_OR_ACCESS_TOKEN \\\n  -X POST \\\n  -d '{\"branch\":\"my-feature-branch\",\"sort\":\"updated_at\",\"order\":\"desc\",\"q\":\"PhraseApp*%20unverified:true%20excluded:true%20tags:feature,center\"}' \\\n  -H 'Content-Type: application/json'"
      - lang: CLI v2
        source: 'phrase translations search \

          --project_id <project_id> \

          --data ''{"branch":"my-feature-branch", "sort":"updated_at", "order":"desc", "q":"''PhraseApp*%20unverified:true%20excluded:true%20tags:feature,center''"}'' \

          --access_token <token>'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              title: translations/search/parameters
              properties:
                branch:
                  description: specify the branch to use
                  type: string
                  example: my-feature-branch
                sort:
                  description: 'Sort criteria. Can be one of: key_name, created_at, updated_at.'
                  type: string
                  example: updated_at
                order:
                  description: 'Order direction. Can be one of: asc, desc.'
                  type: string
                  example: desc
                q:
                  description: 'Specify a query to find translations by content (including wildcards).


                    *Note: Search is limited to 10000 results and may not include recently updated data (depending on the project size).*


                    The following qualifiers are supported in the query:


                    - `id:translation_id,...` for queries on a comma-separated list of ids

                    - `tags:XYZ` for tags on the translation

                    - `unverified:{true|false}` for verification status

                    - `excluded:{true|false}` for exclusion status

                    - `updated_at:{>=|<=}2013-02-21T00:00:00Z` for date range queries


                    Find more examples [here](/en/api/strings/usage-examples).

                    '
                  type: string
                  example: PhraseApp*%20unverified:true%20excluded:true%20tags:feature,center
      x-cli-version: '2.5'
  /projects/{project_id}/translations/{id}:
    get:
      summary: Get a single translation
      description: Get details on a single translation.
      operationId: translation/show
      tags:
      - Translations
      parameters:
      - $ref: '#/components/parameters/X-PhraseApp-OTP'
      - $ref: '#/components/parameters/project_id'
      - $ref: '#/components/parameters/id'
      - description: specify the branch to use
        example: my-feature-branch
        name: branch
        in: query
        schema:
          type: string
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/translation_details'
          headers:
            X-Rate-Limit-Limit:
              $ref: '#/components/headers/X-Rate-Limit-Limit'
            X-Rate-Limit-Remaining:
              $ref: '#/components/headers/X-Rate-Limit-Remaining'
            X-Rate-Limit-Reset:
              $ref: '#/components/headers/X-Rate-Limit-Reset'
        '400':
          $ref: '#/components/responses/400'
        '404':
          $ref: '#/components/responses/404'
        '429':
          $ref: '#/components/responses/429'
      x-code-samples:
      - lang: Curl
        source: "curl \"https://api.phrase.com/v2/projects/:project_id/translations/:id?branch=my-feature-branch\" \\\n  -u USERNAME_OR_ACCESS_TOKEN"
      - lang: CLI v2
        source: 'phrase translations show \

          --project_id <project_id> \

          --id <id> \

          --branch my-feature-branch \

          --access_token <token>'
      x-cli-version: '2.5'
    patch:
      summary: Update a translation
      description: Update an existing translation.
      operationId: translation/update
      tags:
      - Translations
      parameters:
      - $ref: '#/components/parameters/X-PhraseApp-OTP'
      - $ref: '#/components/parameters/project_id'
      - $ref: '#/components/parameters/id'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/translation_details'
          headers:
            X-Rate-Limit-Limit:
              $ref: '#/components/headers/X-Rate-Limit-Limit'
            X-Rate-Limit-Remaining:
              $ref: '#/components/headers/X-Rate-Limit-Remaining'
            X-Rate-Limit-Reset:
              $ref: '#/components/headers/X-Rate-Limit-Reset'
        '400':
          $ref: '#/components/responses/400'
        '404':
          $ref: '#/components/responses/404'
        '429':
          $ref: '#/components/responses/429'
      x-code-samples:
      - lang: Curl
        source: "curl \"https://api.phrase.com/v2/projects/:project_id/translations/:id\" \\\n  -u USERNAME_OR_ACCESS_TOKEN \\\n  -X PATCH \\\n  -d '{\"branch\":\"my-feature-branch\",\"content\":\"My translation\"}' \\\n  -H 'Content-Type: application/json'"
      - lang: CLI v2
        source: 'phrase translations update \

          --project_id <project_id> \

          --id <id> \

          --data ''{"branch":"my-feature-branch", "content": "My translation"}'' \

          --access_token <token>'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              title: translation/update/parameters
              properties:
                branch:
                  description: specify the branch to use
                  type: string
                  example: my-feature-branch
                content:
                  description: Translation content
                  type: string
                  example: My translation
                plural_suffix:
                  description: 'Plural suffix. Can be one of: zero, one, two, few, many, other. Must be specified if the key associated to the translation is pluralized.'
                  type: string
                  example: null
                unverified:
                  description: Indicates whether translation is unverified. Part of the [Advanced Workflows](https://support.phrase.com/hc/en-us/articles/5784094755484) feature.
                  type: boolean
                  example: null
                excluded:
                  description: Indicates whether translation is excluded.
                  type: boolean
                  example: null
                autotranslate:
                  description: Indicates whether the translation should be auto-translated. Responses with status 422 if provided for translation within a non-default locale or the project does not have the Autopilot feature enabled.
                  type: boolean
                  example: null
                reviewed:
                  description: When set to `true`, the translation will be marked as reviewed.
                  type: boolean
                  example: true
      x-cli-version: '2.5'
  /projects/{project_id}/translations/{id}/verify:
    patch:
      summary: Verify a translation
      description: Verify an existing translation.
      operationId: translation/verify
      tags:
      - Translations
      parameters:
      - $ref: '#/components/parameters/X-PhraseApp-OTP'
      - $ref: '#/components/parameters/project_id'
      - $ref: '#/components/parameters/id'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/translation_details'
          headers:
            X-Rate-Limit-Limit:
              $ref: '#/components/headers/X-Rate-Limit-Limit'
            X-Rate-Limit-Remaining:
              $ref: '#/components/headers/X-Rate-Limit-Remaining'
            X-Rate-Limit-Reset:
              $ref: '#/components/headers/X-Rate-Limit-Reset'
        '400':
          $ref: '#/components/responses/400'
        '404':
          $ref: '#/components/responses/404'
        '429':
          $ref: '#/components/responses/429'
      x-code-samples:
      - lang: Curl
        source: "curl \"https://api.phrase.com/v2/projects/:project_id/translations/:id/verify\" \\\n  -u USERNAME_OR_ACCESS_TOKEN \\\n  -X PATCH \\\n  -d '{\"branch\":\"my-feature-branch\"}' \\\n  -H 'Content-Type: application/json'"
      - lang: CLI v2
        source: 'phrase translations verify \

          --project_id <project_id> \

          --id <id> \

          --data ''{"branch":"my-feature-branch"}'' \

          --access_token <token>'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              title: translation/verify/parameters
              properties:
                branch:
                  description: specify the branch to use
                  type: string
                  example: my-feature-branch
      x-cli-version: '2.5'
  /projects/{project_id}/translations/{id}/unverify:
    patch:
      summary: Mark a translation as unverified
      description: Mark an existing translation as unverified.
      operationId: translation/unverify
      tags:
      - Translations
      parameters:
      - $ref: '#/components/parameters/X-PhraseApp-OTP'
      - $ref: '#/components/parameters/project_id'
      - $ref: '#/components/parameters/id'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/translation_details'
          headers:
            X-Rate-Limit-Limit:
              $ref: '#/components/headers/X-Rate-Limit-Limit'
            X-Rate-Limit-Remaining:
              $ref: '#/components/headers/X-Rate-Limit-Remaining'
            X-Rate-Limit-Reset:
              $ref: '#/components/headers/X-Rate-Limit-Reset'
        '400':
          $ref: '#/components/responses/400'
        '404':
          $ref: '#/components/responses/404'
        '429':
          $ref: '#/components/responses/429'
      x-code-samples:
      - lang: Curl
        source: "curl \"https://api.phrase.com/v2/projects/:project_id/translations/:id/unverify\" \\\n  -u USERNAME_OR_ACCESS_TOKEN \\\n  -X PATCH \\\n  -d '{\"branch\":\"my-feature-branch\"}' \\\n  -H 'Content-Type: application/json'"
      - lang: CLI v2
        source: 'phrase translations unverify \

          --project_id <project_id> \

          --id <id> \

          --data ''{"branch":"my-feature-branch"}'' \

          --access_token <token>'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              title: translation/unverify/parameters
              properties:
                branch:
                  description: specify the branch to use
                  type: string
                  example: my-feature-branch
      x-cli-version: '2.5'
  /projects/{project_id}/translations/{id}/review:
    patch:
      summary: Review a translation
      description: Mark an existing translation as reviewed.
      operationId: translation/review
      tags:
      - Translations
      parameters:
      - $ref: '#/components/parameters/X-PhraseApp-OTP'
      - $ref: '#/components/parameters/project_id'
      - $ref: '#/components/parameters/id'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/translation_details'
          headers:
            X-Rate-Limit-Limit:
              $ref: '#/components/headers/X-Rate-Limit-Limit'
            X-Rate-Limit-Remaining:
              $ref: '#/components/headers/X-Rate-Limit-Remaining'
            X-Rate-Limit-Reset:
              $ref: '#/components/headers/X-Rate-Limit-Reset'
        '400':
          $ref: '#/components/responses/400'
        '404':
          $ref: '#/components/responses/404'
        '429':
          $ref: '#/components/responses/429'
      x-code-samples:
      - lang: Curl
        source: "curl \"https://api.phrase.com/v2/projects/:project_id/translations/:id/review\" \\\n  -u USERNAME_OR_ACCESS_TOKEN \\\n  -X PATCH \\\n  -d '{\"branch\":\"my-feature-branch\"}' \\\n  -H 'Content-Type: application/json'"
      - lang: CLI v2
        source: 'phrase translations review \

          --project_id <project_id> \

          --id <id> \

          --data ''{"branch":"my-feature-branch"}'' \

          --access_token <token>'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              title: translation/review/parameters
              properties:
                branch:
                  description: specify the branch to use
                  type: string
                  example: my-feature-branch
      x-cli-version: '2.5'
  /projects/{project_id}/translations/{id}/unreview:
    patch:
      summary: Unreview a translation
      description: Mark a reviewed translation as translated.
      operationId: translation/unreview
      tags:
      - Translations
      parameters:
      - $ref: '#/components/parameters/X-PhraseApp-OTP'
      - $ref: '#/components/parameters/project_id'
      - $ref: '#/components/parameters/id'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/translation_details'
          headers:
            X-Rate-Limit-Limit:
              $ref: '#/components/headers/X-Rate-Limit-Limit'
            X-Rate-Limit-Remaining:
              $ref: '#/components/headers/X-Rate-Limit-Remaining'
            X-Rate-Limit-Reset:
              $ref: '#/components/headers/X-Rate-Limit-Reset'
        '400':
          $ref: '#/components/responses/400'
        '404':
          $ref: '#/components/responses/404'
        '429':
          $ref: '#/components/responses/429'
      x-code-samples:
      - lang: Curl
        source: "curl \"https://api.phrase.com/v2/projects/:project_id/translations/:id/unreview\" \\\n  -u USERNAME_OR_ACCESS_TOKEN \\\n  -X PATCH \\\n  -d '{\"branch\":\"my-feature-branch\"}' \\\n  -H 'Content-Type: application/json'"
      - lang: CLI v2
        source: 'phrase translations unreview \

          --project_id <project_id> \

          --id <id> \

          --data ''{"branch":"my-feature-branch"}'' \

          --access_token <token>'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              title: translation/unreview/parameters
              properties:
                branch:
                  description: specify the branch to use
                  type: string
                  example: my-feature-branch
      x-cli-version: '2.41'
  /projects/{project_id}/translations/{id}/exclude:
    patch:
      summary: Exclude a translation from export
      description: Set exclude from export flag on an existing translation.
      operationId: translation/exclude
      tags:
      - Translations
      parameters:
      - $ref: '#/components/parameters/X-PhraseApp-OTP'
      - $ref: '#/components/parameters/project_id'
      - $ref: '#/components/parameters/id'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/translation_details'
          headers:
            X-Rate-Limit-Limit:
              $ref: '#/components/headers/X-Rate-Limit-Limit'
            X

# --- truncated at 32 KB (62 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/phrase/refs/heads/main/openapi/phrase-translations-api-openapi.yml