# Initiate a bulk certificate upload

> POST /certificate-imports/upload-urls

Source: https://docs.trykintsugi.com/reference/2026-07-21/initiate-a-bulk-certificate-upload

POST /certificate-imports/upload-urls

Initiate a bulk certificate upload

Begin a bulk certificate upload in the resolved organization. Creates a certificate-import row per file and returns an `uploadSessionId` plus a presigned S3 upload target for each. POST each file as `multipart/form-data` to its `uploadUrl` including every `uploadFields` entry, then call the confirm endpoint with the same `uploadSessionId`. A free plan is refused with 403 PLAN_UPGRADE_REQUIRED. A paid plan without exemption certificate management is refused with 403 FORBIDDEN.

Category: Certificate Imports

Request body:
files (CertificateImportFile[], required) - The files to upload in this batch.
  fileName (string, required) - Original filename including extension. The extension must be one of .jpeg, .jpg, .pdf, .png, .zip.
  mimeType (string, required) - Media type of the file.

Response fields:
uploadSessionId (string, required) - Identifier grouping every file in this upload batch. Pass it to the confirm and list-by-session endpoints.
files (CertificateImportUploadTarget[], required) - One presigned upload target per requested file.
  certificateImportId (string, required) - Kintsugi's unique identifier for the created certificate import.
  fileName (string, required) - The filename this upload target is for.
  uploadUrl (string, required) - Short-lived S3 URL to POST the file's bytes to as `multipart/form-data`.
  uploadFields (CertificateUploadField[], required) - Form fields to include in the multipart POST alongside the file.
    key (string, required) - Form field name to send in the multipart upload.
    value (string, required) - Value to send for this form field.

Response statuses: 201, 400, 401, 403, 404, 409, 422

---

Index of every page: https://docs.trykintsugi.com/llms.txt
