> ## 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.

# Add an item to the information request

> Adds one thing to fix, creating the draft round if the case has none. The target is an existing catalog entry addressed by `section_key` + `field_key` — officers cannot invent a field or a slot, and there is no item title: the label comes from the catalog and the officer's text goes in `message`. An unknown target is a 400 `invalid_target`.

`target_kind` is **field** (a field of a fields-kind section) or **document** (a document GROUP of the documents section, its group key carried in `field_key`, e.g. `{"target_kind":"document","section_key":"documents","field_key":"bank"}`). The kind must match the section: a field section holds no groups and the documents section holds no fields. `owner` is a later phase, which is also why the per-owner government-ID group of the parties section cannot be targeted. `audience` defaults to **merchant**.

Nothing reaches the applicant until the round is sent. The one exception is adding to a round that is already with them (the case is `in_remediation`): that item is sent immediately, because an unsent item would leave its field locked while still counting as unanswered.

One open ask per target: a second item for a field the round already covers is a 409 `target_already_requested`, carrying that `section.field` as `param`. Edit the existing item's message instead, or withdraw it first. A withdrawn item does not block a re-ask.



## OpenAPI

````yaml https://api.dataspike.io/openapi/kyb/public.json post /webapi/v4/kyb/organization/{organizationId}/verifications/{caseId}/info-request/items
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:
  /webapi/v4/kyb/organization/{organizationId}/verifications/{caseId}/info-request/items:
    post:
      tags:
        - KYB Remediation
      summary: Add an item to the information request
      description: >-
        Adds one thing to fix, creating the draft round if the case has none.
        The target is an existing catalog entry addressed by `section_key` +
        `field_key` — officers cannot invent a field or a slot, and there is no
        item title: the label comes from the catalog and the officer's text goes
        in `message`. An unknown target is a 400 `invalid_target`.


        `target_kind` is **field** (a field of a fields-kind section) or
        **document** (a document GROUP of the documents section, its group key
        carried in `field_key`, e.g.
        `{"target_kind":"document","section_key":"documents","field_key":"bank"}`).
        The kind must match the section: a field section holds no groups and the
        documents section holds no fields. `owner` is a later phase, which is
        also why the per-owner government-ID group of the parties section cannot
        be targeted. `audience` defaults to **merchant**.


        Nothing reaches the applicant until the round is sent. The one exception
        is adding to a round that is already with them (the case is
        `in_remediation`): that item is sent immediately, because an unsent item
        would leave its field locked while still counting as unanswered.


        One open ask per target: a second item for a field the round already
        covers is a 409 `target_already_requested`, carrying that
        `section.field` as `param`. Edit the existing item's message instead, or
        withdraw it first. A withdrawn item does not block a re-ask.
      operationId: >-
        POST_/webapi/v4/kyb/organization/:organizationId/verifications/:caseId/info-request/items
      parameters:
        - description: Organization id.
          in: path
          name: organizationId
          required: true
          schema:
            type: string
        - description: KYB case id (the `id` from the list).
          in: path
          name: caseId
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AddInfoRequestItemRequest'
          application/xml:
            schema:
              $ref: '#/components/schemas/AddInfoRequestItemRequest'
        description: Request body for kyb.AddInfoRequestItemRequest
        required: true
      responses:
        '201':
          content:
            application/json:
              schema:
                $ref: d5293a33-1d10-4aa2-8ff9-4a2c9a2d1e19
            application/xml:
              schema:
                $ref: d5293a33-1d10-4aa2-8ff9-4a2c9a2d1e19
          description: Created
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrInvalidTarget'
            application/xml:
              schema:
                $ref: '#/components/schemas/ErrInvalidTarget'
          description: Unknown target, or a message of nothing but whitespace.
        '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/ErrCaseNotReviewable'
            application/xml:
              schema:
                $ref: '#/components/schemas/ErrCaseNotReviewable'
          description: >-
            `case_not_reviewable` when the case is not open to remediation (a
            draft has nothing to remediate; a case an officer has already
            decided is out of scope), or `target_already_requested` when the
            round already has an open item for this field.
        '422':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ValidationErrorResponse'
            application/xml:
              schema:
                $ref: '#/components/schemas/ValidationErrorResponse'
          description: >-
            A missing section_key/field_key/message, or a target_kind or
            audience outside the schema enum.
        default:
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InfoRequest'
            application/xml:
              schema:
                $ref: '#/components/schemas/InfoRequest'
          description: Item added; the round is returned.
      security:
        - Session: []
components:
  schemas:
    AddInfoRequestItemRequest:
      description: AddInfoRequestItemRequest schema
      properties:
        audience:
          enum:
            - merchant
          example: merchant
          nullable: true
          type: string
        field_key:
          example: registration_number
          type: string
        message:
          example: The number does not match the registry, please re-enter it.
          maxLength: 2000
          type: string
        section_key:
          example: registration
          type: string
        target_kind:
          enum:
            - field
            - document
          example: field
          nullable: true
          type: string
      required:
        - field_key
        - message
        - section_key
      type: object
    ErrInvalidTarget:
      description: ErrInvalidTarget schema
      example:
        code: invalid_target
        message: Unknown remediation target
        param: registration.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
    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
    ErrCaseNotReviewable:
      description: ErrCaseNotReviewable schema
      example:
        code: case_not_reviewable
        message: Case is not open to remediation
      properties:
        code:
          example: email_otp_expired
          type: string
        message:
          example: OTP has expired
          type: string
        param:
          nullable: true
          type: string
      type: object
    ValidationErrorResponse:
      description: ValidationErrorResponse schema
      properties:
        errors:
          items:
            properties:
              field:
                type: string
              message:
                type: string
              type:
                type: string
            type: object
          type: array
        message:
          type: string
      type: object
    InfoRequest:
      description: InfoRequest schema
      properties:
        case_id:
          example: 019f179b-0fa7-72c8-818e-819652540477
          type: string
        case_status:
          example: in_remediation
          type: string
        created_at:
          format: date-time
          type: string
        id:
          example: 019f179b-0fa7-72c8-818e-819652540477
          type: string
        items:
          items:
            properties:
              audience:
                enum:
                  - merchant
                example: merchant
                type: string
              canceled_at:
                format: date-time
                nullable: true
                type: string
              created_at:
                format: date-time
                type: string
              created_by:
                example: 019f1383-8f38-7d31-b921-39310a19b444
                type: string
              field_key:
                example: registration_number
                type: string
              id:
                example: 019f179b-0fa7-72c8-818e-819652540477
                type: string
              last_value:
                nullable: true
              message:
                example: The number does not match the registry, please re-enter it.
                type: string
              new_value:
                nullable: true
              request_id:
                example: 019f179b-0fa7-72c8-818e-819652540477
                type: string
              resolved_at:
                format: date-time
                nullable: true
                type: string
              section_key:
                example: registration
                type: string
              status:
                enum:
                  - open
                  - resolved
                  - canceled
                example: open
                type: string
              target_kind:
                enum:
                  - field
                  - document
                example: field
                type: string
            type: object
          type: array
        received_at:
          format: date-time
          nullable: true
          type: string
        sent_at:
          format: date-time
          nullable: true
          type: string
        status:
          enum:
            - draft
            - sent
            - received
            - canceled
          example: draft
          type: string
        widget_url:
          example: https://kyb.dataspike.io/KYB0123456789abcdef
          nullable: true
          type: string
      type: object
  securitySchemes:
    Session:
      description: Session cookie for web dashboard authentication.
      in: cookie
      name: ds-prod-session
      type: apiKey

````