---
title: "Confirm Upload"
method: PUT
path: "/esign-partner/v1/submissions/urls"
---

# Confirm Upload

`PUT /esign-partner/v1/submissions/urls`

Confirm that all required documents have been uploaded and provide user details to start the certificate registration process.
The additional details passed in this API will be stored and used during submission processing.

## Headers

- `x-onekyc-token` string, required
- `x-esign-onboarding-partner` string, required
- `x-partner-user-id` string, required
- `x-partner-user-id-type` string, required
- `x-partner-session-id` string, uuid, required

## Request body

- ConfirmUploadRequest
  - `submissionId` string, uuid, required — Unique identification of submission record
  - `metadata` union, required
    - ConfirmUploadCertRegMetadata
      - `userDetails` CertRegUserDetails, required
        - `nik` integer, required — User's national identification number as stated in KTP
        - `name` string, required — User's full name as stated in KTP
        - `dateOfBirth` string, required — User's date of birth (DD-MM-YYYY)
        - `phoneNumber` string, phone — User's phone number (required if email is empty)
        - `email` string, email — User's email address (required if phoneNumber is empty)
        - `dataVerification` DataVerification, required — Details of verification done by partner on behalf of the user
          - `email` object
            - `isVerified` boolean — Boolean field to determine if email has been verified by partner
            - `verificationReferenceId` string — Required if email.isVerified = true. ReferenceId for email verification.
          - `phoneNumber` object
            - `isVerified` boolean — Boolean field to determine if phone number has been verified by partner
            - `verificationReferenceId` string — Required if phoneNumber.isVerified = true. ReferenceId for phone verification.
      - `userLocale` 'en_ID' | 'id_ID' — User's locale
      - `consentData` ConsentData[], required
        - `entity` string, required — Consent's Entity
        - `consentType` string, required — Consent's Type
        - `consentGiven` boolean, required — Set to true if user has given the consent
        - `details` ConsentDetails, required
          - `en_ID` LocaleConsentDetail
            - `url` string, uri — URL to consent's page or file
            - `text` string — Rendered text containing hyperlink to consent's URL
          - `id_ID` LocaleConsentDetail
            - `url` string, uri — URL to consent's page or file
            - `text` string — Rendered text containing hyperlink to consent's URL
        - `timeStamp` integer, required — Timestamp when user gives the consent in milliseconds elapsed since UNIX epoch
        - `additionalDetails` ConsentAdditionalDetails — Additional information when capturing user's consent(s)
          - `userAgent` string
          - `userIp` string
          - `deviceDetails` DeviceDetails
            - `os` string — Operating system
            - `make` string — Device manufacturer
            - `model` string — Device model
            - `uniqueId` string — Unique device identifier
            - `networkProvider` string — Network provider
            - `appId` string — Application ID
            - `appVersion` string — Application version
      - `additionalData` object — Additional data (optional)
    - ConfirmUploadSigningMetadata
      - `sendNotification` boolean — Flag to indicate if notification should be sent to the signer(s)
      - `actionDetails` object, required
        - `inSequence` boolean — Flag to indicate if signings should be performed in sequence by the signer (i.e. signer needs to complete current action before next signer)
        - `actions` SigningAction[], required
          - `height` string — Height of the action element
          - `width` string — Width of the action element
          - `xCoordinate` integer — X coordinate of the action element
          - `yCoordinate` integer — Y coordinate of the action element
          - `pageNumber` integer — Page number where the action element is located
          - `email` string, email — Email of the user performing the action
          - `accountType` 'PERSONAL' — Type of account
          - `action` 'SIGN' — Action to be performed
          - `order` integer — Order of the action if inSequence is true

## Response `200`

Upload confirmed successfully

- ConfirmUploadSuccessResponse
  - `success` boolean
  - `data` object
    - `submissionId` string, uuid — Unique identification of submission record

## Other responses

- `400` — Bad Request - Invalid input or missing required parameters
- `401` — Unauthorized - Invalid or missing authentication token
- `500` — Internal Server Error - An unexpected error occurred on the server

---

[API](https://skmtc.net/midtrans/apis/snap-api.md) · [All operations](https://skmtc.net/midtrans/apis/snap-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/midtrans/snap-api/versions/67e029cf926a/schema)
