---
title: "Upload a document"
method: POST
path: "/documents"
tags: ["documents"]
---

# Upload a document

`POST /documents`

## Request

- The document declares no server URL.
- Auth: HTTP bearer
- TypeScript: <https://skmtc.dev/hevn-inc/apis/hevn-api/docs/documents/post.ts> (a function with typed inputs; its response is checked against the schema)

Stores a file and answers the `doc_…` id the verification document references as `uploadId`. Uploading the same bytes in the same slot twice answers the first id.

## Headers

- `Idempotency-Key` string, nullable: Your own key for this write, `^[A-Za-z0-9._:-]{1,128}$`. A retry with the same key replays the first answer; the same key with a different request is refused.
- `X-Hevn-Account` string, nullable: The client account to act for, as a `cl_…` id. Omit it to act as yourself.

## Request body

- DocumentUploadRequest
  - `slot` 'certificate_of_incorporation' | 'certificate_of_registration' | 'formation_document' | 'articles_of_incorporation' | 'power_of_attorney' | 'corporate_structure' | 'org_structure_chart' | 'company_registry_extract' | 'corporate_registry_extract' | 'shareholder_registry' | 'cap_table' | 'director_structure' | 'proof_of_address' | 'utility_bill' | 'aml_policy' | 'annual_financial_statements' | 'articles_of_association' | 'audit_report' | 'independent_aml_audit_report' | 'identity_verification_attestation' | 'institutional_investor_documentation' | 'audited_financial_statement' | 'bank_reference_letter' | 'bank_verification_letter' | 'bank_statement' | 'banking_details' | 'birth_certificate' | 'business_license' | 'operating_license' | 'business_plan' | 'certificate_of_good_standing' | 'corporate_resolution' | 'proof_of_registered_address' | 'proof_of_operating_address' | 'crypto_statement' | 'credit_report' | 'criminal_record_check' | 'cv_resume' | 'driving_license' | 'education_certificate' | 'financial_projections' | 'investment_statement' | 'insurance_policy' | 'lease_agreement' | 'marriage_certificate' | 'national_id' | 'national_id_front' | 'national_id_back' | 'operating_agreement' | 'partnership_agreement' | 'professional_license' | 'regulatory_license' | 'reference_letter' | 'register_of_members' | 'residence_permit' | 'shareholding_structure' | 'shareholders_agreement' | 'social_security_document' | 'source_of_funds_declaration' | 'tax_identification_document' | 'ein_letter' | 'tax_certificate' | 'tax_compliance_form' | 'tax_returns' | 'payslip' | 'pitch_deck' | 'savings_statement' | 'trade_references' | 'vat_registration' | 'vendor_contracts' | 'visa' | 'wealth_statement' | 'contract' | 'invoice' | 'loan_agreement' | 'subscription_agreement' | 'safe_agreement' | 'convertible_note' | 'promissory_note' | 'marketing_material' | 'employment_contract' | 'authorization_to_act' | 'authority_to_bind' | 'ubo_declaration' | 'income_verification_letter' | 'source_of_funds' | 'flow_of_funds' | 'payroll_register' | 'investment_agreement' | 'source_of_wealth' | 'supporting_document' | 'memorandum' | 'passport_front' | 'passport_back' | 'id_card_front' | 'id_card_back' | 'drivers_license_front' | 'drivers_license_back' | 'residence_permit_front' | 'residence_permit_back' | 'other', required
  - `content` string, required: Base64-encoded document bytes.
  - `fileName` string, nullable: Original file name including its extension.
  - `name` string, nullable: Human-readable document name.

## Response `201`

Successful Response

