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

# Update questionnaire response content

> Update the answer content of a questionnaire response. The edit is
recorded as performed by the calling application, since vanta-api
authenticates an OAuth client rather than a specific user.



## OpenAPI

````yaml /reference/manage-vanta.json patch /customer-trust/questionnaires/{questionnaireId}/responses/{responseId}
openapi: 3.0.0
info:
  title: Manage Vanta
  version: 1.0.0
  description: >-
    The REST API lets customers query and mutate Vanta's data. Use this API to
    automate bulk actions, query data for custom workflows and dashboards, and
    bolster your security operations


    **Note for Vanta Gov (FedRAMP) customers:** Select `Vanta Gov (FedRAMP)`
    from the server dropdown to issue requests against
    `https://api.vanta-gov.com`. The OAuth token URL shown below defaults to the
    commercial host — replace it with `https://api.vanta-gov.com/oauth/token`.
  termsOfService: https://www.vanta.com/terms
  license:
    name: UNLICENSED
  contact:
    name: API Support
    url: https://help.vanta.com/
    email: support@vanta.com
servers:
  - url: https://api.vanta.com/v1
    description: Vanta (Commercial)
  - url: https://api.vanta-gov.com/v1
    description: Vanta Gov (FedRAMP)
security: []
paths:
  /customer-trust/questionnaires/{questionnaireId}/responses/{responseId}:
    patch:
      tags:
        - Customer Trust
      summary: Update questionnaire response content
      description: |-
        Update the answer content of a questionnaire response. The edit is
        recorded as performed by the calling application, since vanta-api
        authenticates an OAuth client rather than a specific user.
      operationId: UpdateQuestionnaireResponseContent
      parameters:
        - in: path
          name: questionnaireId
          required: true
          schema:
            type: string
        - in: path
          name: responseId
          required: true
          schema:
            type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpdateQuestionnaireResponseContentArgs'
      responses:
        '200':
          description: Ok
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/QuestionnaireResponseWithoutViewerPermissions
              examples:
                Example 1:
                  value:
                    id: '000000000000000000000001'
                    question: Do you encrypt customer data at rest?
                    isPendingAnswerGeneration: false
                    answer:
                      explanation: Yes, we encrypt all customer data at rest with AES-256.
                    ownerAssignment:
                      type: User
                      id: '000000000000000000000002'
                      displayName: Jane Doe
      security:
        - bearerAuth: []
