Upload company document (PDF, PJ)

Registers a company PDF slot for a PJ accreditation and returns a presigned `uploadUrl` (HTTP `PUT`, 1 hour). Allowed while status is `PENDING_BIOMETRY`, `BIOMETRY_APPROVED`, or `PENDING_REVIEW` (rejected for `FAILED` / `INTEGRATING` / `ACTIVE`). After this `201`, `PUT` the PDF bytes to `uploadUrl` before the URL expires. `sizeBytes` is **required** and is part of the URL signature: the PUT must send exactly that many bytes (max 20 MiB). The slot does **not** fulfil the documentary requirement — `GET` keeps the kind in `missingDocumentKinds` until the object exists in the KYC archive with size > 0 (and, when the sanitizer is on, after a successful scan). `kind=other` is capped at 10 files per accreditation. **Required kinds by `company.legalForm`:** - `mei`, `ltda`: `company_articles` - `sa`, `cooperative`: the above plus `cnpj_card`, `financial_statements` Optional for all: `company_proof_of_address`, `business_license`, `regulatory_license`, `other` (`other` allows multiple files, max 10; `fileName` required). Typed kinds are one-per-accreditation (re-upload replaces). Document freshness (e.g. proof of address) is checked by the CorpX operator during review, who may still request it. Upload in parallel with biometrics. Missing required kinds block operator approve unless they set `forceIncompleteDocuments` (audited). **BaaS integrators only.**

Authentication

AuthorizationBearer

Bearer authentication of the form Bearer <token>, where token is your auth token.

Path parameters

accreditationIdstringRequired

Accreditation (onboarding) identifier returned on creation.

Headers

X-Tenant-IdstringRequired
Tenant context used for authorization and routing.
Idempotency-KeystringOptional

Optional client-generated idempotency token (recommended for safe retries).

Request

This endpoint expects an object.
kindenumRequired
sizeByteslongRequired1-20971520

Actual PDF size in bytes (max 20 MiB). Part of the upload URL signature.

fileNamestringOptional

Required when kind=other (shown to reviewers).

contentTypeenumOptionalDefaults to application/pdf

Response

Document slot created; upload the PDF via uploadUrl.

documentIdstringOptional
kindenumOptional
uploadUrlstringOptional

Presigned S3 URL — PUT exactly sizeBytes bytes with the same Content-Type.

uploadExpiresAtdatetimeOptional
sizeByteslongOptional
deliveryStatusenumOptional
Slot only. The kind stays in missingDocumentKinds until the object is in the KYC archive.
scanStatusenumOptional

Uploads are archived only after real type detection, antivirus and sanitization (the PDF is rasterized), which takes a few seconds. Infected, corrupted or unexpected-type files are rejected and shown as rejected in the operator review.

infostringOptional
Human readable note about the signed PUT and scanning step.

Errors

400
Bad Request Error
404
Not Found Error
409
Conflict Error
413
Content Too Large Error
422
Unprocessable Entity Error
500
Internal Server Error