---
title: "Confirm upload for submission"
method: PUT
path: "/coe/v1/submissions/urls"
---

# Confirm upload for submission

`PUT /coe/v1/submissions/urls`

## Headers

- `x-partner-session-id` string, required
- `x-onekyc-token` string, required
- `x-sdk-session-id` string, 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 confirmation accepted successfully

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

## Other responses

- `400` — Bad request (missing required headers or request validation error)
- `401` — Unauthorized
- `403` — Forbidden
- `404` — Submission or related entity not found
- `409` — Conflict (invalid state transition or duplicate confirmation)
- `422` — Unprocessable entity (semantic validation failure)
- `429` — Too many requests
- `500` — Internal server error
- `503` — Service unavailable

---

[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)