- DocumentResponse
  - `id` string, required: Stable public identifier for this document.
  - `slot` 'certificate_of_incorporation' | 'certificate_of_registration' | 'formation_document' | 'articles_of_incorporation' | 'power_of_attorney' | 'corporate_structure' | 'org_structure_chart' | 'company_registry_extract' | 'corporate_registry_extract' | 'shareholder_registry' | 'cap_table' | 'director_structure' | 'proof_of_address' | 'utility_bill' | 'aml_policy' | 'annual_financial_statements' | 'articles_of_association' | 'audit_report' | 'independent_aml_audit_report' | 'identity_verification_attestation' | 'institutional_investor_documentation' | 'audited_financial_statement' | 'bank_reference_letter' | 'bank_verification_letter' | 'bank_statement' | 'banking_details' | 'birth_certificate' | 'business_license' | 'operating_license' | 'business_plan' | 'certificate_of_good_standing' | 'corporate_resolution' | 'proof_of_registered_address' | 'proof_of_operating_address' | 'crypto_statement' | 'credit_report' | 'criminal_record_check' | 'cv_resume' | 'driving_license' | 'education_certificate' | 'financial_projections' | 'investment_statement' | 'insurance_policy' | 'lease_agreement' | 'marriage_certificate' | 'national_id' | 'national_id_front' | 'national_id_back' | 'operating_agreement' | 'partnership_agreement' | 'professional_license' | 'regulatory_license' | 'reference_letter' | 'register_of_members' | 'residence_permit' | 'shareholding_structure' | 'shareholders_agreement' | 'social_security_document' | 'source_of_funds_declaration' | 'tax_identification_document' | 'ein_letter' | 'tax_certificate' | 'tax_compliance_form' | 'tax_returns' | 'payslip' | 'pitch_deck' | 'savings_statement' | 'trade_references' | 'vat_registration' | 'vendor_contracts' | 'visa' | 'wealth_statement' | 'contract' | 'invoice' | 'loan_agreement' | 'subscription_agreement' | 'safe_agreement' | 'convertible_note' | 'promissory_note' | 'marketing_material' | 'employment_contract' | 'authorization_to_act' | 'authority_to_bind' | 'ubo_declaration' | 'income_verification_letter' | 'source_of_funds' | 'flow_of_funds' | 'payroll_register' | 'investment_agreement' | 'source_of_wealth' | 'supporting_document' | 'memorandum' | 'passport_front' | 'passport_back' | 'id_card_front' | 'id_card_back' | 'drivers_license_front' | 'drivers_license_back' | 'residence_permit_front' | 'residence_permit_back' | 'other', required
  - `name` string, nullable: Human-readable document name.
  - `fileName` string, nullable: Original file name including its extension.
  - `createdAt` string, date-time, nullable: UTC timestamp when the document was created.

## Other responses

- `422`: Request validation failed

## Changes

- **2026-11-12** `299a3aa6f521`: 2 breaking, 1 warning, 4 info
  - removed the enum value `directors_registry` of the request property `slot`
  - removed the enum value `list_of_authorized_signatories` of the request property `slot`
  - added the new `verification_not_applicable` enum value to the `error/code` response property for the response status `422`
  - removed the `directors_registry` enum value from the `slot` response property for the response status `201`
  - …3 more
- **2026-10-23** `a02795de2d2b`: 29 warning, 25 info
  - deleted the `header` request parameter `x-api-key`
  - added the new `audited_financial_statement` enum value to the `slot` response property for the response status `201`
  - added the new `bank_verification_letter` enum value to the `slot` response property for the response status `201`
  - added the new `cap_table` enum value to the `slot` response property for the response status `201`
  - …50 more
- **2026-10-20** `19eb00e9f258`: 1 info
  - removed the `phone_in_use` enum value from the `error/code` response property for the response status `422`
- **2026-10-20** `bd6c9d69540e`: 1 warning
  - added the new `phone_in_use` enum value to the `error/code` response property for the response status `422`
- **2026-10-20** `19eb00e9f258`: 1 info
  - removed the `document_fields_missing` enum value from the `error/code` response property for the response status `422`

[Operation history](https://skmtc.dev/hevn-inc/apis/hevn-api/changes/documents/post.md)

---

[API](https://skmtc.dev/hevn-inc/apis/hevn-api.md) - [All operations](https://skmtc.dev/hevn-inc/apis/hevn-api/llms.txt) - [OpenAPI document](https://skmtc.dev/hevn-inc/apis/hevn-api/revisions/299a3aa6f521?raw)
