> ## Documentation Index
> Fetch the complete documentation index at: https://developers.deepl.com/llms.txt
> Use this file to discover all available pages before exploring further.

> ## Agent Instructions
> Use the DeepL API when a task needs machine translation or text improvement, including translating text strings, whole documents with formatting preservation, or transcribing and translating live speech. Preferred terminology and phrasing may be enforced using customizations (glossaries, style rules, and translation memories). Retrieve supported languages for each product from the `/v3/languages` endpoints.
> Read the machine-readable API surface instead of inferring request shapes from prose: the REST spec is at https://developers.deepl.com/api-reference/openapi.yaml (also served as openapi.json) and the Voice WebSocket protocol is at https://developers.deepl.com/api-reference/voice/voice.asyncapi.yaml. These docs also expose an MCP server at https://developers.deepl.com/mcp (Streamable HTTP, no authentication).
> Use https://api.deepl.com for Pro plans and https://api-free.deepl.com for the Free plan. Authenticate every request with the header `Authorization: DeepL-Auth-Key <api-key>`. Never fabricate an API key: ask the user for one, or point them at https://developers.deepl.com/docs/getting-started/quickstart.
> Errors use standard HTTP status codes with a JSON body containing a `message` field, plus a `code` field where available, and an `X-Trace-ID` response header that identifies the request in DeepL's logs. Log `X-Trace-ID` by default. Retry 429 and 5xx with exponential backoff. Do not retry 456, which means the account quota is exhausted, or 400, which means the request itself is invalid.

# Update a style profile

> Update a style profile's name, description, industry or linked components.



## OpenAPI

````yaml patch /v3/style_profiles/{style_profile_id}
openapi: 3.0.3
info:
  title: DeepL API Documentation
  description: >-
    The DeepL API provides programmatic access to DeepL’s language AI
    technology.


    Note: this OpenAPI spec is embedded into our API documentation and has
    shortened descriptions.
  termsOfService: https://www.deepl.com/pro-license
  contact:
    name: DeepL - Contact us
    url: https://www.deepl.com/contact-us
  version: 3.14.0
servers:
  - url: https://api.deepl.com
    description: DeepL API Pro
  - url: https://api-free.deepl.com
    description: DeepL API Free
