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

# Save section field values

> Autosaves a fields section (draft). Idempotent, last-write-wins per field. Draft validation is soft: format issues are returned in errors[] while the save still succeeds; hard validation runs at Submit.

This is the INITIAL application's form. While an information request is open (the case is `in_remediation`) it rejects every write with a 409 `not_requested`: the round is answered through POST /api/v4/kyb/widget/{publicId}/remediation instead.



## OpenAPI

````yaml https://api.dataspike.io/openapi/kyb/public.json put /api/v4/kyb/widget/{publicId}/sections/{section}/fields
openapi: 3.1.0
info:
  description: Know Your Business (KYB) — case creation and the embedded onboarding widget.
  title: Dataspike KYB API
  version: '1.0'
servers: []
security: []
paths:
  /api/v4/kyb/widget/{publicId}/sections/{section}/fields:
    put:
      tags:
        - KYB Widget
      summary: Save section field values
      description: >-
        Autosaves a fields section (draft). Idempotent, last-write-wins per
        field. Draft validation is soft: format issues are returned in errors[]
        while the save still succeeds; hard validation runs at Submit.


        This is the INITIAL application's form. While an information request is
        open (the case is `in_remediation`) it rejects every write with a 409
        `not_requested`: the round is answered through POST
        /api/v4/kyb/widget/{publicId}/remediation instead.
      operationId: PUT_/api/v4/kyb/widget/:publicId/sections/:section/fields
      parameters:
        - description: KYB case public id.
          in: path
          name: publicId
          required: true
          schema:
            type: string
        - description: Section key.
          in: path
          name: section
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SaveFieldsRequest'
          application/xml:
            schema:
              $ref: '#/components/schemas/SaveFieldsRequest'
        description: Request body for kyb.SaveFieldsRequest
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: d5293a33-1d10-4aa2-8ff9-4a2c9a2d1e19
            application/xml:
              schema:
                $ref: d5293a33-1d10-4aa2-8ff9-4a2c9a2d1e19
          description: OK
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrFieldLocked'
            application/xml:
              schema:
                $ref: '#/components/schemas/ErrFieldLocked'
          description: Field is locked and cannot be modified.
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrCaseNotFound'
            application/xml:
              schema:
                $ref: '#/components/schemas/ErrCaseNotFound'
          description: Case not found.
        '409':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrCaseLocked'
            application/xml:
              schema:
                $ref: '#/components/schemas/ErrCaseLocked'
          description: >-
            `case_locked` when the case does not accept writes at all, or
            `not_requested` while an information request is open.
        '422':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrUnknownSectionOrField'
            application/xml:
              schema:
                $ref: '#/components/schemas/ErrUnknownSectionOrField'
          description: Unknown section or field.
        default:
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SaveFieldsResponse'
            application/xml:
              schema:
                $ref: '#/components/schemas/SaveFieldsResponse'
          description: Fields saved.
components:
  schemas:
    SaveFieldsRequest:
      description: SaveFieldsRequest schema
      properties:
        fields:
          additionalProperties: {}
          type: object
      type: object
    ErrFieldLocked:
      description: ErrFieldLocked schema
      example:
        code: field_locked
        message: Field is locked
        param: legal_name
      properties:
        code:
          example: email_otp_expired
          type: string
        message:
          example: OTP has expired
          type: string
        param:
          nullable: true
          type: string
      type: object
    ErrCaseNotFound:
      description: ErrCaseNotFound schema
      example:
        code: case_not_found
        message: Case not found
      properties:
        code:
          example: email_otp_expired
          type: string
        message:
          example: OTP has expired
          type: string
        param:
          nullable: true
          type: string
      type: object
    ErrCaseLocked:
      description: ErrCaseLocked schema
      example:
        code: case_locked
        message: Case is locked and cannot be modified
      properties:
        code:
          example: email_otp_expired
          type: string
        message:
          example: OTP has expired
          type: string
        param:
          nullable: true
          type: string
      type: object
    ErrUnknownSectionOrField:
      description: ErrUnknownSectionOrField schema
      example:
        code: unknown_field
        message: Unknown field
        param: not_a_field
      properties:
        code:
          example: email_otp_expired
          type: string
        message:
          example: OTP has expired
          type: string
        param:
          nullable: true
          type: string
      type: object
    SaveFieldsResponse:
      description: SaveFieldsResponse schema
      example:
        saved: true
        errors: []
      properties:
        errors:
          items:
            properties:
              code:
                enum:
                  - required
                  - document_required
                  - min_one_owner_required
                  - ownership_total_must_be_100
                  - invalid_number
                  - invalid_email
                  - invalid_date
                  - invalid_bool
                  - invalid_option
                  - invalid_country
                  - too_short
                  - too_long
                  - invalid_format
                  - kyc_required
                  - date_in_future
                  - date_implausible
                  - underage
                example: invalid_email
                type: string
              field:
                example: contact_email
                type: string
              message:
                example: Invalid email address
                type: string
            type: object
          type: array
        saved:
          example: true
          type: boolean
      type: object

````