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

# Update a Copilot Config

> Re-saves a Copilot config. The same operation as creating one, with the id supplied, and asynchronous in the same way. When it was created, by whom, and any completed deploy are preserved - a re-save cannot rewrite them.




## OpenAPI

````yaml https://api-trial.cognigy.ai/openapi/openapi-viewer.json put /v2.0/copilotConfigs/{configId}
openapi: 3.0.0
info:
  title: Cognigy.AI REST-ful-API Reference
  version: 2026.20.0
  description: >

    ### Introduction

    This is the [OpenAPI 3.0](https://swagger.io/specification/) documentation
    of the
    [REST](https://en.wikipedia.org/wiki/Representational_state_transfer)-ful
    Cognigy.AI API.


    ### Cross-Origin Resource Sharing

    This API features Cross-Origin Resource Sharing (CORS) implemented in
    compliance with [W3C spec](https://www.w3.org/TR/cors/), which allows
    cross-domain communication from the browser. All responses include a
    wildcard same-origin header, making the API fully accessible.


    ### Authentication

    Cognigy.AI offers three forms of authentication:

    - API Key

    - CXone Token

    - BasicAuth


    An API Key is a security token. You can use API Keys in your path or HTTP
    header. Never expose your API Key and keep it safe and secure. Revoke the
    API Key if it got exposed or stolen.


    Basic Auth is only used for API calls regarding the Management-UI.


    ### Error Handling

    This API uses HTTP status codes equal or above 400 to indicate errors. Error
    details are generated in compliance with [RFC 7807 - "Problem Details for
    HTTP APIs"](https://tools.ietf.org/html/rfc7807).


    Every error response contains a traceId, which should be provided to the
    Cognigy.AI Technical Support when reporting an error.
  contact:
    name: Cognigy Technical Support
    url: https://www.cognigy.com
    email: support@cognigy.com
servers:
  - url: https://api-trial.cognigy.ai/new/
    description: Cognigy.AI API
security:
  - APIKeyHeader: []
  - APIKeyQueryParam: []
  - CXoneTokenHeader: []
  - BasicAuth: []
tags:
  - name: Cognigy.AI REST-ful API
    description: The Cognigy.AI REST-ful API
externalDocs:
  description: Cognigy.AI Documentation
  url: https://docs.cognigy.com/docs/
paths:
  /v2.0/copilotConfigs/{configId}:
    put:
      tags:
        - Copilot Configs
      summary: Update a Copilot Config
      description: >
        Re-saves a Copilot config. The same operation as creating one, with the
        id supplied, and asynchronous in the same way. When it was created, by
        whom, and any completed deploy are preserved - a re-save cannot rewrite
        them.
      operationId: updateCopilotConfig_2_0
      parameters:
        - in: header
          name: Accept
          description: >-
            The `Accept` header specifies the media type that the client expects
            in the response. Available options: `application/json`,
            `application/hal+json`, `application/xml`, `text/xml`, `text/csv`.
            The default value is `application/json`.
          required: false
          schema:
            type: string
            enum:
              - application/json
              - application/hal+json
              - application/xml
              - text/xml
              - text/csv
          example: application/json
        - in: path
          name: configId
          required: true
          description: The unique identifier for the Copilot config.
          schema:
            type: string
            pattern: ^[a-z0-9]{24}$
            minLength: 24
            maxLength: 24
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              description: >
                The workspace JSON. Create and re-save take the same body - the
                only difference is whether an id is supplied - so a rule added
                to one cannot drift from the other. Ownership (organisation,
                createdBy, lastChangedBy) is established from the session, never
                from here.
              required:
                - name
                - layoutMode
                - space
                - widgets
                - projectId
              properties:
                name:
                  type: string
                  description: >-
                    Required, and required after trimming - a name of spaces is
                    not a name.
                description:
                  type: string
                layoutMode:
                  type: string
                  enum:
                    - grid
                    - hybrid
                  description: '`single` is readable but cannot be saved.'
                space:
                  type: object
                  description: How much room the Copilot has in the agent's workspace.
                  properties:
                    columns:
                      type: integer
                    rows:
                      type: integer
                    gap:
                      type: integer
                widgets:
                  type: array
                  description: >-
                    At least one widget - the other half of the save gate,
                    alongside a name.
                  items:
                    type: object
                    description: >-
                      One placed widget and the settings the builder may edit
                      for it.
                    properties:
                      key:
                        type: string
                        enum:
                          - customer-sentiment
                          - real-time-summary
                          - knowledge-base-answer
                          - autosummary
                      name:
                        type: string
                      description:
                        type: string
                      runsWhen:
                        type: string
                        enum:
                          - everyTurn
                          - onAgentQuestion
                          - endOfContact
                      runsFor:
                        type: string
                        enum:
                          - allContacts
                      placement:
                        type: object
                        description: >
                          Where a widget sits. Which fields are present depends
                          on the layout: grid requires column/row/width/height
                          and omits pinned (a grid cell is a pin by definition);
                          hybrid unpinned sets pinned false with only height;
                          hybrid pinned sets pinned true plus the full position
                          and size.
                        properties:
                          pinned:
                            type: boolean
                          column:
                            type: integer
                          row:
                            type: integer
                          width:
                            type: integer
                          height:
                            type: integer
                          unpinnedBehavior:
                            type: string
                            enum:
                              - newTile
                              - sameTile
                projectId:
                  type: string
                  pattern: ^[a-z0-9]{24}$
                  minLength: 24
                  maxLength: 24
      responses:
        '200':
          description: Returns the stored Copilot config object.
          content:
            application/json:
              schema:
                type: object
                properties:
                  _id:
                    type: string
                    format: mongoId
                    description: The object id of the Copilot config
                  name:
                    type: string
                    description: The name of the Copilot config
                  description:
                    type: string
                    description: The description of the Copilot config
                  referenceId:
                    type: string
                    format: uuid
                    description: The referenceId of the Copilot config
                  projectReference:
                    type: string
                    format: mongoId
                    description: The id of the project the Copilot config belongs to
                  organisationReference:
                    type: string
                    description: The id of the organisation the Copilot config belongs to
                  createdAt:
                    type: integer
                    description: >-
                      Unix timestamp (seconds) of when the Copilot config was
                      created
                  lastChanged:
                    type: integer
                    description: >-
                      Unix timestamp (seconds) of when the Copilot config was
                      last changed
                  createdBy:
                    type: string
                    description: The id of the user who created the Copilot config
                  lastChangedBy:
                    type: string
                    description: The id of the user who last changed the Copilot config
                  layoutMode:
                    type: string
                    enum:
                      - grid
                      - hybrid
                      - single
                    description: The layout mode of the Copilot config
                  space:
                    type: object
                    description: How much room the Copilot has in the agent's workspace.
                    properties:
                      columns:
                        type: integer
                      rows:
                        type: integer
                      gap:
                        type: integer
                  widgets:
                    type: array
                    description: Always an array, never null, even when empty.
                    items:
                      type: object
                      description: >-
                        One placed widget and the settings the builder may edit
                        for it.
                      properties:
                        key:
                          type: string
                          enum:
                            - customer-sentiment
                            - real-time-summary
                            - knowledge-base-answer
                            - autosummary
                        name:
                          type: string
                        description:
                          type: string
                        runsWhen:
                          type: string
                          enum:
                            - everyTurn
                            - onAgentQuestion
                            - endOfContact
                        runsFor:
                          type: string
                          enum:
                            - allContacts
                        placement:
                          type: object
                          description: >
                            Where a widget sits. Which fields are present
                            depends on the layout: grid requires
                            column/row/width/height and omits pinned (a grid
                            cell is a pin by definition); hybrid unpinned sets
                            pinned false with only height; hybrid pinned sets
                            pinned true plus the full position and size.
                          properties:
                            pinned:
                              type: boolean
                            column:
                              type: integer
                            row:
                              type: integer
                            width:
                              type: integer
                            height:
                              type: integer
                            unpinnedBehavior:
                              type: string
                              enum:
                                - newTile
                                - sameTile
                  hasEverSaved:
                    type: boolean
                    description: >
                      True once a save has succeeded at least once. Not the same
                      as `published` — publishing is asynchronous, so a config
                      is routinely saved while still unpublished.
                  published:
                    type: boolean
                    description: Whether the Copilot config is published
                  publication:
                    nullable: true
                    description: The last completed deploy, or null if none has finished.
                    type: object
                    properties:
                      publishedAt:
                        type: integer
                        description: Unix timestamp in seconds.
                      flowCount:
                        type: integer
                      orchestrationFlowName:
                        type: string
                      orchestrationFlowLink:
                        type: string
                      endpointName:
                        type: string
                      endpointLink:
                        type: string
        '400':
          description: >-
            The server cannot or will not process the request due to something
            that is perceived to be a client error (e.g., malformed request
            syntax, invalid request message framing, or deceptive request
            routing)
          content:
            application/json:
              schema:
                type: object
                properties:
                  type:
                    type: string
                    example: Bad Request
                  title:
                    type: string
                    example: Bad Request Error
                  status:
                    type: number
                    example: 400
                  detail:
                    type: string
                    example: Validation failed. Missing payload.
                  instance:
                    type: string
                    example: /v2.0/flows/5ce7c2d833ea1e04d7e6c432
                  code:
                    type: string
                    example: 1000
                  traceId:
                    type: string
                    example: api--f84324f4-98eb-4f02-abdd-375a2e6c3c1f
                  details:
                    type: object
                    example: {}
        '401':
          description: >-
            The request has not been applied because it lacks valid
            authentication credentials for the target resource.
          content:
            application/json:
              schema:
                type: object
                properties:
                  type:
                    type: string
                    example: Unauthorized
                  title:
                    type: string
                    example: Unauthorized Error
                  status:
                    type: number
                    example: 401
                  detail:
                    type: string
                  instance:
                    type: string
                    example: /v2.0/flows/5ce7c2d833ea1e04d7e6c432
                  code:
                    type: string
                    example: 401
                  traceId:
                    type: string
                    example: api--f84324f4-98eb-4f02-abdd-375a2e6c3c1f
                  details:
                    type: object
                    example: {}
        '402':
          description: Upgrade your Plan to increase your Quota.
          content:
            application/json:
              schema:
                type: object
                properties:
                  type:
                    type: string
                    example: Payment Required
                  title:
                    type: string
                    example: Payment Required Error
                  status:
                    type: number
                    example: 402
                  detail:
                    type: string
                    example: Validation failed. Missing payload.
                  instance:
                    type: string
                    example: /v2.0/flows/5ce7c2d833ea1e04d7e6c432
                  code:
                    type: string
                    example: 402
                  traceId:
                    type: string
                    example: api--f84324f4-98eb-4f02-abdd-375a2e6c3c1f
                  details:
                    type: object
                    example: {}
        '403':
          description: The server understood the request but refuses to authorize it.
          content:
            application/json:
              schema:
                type: object
                properties:
                  type:
                    type: string
                    example: Forbidden
                  title:
                    type: string
                    example: Forbidden Error
                  status:
                    type: number
                    example: 403
                  detail:
                    type: string
                  instance:
                    type: string
                    example: /v2.0/flows/5ce7c2d833ea1e04d7e6c432
                  code:
                    type: string
                    example: 1000
                  traceId:
                    type: string
                    example: api--f84324f4-98eb-4f02-abdd-375a2e6c3c1f
                  details:
                    type: object
                    example: {}
        '404':
          description: >-
            The origin server did not find a current representation for the
            target resource or is not willing to disclose that one exists.
          content:
            application/json:
              schema:
                type: object
                properties:
                  type:
                    type: string
                    example: Not Found
                  title:
                    type: string
                    example: Not Found Error
                  status:
                    type: number
                    example: 404
                  detail:
                    type: string
                  instance:
                    type: string
                    example: /v2.0/flows/5ce7c2d833ea1e04d7e6c432
                  code:
                    type: string
                    example: 1000
                  traceId:
                    type: string
                    example: api--f84324f4-98eb-4f02-abdd-375a2e6c3c1f
                  details:
                    type: object
                    example: {}
                  logLevel:
                    type: string
                    example: error
        '405':
          description: >-
            The method received in the request-line is known by the origin
            server but not supported by the target resource.
          content:
            application/json:
              schema:
                type: object
                properties:
                  type:
                    type: string
                    example: Method Not Allowed
                  title:
                    type: string
                    example: Method Not Allowed Error
                  status:
                    type: number
                    example: 405
                  detail:
                    type: string
                  instance:
                    type: string
                    example: /v2.0/flows/5ce7c2d833ea1e04d7e6c432
                  code:
                    type: string
                    example: 1000
                  traceId:
                    type: string
                    example: api--f84324f4-98eb-4f02-abdd-375a2e6c3c1f
                  details:
                    type: object
                    example: {}
        '409':
          description: The request conflicts with current state of the server.
          content:
            application/json:
              schema:
                type: object
                properties:
                  type:
                    type: string
                    example: Conflict
                  title:
                    type: string
                    example: Conflict Error
                  status:
                    type: number
                    example: 409
                  detail:
                    type: string
                  instance:
                    type: string
                    example: /v2.0/flows/5ce7c2d833ea1e04d7e6c432
                  code:
                    type: string
                    example: 1004
                  traceId:
                    type: string
                    example: api--f84324f4-98eb-4f02-abdd-375a2e6c3c1f
                  details:
                    type: object
                    example: {}
        '413':
          description: The request entity is larger than limits defined by server.
          content:
            application/json:
              schema:
                type: object
                properties:
                  type:
                    type: string
                    example: Payload Too Large
                  title:
                    type: string
                    example: Payload Too Large Error
                  status:
                    type: number
                    example: 413
                  detail:
                    type: string
                  instance:
                    type: string
                    example: /v2.0/flows/5ce7c2d833ea1e04d7e6c432
                  code:
                    type: string
                    example: 1000
                  traceId:
                    type: string
                    example: api--f84324f4-98eb-4f02-abdd-375a2e6c3c1f
                  details:
                    type: object
                    example: {}
        '500':
          description: >-
            The server encountered an unexpected condition that prevented it
            from fulfilling the request.
          content:
            application/json:
              schema:
                type: object
                properties:
                  type:
                    type: string
                    example: Internal Server Error
                  title:
                    type: string
                    example: Internal Server Error
                  status:
                    type: number
                    example: 500
                  detail:
                    type: string
                  instance:
                    type: string
                    example: /v2.0/flows/5ce7c2d833ea1e04d7e6c432
                  code:
                    type: string
                    example: 1000
                  traceId:
                    type: string
                    example: api--f84324f4-98eb-4f02-abdd-375a2e6c3c1f
                  details:
                    type: object
                    example: {}
        '501':
          description: >-
            The server does not support the functionality required to fulfill
            the request.
          content:
            application/json:
              schema:
                type: object
                properties:
                  type:
                    type: string
                    example: Not Implemented
                  title:
                    type: string
                    example: Not Implemented Error
                  status:
                    type: number
                    example: 501
                  detail:
                    type: string
                  instance:
                    type: string
                    example: /v2.0/flows/5ce7c2d833ea1e04d7e6c432
                  code:
                    type: string
                    example: 1009
                  traceId:
                    type: string
                    example: api--f84324f4-98eb-4f02-abdd-375a2e6c3c1f
                  details:
                    type: object
                    example: {}
        '502':
          description: >-
            The server, while acting as a gateway or proxy, received an invalid
            response from an inbound server it accessed while attempting to
            fulfill the request.
          content:
            application/json:
              schema:
                type: object
                properties:
                  type:
                    type: string
                    example: Bad Gateway
                  title:
                    type: string
                    example: Bad Gateway Error
                  status:
                    type: number
                    example: 502
                  detail:
                    type: string
                  instance:
                    type: string
                    example: /v2.0/flows/5ce7c2d833ea1e04d7e6c432
                  code:
                    type: string
                    example: 1000
                  traceId:
                    type: string
                    example: api--f84324f4-98eb-4f02-abdd-375a2e6c3c1f
                  details:
                    type: object
                    example: {}
        '503':
          description: The server is not ready to handle the request.
          content:
            application/json:
              schema:
                type: object
                properties:
                  type:
                    type: string
                    example: Service Unavailable
                  title:
                    type: string
                    example: Service Unavailable Error
                  status:
                    type: number
                    example: 503
                  detail:
                    type: string
                  instance:
                    type: string
                    example: /v2.0/flows/5ce7c2d833ea1e04d7e6c432
                  code:
                    type: string
                    example: 503
                  traceId:
                    type: string
                    example: api--f84324f4-98eb-4f02-abdd-375a2e6c3c1f
                  details:
                    type: object
                    example: {}
        '504':
          description: >-
            The server, while acting as a gateway or proxy, did not receive a
            timely response from an upstream server it needed to access in order
            to complete the request.
          content:
            application/json:
              schema:
                type: object
                properties:
                  type:
                    type: string
                    example: Gateway Timeout
                  title:
                    type: string
                    example: Gateway Timeout Error
                  status:
                    type: number
                    example: 504
                  detail:
                    type: string
                  instance:
                    type: string
                    example: /v2.0/flows/5ce7c2d833ea1e04d7e6c432
                  code:
                    type: string
                    example: 1000
                  traceId:
                    type: string
                    example: api--f84324f4-98eb-4f02-abdd-375a2e6c3c1f
                  details:
                    type: object
                    example: {}
      security:
        - APIKeyHeader: []
        - APIKeyQueryParam: []
        - CXoneTokenHeader: []
components:
  securitySchemes:
    APIKeyHeader:
      type: apiKey
      in: header
      name: X-API-Key
      description: Supply the API Key in the HTTP-Header
    APIKeyQueryParam:
      type: apiKey
      in: query
      name: api_key
      description: Supply the API Key in the Url-Query
    CXoneTokenHeader:
      type: apiKey
      in: header
      name: x-cxone-authorization
      description: >-
        Supply the CXone Token in the HTTP-Header containing the word "Bearer"
        followed by a space and a Token String. Applicable only in CXone
        integrated environments.
    BasicAuth:
      type: http
      scheme: basic
      description: Basic Authentication used by routes designed for the Management-UI.

````