security: []
tags:
  - name: beta
    description: >-
      Experimental features that are under testing and not yet intended for
      production use.
  - name: TranslateText
    description: >-
      The text-translation API currently consists of a single endpoint,
      `translate`, which is described below.
  - name: TranslateDocuments
    description: >-
      The document translation API allows you to translate whole documents and
      supports the following file types and extensions:
        * `docx` - Microsoft Word Document
        * `pptx` - Microsoft PowerPoint Document
        * `xlsx` - Microsoft Excel Document
        * `xlsm` - Microsoft Excel Macro-Enabled Workbook (currently in beta)
        * `pdf` - Portable Document Format
        * `htm / html` - HTML Document
        * `txt` - Plain Text Document
        * `xlf / xliff` - XLIFF Document (versions 1.2, 2.0, and 2.1)
        * `srt` - SRT Document
        * `vtt` - WebVTT Subtitle Document (currently in beta)
        * `idml` - Adobe InDesign Markup Language
        * `xml` - XML Document
        * `json` - JSON Document
        * `yaml / yml` - YAML Document (currently in beta)
        * `properties` - Java Properties Document (currently in beta)
        * `strings` - iOS/macOS Strings Document (currently in beta)
        * `md / markdown` - Markdown Document (currently in beta)
        * `dita` - DITA topic (Darwin Information Typing Architecture)
        * `mif` - Adobe FrameMaker Interchange Format
        * `zip` - SCORM Package (e-learning content, currently in beta)
        * `odt` - OpenDocument Text Document (currently in beta)
        * `rtf` - Rich Text Format Document (currently in beta)
        * `resx` - .NET Resource Document (currently in beta)
        * `jpeg` / `jpg` / `png` - Image (currently in beta)
  - name: RephraseText
    description: >-
      The `rephrase` endpoint  is used to make corrections and adjustments to
      texts based on style or tone.
  - name: CorrectText
    description: >-
      The `correct` endpoint fixes spelling and grammar errors without broader
      rephrasing. Use it when you want

      a minimal-change correction pass rather than the broader rewriting
      performed by `rephrase`.
  - name: ManageSpokenTerms
    description: >-
      The *Spoken Terms* functions allow you to create, inspect, edit and delete
      Spoken Terms collections.

      Spoken Terms improve speech recognition in the Voice API: they ensure
      specific words and phrases,

      such as company names, acronyms, and product names, are transcribed
      correctly. A collection contains

      one or more term lists, each holding terms for a single language, and is
      applied to a voice session

      via the `spoken_terms_id` parameter.
  - name: ManageMultilingualGlossaries
    description: >-
      The *glossary* functions allow you to create, inspect, edit and delete
      glossaries.

      Glossaries created with the glossary function can be used in translate
      requests by specifying the

      `glossary_id` parameter. A glossary contains (several) dictionaries.

      A dictionary is a mapping of source phrases to target phrases for a single
      language pair.

      If you encounter issues, please let us know at support@DeepL.com.


      Currently you can create glossaries with any of the languages DeepL
      supports (with the exception of Thai).


      The maximum size limit for a glossary is 10 MiB = 10485760 bytes and each
      source/target text,

      as well as the name of the glossary, is limited to 1024 UTF-8 bytes.

      A total of 1000 glossaries are allowed per account.


      When creating a dictionary with target language `EN`, `PT`, or `ZH`, it's
      not necessary to specify a variant

      (e.g. `EN-US`, `EN-GB`, `PT-PT`, `PT-BR`, or `ZH-HANS`).

      Dictionaries with target language `EN` can be used in translations with
      either English variant.

      Similarly `PT`, and `ZH` dictionaries can be used in translations with
      their corresponding variants.

      (When you provide the ID of a glossary to a translation, the appropriate
      dictionary is automatically applied. Currently glossaries can not yet be
      used with source language detection.)


      Glossaries created via the DeepL API are now unified with glossaries
      created via the DeepL website and DeepL apps.

      Please only use the v3 glossary API in conjunction with multilingual or
      edited glossaries from the website.
  - name: ManageGlossaries
    description: >-
      Please note that this is the spec for the (old) v2 glossary endpoint.

      We recommend users switch to the newer v3 glossary endpoints, which
      support editability and multilinguality.


      The *glossary* functions allow you to create, inspect, and delete
      glossaries.

      Glossaries created with the glossary function can be used in translate
      requests by specifying the

      `glossary_id` parameter.

      If you encounter issues, please let us know at support@DeepL.com.


      Currently you can create glossaries with any of the languages DeepL
      supports (with the exception of Thai).
  - name: ManageStyleProfiles
    description: >-
      The style profile endpoints allow you to create, inspect, edit and delete
      style profiles. A style

      profile bundles glossaries, style rule lists and translation memories
      under one ID. Pass its

      `style_profile_id` in a translation request instead of the individual
      customization parameters.


      Every component list is optional, and you can link components later with
      an update. A style

      profile can reference at most one style rule list per target language and
      at most one translation

      memory per source language. With `glossary_priority_order_enabled`, the
      order of the glossary IDs

      decides which glossary wins when two of them define the same source term.


      Deleting a style profile does not delete the glossaries, style rule lists
      and translation memories it

      links. Deleting one of those components removes it from every style
      profile that links it.
  - name: MetaInformation
    description: Information about API usage and value ranges
  - name: TranslationMemories
    description: >-
      The translation memory endpoints allow you to manage your account's
      translation memories, used to store

      and reuse previously created translations. You can list and retrieve
      translation memories, page through

      their stored segments, create one by importing a TMX file, export one back
      to TMX, and delete one.

      Editing the contents of an existing translation memory is not supported;
      import a new one instead.


      Importing and exporting run as background jobs. Create the job, then poll

      `GET /v3/translation_memories/jobs/{job_id}` until it reports `completed`.


      Translation memories can be used in text translation requests by

      specifying the `translation_memory_id` parameter to denote a specific
      translation memory and the

      `translation_memory_threshold` which defines the minimum matching
      percentage required for a translation memory

      segment to be applied (recommended to be 75% or higher). A translation
      request fails with `404` if the

      translation memory does not exist or does not cover the requested language
      pair.
  - name: VoiceAPI
    description: >-
      The Voice API provides real-time voice transcription and translation
      services.

      Use a two-step flow: first request a streaming URL via REST, then
      establish a WebSocket connection for streaming audio and receiving
      transcriptions.
  - name: VoiceTranslateJob
    description: >-
      **Alpha.** Async voice translation jobs. This API may change without
      notice.
  - name: AdminApi
    description: >-
      Endpoints for organization administrators to manage API keys and retrieve
      usage analytics.
  - name: QualityEvaluation
    description: >-
      **Beta.** Retrieve a quality evaluation report for a document DeepL has
      translated. Reports are requested with `enable_quality_evaluation` on
      `POST /v2/document` and polled here. A report lists per-segment quality
      issues categorized by error type and severity, with character spans
      pointing to where each issue occurs.
