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

# Upload application documents

> Uploads one supporting document type for a user whose application is awaiting documents. Set `documentType` to one of the pending documents from the advance response's `nextAction`, and attach its file(s) as `files` (repeat for multi-page or front/back). Upload one type per request, across as many requests as there are pending documents; each response reports the remaining documents in `nextAction`. When the last required document is received the application advances to review.



## OpenAPI

````yaml /api-reference/openapi.json post /users/{id}/application/documents
openapi: 3.1.0
info:
  title: Reap API
  version: 1.0.0
  description: Reap platform API
servers:
  - url: https://sandbox.api.reap.global
    description: Sandbox
  - url: https://prod.api.reap.global
    description: Production
security:
  - bearerAuth: []
tags:
  - name: Accounts
  - name: Activities
  - name: Card Designs
  - name: Card Shipments
  - name: Card Transactions
  - name: Cards
  - name: Companies
  - name: Crypto Deposits
  - name: Policies
  - name: Simulation
  - name: Users
  - name: Virtual Asset Postings
  - name: Virtual Assets
  - name: Webhooks
paths:
  /users/{id}/application/documents:
    post:
      tags:
        - Users
      summary: Upload application documents
      description: >-
        Uploads one supporting document type for a user whose application is
        awaiting documents. Set `documentType` to one of the pending documents
        from the advance response's `nextAction`, and attach its file(s) as
        `files` (repeat for multi-page or front/back). Upload one type per
        request, across as many requests as there are pending documents; each
        response reports the remaining documents in `nextAction`. When the last
        required document is received the application advances to review.
      operationId: uploadDocuments_users
      parameters:
        - name: id
          in: path
          required: true
          schema:
            description: User ID
            type: string
            format: uuid
        - name: Reap-Version
          in: header
          required: true
          schema:
            type: string
            enum:
              - '2025-02-14'
            description: API version (YYYY-MM-DD)
            example: '2025-02-14'
      requestBody:
        description: Multipart form uploading one supporting document type
        content:
          multipart/form-data:
            schema:
              type: object
              properties:
                documentType:
                  type: string
                  enum:
                    - IDENTITY
                    - PROOF_OF_ADDRESS
                    - CURP
                  description: >-
                    Which supporting document this upload is for (one type per
                    request; from the pending `documents` in `nextAction`)
                  example: IDENTITY
                files:
                  minItems: 1
                  maxItems: 15
                  type: array
                  items:
                    type: string
                    format: binary
                    contentEncoding: binary
                    maxLength: 10485760
                    anyOf:
                      - contentMediaType: image/jpeg
                      - contentMediaType: image/png
                      - contentMediaType: image/gif
                      - contentMediaType: application/pdf
                      - contentMediaType: >-
                          application/vnd.openxmlformats-officedocument.spreadsheetml.sheet
                      - contentMediaType: application/vnd.ms-excel
                      - contentMediaType: application/msword
                      - contentMediaType: >-
                          application/vnd.openxmlformats-officedocument.wordprocessingml.document
                      - contentMediaType: text/csv
                    description: >-
                      A supporting document file (.jpg, .jpeg, .png, .gif, .pdf,
                      .xlsx, .xls, .doc, .docx, .csv; max 10MB)
                  description: The document file(s); repeat for multi-page or front/back
              required:
                - documentType
                - files
        required: true
      responses:
        '200':
          description: Application state after uploading documents
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: string
                    enum:
                      - NOT_STARTED
                      - AWAITING_DOCUMENTS
                      - IN_REVIEW
                      - APPROVED
                      - REJECTED
                      - RETRY_REQUIRED
                    description: Current KYC application status
                    example: NOT_STARTED
                  nextAction:
                    anyOf:
                      - $ref: '#/components/schemas/ApplicationNextAction'
                        title: ApplicationNextAction
                      - type: 'null'
                    description: >-
                      Action the client must take next, or `null` if none
                      remains
                required:
                  - status
                  - nextAction
        '400':
          description: Response for status 400
          content:
            application/json:
              schema:
                anyOf:
                  - type: object
                    properties:
                      error:
                        type: object
                        properties:
                          code:
                            type: string
                            const: INVALID_APPLICATION_STATUS
                          message:
                            type: string
                          detail:
                            anyOf:
                              - type: object
                                additionalProperties: {}
                              - type: 'null'
                        required:
                          - code
                          - message
                          - detail
                    required:
                      - error
                    title: InvalidApplicationStatusError
                    description: User application status does not allow this operation
                  - type: object
                    properties:
                      error:
                        type: object
                        properties:
                          code:
                            type: string
                            const: USER_DOCUMENT_NOT_REQUIRED
                          message:
                            type: string
                          detail:
                            anyOf:
                              - type: object
                                additionalProperties: {}
                              - type: 'null'
                        required:
                          - code
                          - message
                          - detail
                    required:
                      - error
                    title: UserDocumentNotRequiredError
                    description: The document is not required for this application
                  - type: object
                    properties:
                      error:
                        type: object
                        properties:
                          code:
                            type: string
                            const: APPLICATION_SUBMISSION_REJECTED
                          message:
                            type: string
                          detail:
                            anyOf:
                              - type: object
                                additionalProperties: {}
                              - type: 'null'
                        required:
                          - code
                          - message
                          - detail
                    required:
                      - error
                    title: ApplicationSubmissionRejectedError
                    description: The submitted application data was rejected
        '403':
          description: The requested verification method is not enabled for this project
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: object
                    properties:
                      code:
                        type: string
                        const: VERIFICATION_METHOD_NOT_ENABLED
                      message:
                        type: string
                      detail:
                        anyOf:
                          - type: object
                            additionalProperties: {}
                          - type: 'null'
                    required:
                      - code
                      - message
                      - detail
                required:
                  - error
                title: VerificationMethodNotEnabledError
        '404':
          description: User not found
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: object
                    properties:
                      code:
                        type: string
                        const: USER_NOT_FOUND
                      message:
                        type: string
                      detail:
                        anyOf:
                          - type: object
                            additionalProperties: {}
                          - type: 'null'
                    required:
                      - code
                      - message
                      - detail
                required:
                  - error
                title: UserNotFoundError
components:
  schemas:
    ApplicationNextAction:
      oneOf:
        - $ref: '#/components/schemas/ProviderSdkNextAction'
          title: ProviderSdk
        - $ref: '#/components/schemas/DocumentUploadNextAction'
          title: DocumentUpload
      description: Next action required from the client
      title: Application next action
    ProviderSdkNextAction:
      type: object
      properties:
        type:
          type: string
          const: PROVIDER_SDK
        provider:
          type: string
          enum:
            - SUMSUB
          example: SUMSUB
        sdkToken:
          type: string
          examples:
            - _act-sbx-abc123-xyz789
          description: Token for initializing the provider verification widget
      required:
        - type
        - provider
        - sdkToken
      title: Provider SDK
    DocumentUploadNextAction:
      type: object
      properties:
        type:
          type: string
          const: DOCUMENT_UPLOAD
        documents:
          type: array
          items:
            $ref: '#/components/schemas/UserApplicationDocument'
          description: Supporting documents to upload, each with its current upload state
      required:
        - type
        - documents
      title: Document upload
    UserApplicationDocument:
      type: object
      properties:
        type:
          type: string
          enum:
            - IDENTITY
            - PROOF_OF_ADDRESS
            - CURP
          description: Supporting document category
          example: IDENTITY
        status:
          type: string
          enum:
            - PENDING
            - UPLOADED
          description: Upload state of this document
          example: PENDING
      required:
        - type
        - status
      description: A supporting document and its upload state
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      description: API key as Bearer token

````