components:
  schemas:
    UpdateQuestionnaireResponseContentArgs:
      description: Request body for updating a questionnaire response's answer content.
      properties:
        answerPartsValues:
          $ref: '#/components/schemas/Record_string.unknown_'
          description: |-
            Map of answer part id -> value, matching the shape of the
            `answerPartsValues` read field. Values must be string, number,
            boolean, null, or string[]. A null value clears that part's value;
            ids omitted from the map are left unchanged.
      required:
        - answerPartsValues
      type: object
      additionalProperties: false
    QuestionnaireResponseWithoutViewerPermissions:
      description: >-
        A questionnaire response without the fields that describe what the

        requesting user may do with it. Surfaces that authenticate a client
        rather

        than a user return this, since there is no user those fields could
        describe.
      properties:
        id:
          type: string
          description: The unique identifier for the questionnaire response
        sectionId:
          type: string
          nullable: true
          description: |-
            The questionnaire section this response belongs to, if any.
            Null for standalone questions or legacy responses without a section.
        sequenceLabel:
          type: string
          description: Sequence label for ordering responses within a questionnaire
        question:
          type: string
          description: The actual question text
        answer:
          $ref: '#/components/schemas/DeprecatedQAutoAnswerForAPI'
          description: The current answer for the question.
          deprecated: true
        editedBy:
          allOf:
            - $ref: '#/components/schemas/CustomerTrustUser'
          nullable: true
          description: The user who last edited the question/answer
        approvedBy:
          allOf:
            - $ref: '#/components/schemas/CustomerTrustUser'
          nullable: true
          description: The user who approved the current answer
        isPendingAnswerGeneration:
          type: boolean
          description: Indicates whether the answer is currently being worked on by AI.
        originType:
          $ref: '#/components/schemas/QuestionnaireResponseOriginType'
          description: >-
            Where the current answer has came from

            - AI: generated by Vanta AI

            - Manual: written in by a user

            - Original questionnaire: included in the original import

            - Answer library: the answer was found in a matching question in the
            knowledge center

            - Resource: the answer was found in a matching excerpt from a
            document in the knowledge center
        answerSchema:
          type: string
          description: |-
            JSON Schema describing the expected answer format for this question.
            Prefer `answerPartsSchema` + `answerPartsValues` — those mirror the
            apps/web GraphQL surface and let clients render against the
            canonical composite schema.
        answerPartsSchema:
          $ref: '#/components/schemas/JSONSchema7'
          description: |-
            Composite JSONSchema7 built from the response's stored answer parts
            (via `toCompositeSchema`). Mirrors the GraphQL `answerPartsSchema`
            field. Absent when the response has no stored parts — clients fall
            back to the legacy `answerSchema` field.
        answerPartsValues:
          $ref: '#/components/schemas/Record_string.AnswerPartValue_'
          description: |-
            Flat map of part-id → current value (via `toAnswerPartsValues`).
            Same key set as `answerPartsSchema.properties`. Absent when the
            response has no stored parts.
        attachedEvidence:
          items:
            properties:
              uploadedDocument:
                properties:
                  slugId:
                    type: string
                  filename:
                    type: string
                  id:
                    type: string
                required:
                  - id
                type: object
            required:
              - uploadedDocument
            type: object
          type: array
          description: Evidence documents attached to support this questionnaire response
        generatedAnswerLogId:
          type: string
          description: >-
            Id of the QAutoGeneratedAnswerLog that produced the current
            generated

            answer on this response, if any. The browser extension API exposes
            the log

            body and citations at

            `GET
            /questionnaires/{questionnaireId}/responses/{responseId}/generated-answer-log`.
        ownerAssignment:
          allOf:
            - $ref: '#/components/schemas/ActorAssignment'
          nullable: true
          description: >-
            The response's owner, or null when no owner is assigned. Resolved
            from the

            object-role grant rather than the response document's legacy
            `ownerUserId`,

            which the object-role registry leaves unset for Team owners.
      required:
        - id
        - question
        - isPendingAnswerGeneration
        - ownerAssignment
      type: object
      additionalProperties: false
    Record_string.unknown_:
      properties: {}
      additionalProperties: {}
      type: object
      description: Construct a type with a set of properties K of type T
    DeprecatedQAutoAnswerForAPI:
      description: >-
        Frozen local clone of the shared `QAutoAnswer` shape, scoped to the

        deprecated REST `answer` field so that field's contract does not track

        changes to the shared answer-library type. No longer populated at
        runtime;

        removal is tracked by CTAUTO-1973.
      properties:
        explanation:
          type: string
          nullable: true
        multipleChoice:
          allOf:
            - $ref: '#/components/schemas/QuestionnaireResponseMultipleChoiceAnswer'
          nullable: true
        multipleChoiceCustom:
          type: string
          nullable: true
      type: object
      additionalProperties: false
    CustomerTrustUser:
      properties:
        id:
          type: string
        organizationId:
          type: string
        email:
          type: string
        givenName:
          type: string
          nullable: true
        familyName:
          type: string
          nullable: true
      required:
        - id
        - organizationId
        - email
        - givenName
        - familyName
      type: object
      additionalProperties: false
    QuestionnaireResponseOriginType:
      type: string
      enum:
        - AI
        - ANSWER_LIBRARY
        - MANUAL
        - ORIGINAL_QUESTIONNAIRE
        - RESOURCE
    JSONSchema7:
      properties:
        $ref: 7ef42983-a1e4-44f5-98af-756af9fb0280
        $id:
          type: string
        $schema:
          $ref: '#/components/schemas/JSONSchema7Version'
        $comment:
          type: string
        $defs:
          properties: {}
          additionalProperties:
            $ref: '#/components/schemas/JSONSchema7Definition'
          type: object
        type:
          anyOf:
            - $ref: '#/components/schemas/JSONSchema7TypeName'
            - items:
                $ref: '#/components/schemas/JSONSchema7TypeName'
              type: array
        enum:
          items:
            $ref: '#/components/schemas/JSONSchema7Type'
          type: array
        const:
          $ref: '#/components/schemas/JSONSchema7Type'
        multipleOf:
          type: number
          format: double
        maximum:
          type: number
          format: double
        exclusiveMaximum:
          type: number
          format: double
        minimum:
          type: number
          format: double
        exclusiveMinimum:
          type: number
          format: double
        maxLength:
          type: number
          format: double
        minLength:
          type: number
          format: double
        pattern:
          type: string
        items:
          anyOf:
            - $ref: '#/components/schemas/JSONSchema7Definition'
            - items:
                $ref: '#/components/schemas/JSONSchema7Definition'
              type: array
        additionalItems:
          $ref: '#/components/schemas/JSONSchema7Definition'
        maxItems:
          type: number
          format: double
        minItems:
          type: number
          format: double
        uniqueItems:
          type: boolean
        contains:
          $ref: '#/components/schemas/JSONSchema7Definition'
        maxProperties:
          type: number
          format: double
        minProperties:
          type: number
          format: double
        required:
          items:
            type: string
          type: array
        properties:
          properties: {}
          additionalProperties:
            $ref: '#/components/schemas/JSONSchema7Definition'
          type: object
        patternProperties:
          properties: {}
          additionalProperties:
            $ref: '#/components/schemas/JSONSchema7Definition'
          type: object
        additionalProperties:
          $ref: '#/components/schemas/JSONSchema7Definition'
        dependencies:
          properties: {}
          additionalProperties:
            anyOf:
              - $ref: '#/components/schemas/JSONSchema7Definition'
              - items:
                  type: string
                type: array
          type: object
        propertyNames:
          $ref: '#/components/schemas/JSONSchema7Definition'
        if:
          $ref: '#/components/schemas/JSONSchema7Definition'
        then:
          $ref: '#/components/schemas/JSONSchema7Definition'
        else:
          $ref: '#/components/schemas/JSONSchema7Definition'
        allOf:
          items:
            $ref: '#/components/schemas/JSONSchema7Definition'
          type: array
        anyOf:
          items:
            $ref: '#/components/schemas/JSONSchema7Definition'
          type: array
        oneOf:
          items:
            $ref: '#/components/schemas/JSONSchema7Definition'
          type: array
        not:
          $ref: '#/components/schemas/JSONSchema7Definition'
        format:
          type: string
        contentMediaType:
          type: string
        contentEncoding:
          type: string
        definitions:
          properties: {}
          additionalProperties:
            $ref: '#/components/schemas/JSONSchema7Definition'
          type: object
        title:
          type: string
        description:
          type: string
        default:
          $ref: '#/components/schemas/JSONSchema7Type'
        readOnly:
          type: boolean
        writeOnly:
          type: boolean
        examples:
          $ref: '#/components/schemas/JSONSchema7Type'
      type: object
      additionalProperties: false
    Record_string.AnswerPartValue_:
      properties: {}
      additionalProperties:
        $ref: '#/components/schemas/AnswerPartValue'
      type: object
      description: Construct a type with a set of properties K of type T
    ActorAssignment:
      properties:
        type:
          type: string
          enum:
            - User
            - Team
        id:
          type: string
        displayName:
          type: string
          nullable: true
      required:
        - type
        - id
        - displayName
      type: object
      additionalProperties: false
    QuestionnaireResponseMultipleChoiceAnswer:
      enum:
        - 'NO'
        - NOT_APPLICABLE
        - 'YES'
      type: string
    JSONSchema7Version:
      type: string
      description: |-
        Meta schema

        Recommended values:
        - 'http://json-schema.org/schema#'
        - 'http://json-schema.org/hyper-schema#'
        - 'http://json-schema.org/draft-07/schema#'
        - 'http://json-schema.org/draft-07/hyper-schema#'
    JSONSchema7Definition:
      anyOf:
        - $ref: '#/components/schemas/JSONSchema7'
        - type: boolean
      description: JSON Schema v7
    JSONSchema7TypeName:
      type: string
      enum:
        - string
        - number
        - integer
        - boolean
        - object
        - array
        - 'null'
      description: Primitive type
    JSONSchema7Type:
      anyOf:
        - type: string
        - type: number
          format: double
        - type: boolean
        - $ref: '#/components/schemas/JSONSchema7Object'
        - $ref: '#/components/schemas/JSONSchema7Array'
      nullable: true
      description: Primitive type
    AnswerPartValue:
      anyOf:
        - type: string
        - type: number
          format: double
        - type: boolean
        - items:
            type: string
          type: array
      nullable: true
      description: >-
        Valid runtime value types for an answer part. Array values are
        restricted

        to string items to match `ArrayFieldSchema.items` (which is narrowed to

        `StringFieldSchema` only).
    JSONSchema7Object:
      properties: {}
      type: object
      additionalProperties:
        $ref: '#/components/schemas/JSONSchema7Type'
    JSONSchema7Array:
      properties: {}
      type: object
      additionalProperties: false
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer

````

## Related topics

- [Update questionnaire response owner](/api-reference/customer-trust/update-questionnaire-response-owner.md)
- [Update questionnaire](/api-reference/customer-trust/update-questionnaire.md)
- [Delete questionnaire](/api-reference/customer-trust/delete-questionnaire.md)
- [Questionnaire created](/api-reference/questionnaire/questionnaire-created.md)
- [Questionnaire deleted](/api-reference/questionnaire/questionnaire-deleted.md)