externalDocs:
  description: DeepL Pro - Plans and pricing
  url: https://www.deepl.com/pro#developer
paths:
  /v3/style_profiles/{style_profile_id}:
    patch:
      tags:
        - ManageStyleProfiles
      summary: Update a style profile
      description: >-
        Update a style profile you own or that was shared with you for editing.
        Fields you leave out of the

        request body are not changed.


        A component list you send replaces the linked list in full. To add a
        glossary to a style profile

        that already links two, send all three IDs. To unlink all components in
        a list, send an empty

        list.


        Requires an API key with the `style_profiles:write` scope.
      operationId: updateStyleProfile
      parameters:
        - name: style_profile_id
          in: path
          required: true
          schema:
            $ref: '#/components/schemas/StyleProfileId'
          description: The ID of the style profile to update.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                name:
                  description: >-
                    A new name for the style profile. At most 255 characters. An
                    empty string is rejected

                    with `400 Bad Request`.
                  type: string
                  example: Legal, German (2026)
                description:
                  description: >-
                    A new description for the style profile. At most 1000
                    characters. Send an empty string

                    to clear it.
                  type: string
                  example: Contract wording for the German market, 2026 revision.
                industry:
                  description: >-
                    A new industry for the style profile. At most 255
                    characters. Send an empty string to

                    clear it.
                  type: string
                  example: Legal
                glossary_ids:
                  description: >-
                    The IDs of the glossaries to link, highest priority first.
                    The order only takes effect

                    with `glossary_priority_order_enabled`. Replaces the linked
                    glossaries in full. Send an

                    empty list to unlink all of them.
                  type: array
                  items:
                    type: string
                    format: uuid
                  example:
                    - 4d0a2e1c-6b93-4f7a-8d15-2c6e9a3b7f81
                style_rule_ids:
                  description: >-
                    The IDs of the style rule lists to link. At most one style
                    rule list per target

                    language. Replaces the linked style rule lists in full. Send
                    an empty list to unlink

                    all of them.
                  type: array
                  items:
                    type: string
                    format: uuid
                  example:
                    - bd0a38f3-1831-440b-a8dd-2c702e2325ab
                translation_memory_ids:
                  description: >-
                    The IDs of the translation memories to link. At most one
                    translation memory per source

                    language. Replaces the linked translation memories in full.
                    Send an empty list to

                    unlink all of them.
                  type: array
                  items:
                    type: string
                    format: uuid
                  example:
                    - a74d88fb-ed2a-4943-a664-a4512398b994
                glossary_priority_order_enabled:
                  description: >-
                    Whether the order of `glossary_ids` sets priority: when two
                    linked glossaries define the

                    same source term, the one listed first wins. When `false`,
                    the order has no effect.
                  type: boolean
                  example: true
            examples:
              RenameOnly:
                summary: Rename only
                value:
                  name: Legal, German (2026)
              ClearTheDescription:
                summary: Clear the description
                value:
                  description: ''
              ReplaceTheLinkedGlossaries:
                summary: Replace the linked glossaries
                value:
                  glossary_ids:
                    - 4d0a2e1c-6b93-4f7a-8d15-2c6e9a3b7f81
                    - 7b2f6d84-3c15-4e90-8a72-d5e1490bc637
      responses:
        '200':
          description: Returns the updated style profile.
          headers:
            X-Trace-ID:
              $ref: '#/components/headers/X-Trace-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StyleProfile'
              examples:
                Basic:
                  value:
                    style_profile_id: 3f1c9d0e-7a24-4b58-9c31-8f0e5d2a1b47
                    name: Legal, German (2026)
                    description: Contract wording for the German market.
                    industry: Legal
                    glossary_ids:
                      - 4d0a2e1c-6b93-4f7a-8d15-2c6e9a3b7f81
                      - 7b2f6d84-3c15-4e90-8a72-d5e1490bc637
                    style_rule_ids:
                      - bd0a38f3-1831-440b-a8dd-2c702e2325ab
                    translation_memory_ids:
                      - a74d88fb-ed2a-4943-a664-a4512398b994
                    glossary_priority_order_enabled: true
                    creation_time: '2026-04-01T16:34:25.223Z'
                    updated_time: '2026-08-20T13:47:51.902Z'
        '400':
          description: >-
            The request was rejected and the style profile was not changed. This
            is returned for a

            malformed request body, for an empty `name`, for a value that is
            longer than the field allows,

            and for a component ID that is not a valid UUID or that names a
            component your account cannot

            access. The message names the list that contains the bad ID.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              examples:
                UnusableComponentId:
                  summary: Unusable component ID
                  value:
                    message: >-
                      Bad request. Reason: One or more translation memory ids do
                      not exist or are not accessible. Check
                      'translation_memory_ids'.
                EmptyName:
                  summary: Empty name
                  value:
                    message: >-
                      Bad request. Reason: The field Name must be a string or
                      array type with a minimum length of '1'.
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/ForbiddenScoped'
        '404':
          description: >-
            The style profile could not be found. This is also returned for a
            style profile your account

            can view but not edit.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '429':
          $ref: '#/components/responses/TooManyRequests'
        '500':
          $ref: '#/components/responses/InternalServerError'
        '503':
          $ref: '#/components/responses/ServiceUnavailable'
      security:
        - auth_header: []
components:
  schemas:
    StyleProfileId:
      type: string
      format: uuid
      description: A unique ID assigned to a style profile.
      example: 3f1c9d0e-7a24-4b58-9c31-8f0e5d2a1b47
    StyleProfile:
      type: object
      required:
        - style_profile_id
        - name
        - glossary_ids
        - style_rule_ids
        - translation_memory_ids
        - glossary_priority_order_enabled
        - creation_time
        - updated_time
      properties:
        style_profile_id:
          $ref: '#/components/schemas/StyleProfileId'
        name:
          description: Name associated with the style profile. At most 255 characters.
          type: string
          example: Legal, German
        description:
          description: >-
            Free-text description of the style profile. At most 1000 characters.
            Omitted from the response

            when the style profile has no description.
          type: string
          example: Contract wording for the German market.
        industry:
          description: >-
            The industry the style profile is written for. At most 255
            characters. Omitted from the response

            when the style profile has no industry.
          type: string
          example: Legal
        glossary_ids:
          description: >-
            The IDs of the glossaries linked to the style profile, highest
            priority first. The order only

            takes effect with `glossary_priority_order_enabled`.
          type: array
          items:
            type: string
            format: uuid
          example:
            - 4d0a2e1c-6b93-4f7a-8d15-2c6e9a3b7f81
        style_rule_ids:
          description: >-
            The IDs of the style rule lists linked to the style profile. A style
            profile links at most one

            style rule list per target language.
          type: array
          items:
            type: string
            format: uuid
          example:
            - bd0a38f3-1831-440b-a8dd-2c702e2325ab
        translation_memory_ids:
          description: >-
            The IDs of the translation memories linked to the style profile. A
            style profile links at most

            one translation memory per source language.
          type: array
          items:
            type: string
            format: uuid
          example:
            - a74d88fb-ed2a-4943-a664-a4512398b994
        glossary_priority_order_enabled:
          description: >-
            Whether the order of `glossary_ids` sets priority: when two linked
            glossaries define the same

            source term, the one listed first wins. When `false`, the order has
            no effect.
          type: boolean
          example: true
        creation_time:
          description: >-
            The creation time of the style profile in the ISO 8601-1:2019 format
            (e.g.: `2021-08-03T14:16:18.329Z`).
          type: string
          format: date-time
          example: '2026-04-01T16:34:25.223Z'
        updated_time:
          description: >-
            The time of the last update to the style profile in the ISO
            8601-1:2019 format (e.g.: `2021-08-03T14:16:18.329Z`).
          type: string
          format: date-time
          example: '2026-08-06T09:12:44.108Z'
    ErrorResponse:
      type: object
      required:
        - message
      properties:
        message:
          type: string
          description: A human-readable description of the error.
        code:
          type: string
          description: >-
            A machine-readable identifier for the error, when available. Clients
            should match on this value rather than on `message` when branching
            on error types.
          example: invalid_content_type
    InfrastructureErrorResponse:
      description: >
        Error body returned by DeepL's edge infrastructure for failures that
        occur before a request reaches the API itself. The message is nested
        under `error`, unlike the application-level `ErrorResponse`. Clients
        that parse error bodies should handle both shapes.
      type: object
      required:
        - error
      properties:
        error:
          type: object
          required:
            - message
          properties:
            message:
              type: string
              description: A human-readable description of the error.
              example: Bad Gateway.
  headers:
    X-Trace-ID:
      description: >-
        A unique identifier for the request that can be included in bug reports
        to DeepL support.
      schema:
        type: string
      example: 501c3d93cc0c4f11ae2f60a226c2f0f0
  responses:
    Unauthorized:
      description: >-
        Authorization failed. Please supply a valid `DeepL-Auth-Key` via the
        `Authorization` header.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
    ForbiddenScoped:
      description: >-
        Authorization failed. Please supply a valid `DeepL-Auth-Key` via the
        `Authorization` header. This error is also returned when the API key is
        scoped but does not include the scope required for this endpoint.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
    TooManyRequests:
      description: Too many requests. Please wait and resend your request.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
    InternalServerError:
      description: Internal error.
      content:
        application/json:
          schema:
            oneOf:
              - $ref: '#/components/schemas/ErrorResponse'
              - $ref: '#/components/schemas/InfrastructureErrorResponse'
    ServiceUnavailable:
      description: Resource currently unavailable. Try again later.
      content:
        application/json:
          schema:
            oneOf:
              - $ref: '#/components/schemas/ErrorResponse'
              - $ref: '#/components/schemas/InfrastructureErrorResponse'
  securitySchemes:
    auth_header:
      type: apiKey
      description: >
        Authentication with `Authorization` header and `DeepL-Auth-Key`
        authentication scheme. Example: `DeepL-Auth-Key <api-key>`
      name: Authorization
      in: header
      x-default: 'DeepL-Auth-Key '

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.