---
title: "Upload document"
method: POST
path: "/api/v2/documents"
tags: ["KYC Documents"]
---

# Upload document

`POST /api/v2/documents`

## Request

- Base URL: `https://app.didlogic.com`
- URL: `https://app.didlogic.com/api/v2/documents`
- Auth: HTTP bearer

Upload a new document for identity verification.

**Document Types:**
- `personal_id` - Personal ID
- `address_proof` - Proof of address
- `business_registration` - Business Registration
- `letter_of_intent` - Letter of Intent

**File Requirements:**
- Allowed extensions: jpg, jpeg, png, pdf
- Accepted MIME types: ["image/jpeg", "image/png", "application/pdf"]

`document_id` feeds documents_show, documents_update, documents_destroy and documents_files_download_file;
`document.files[].role` feeds documents_files_download_file.

## Response `200`

creates a new document

- object
  - `message` string, required: Success message
  - `document_id` integer, required: Created document ID
  - `document` object, required: Created document details
    - `name` string, required: Document name
    - `id` integer, required: Document identifier
    - `user_id` integer, required: Owner user ID
    - `country` string, required: Country of the document, as given at upload; for a letter of intent, the country of the purchased number
    - `created_at` string, required: Upload timestamp
    - `expired_at` unknown, required
    - `approvement_status` 'in review' | 'verified' | 'rejected' | 'expired', required: Document approval status (in review = pending, verified = approved)
    - `doc_type` 'Personal ID' | 'Proof of address' | 'Business Registration' | 'Letter of Intent', required: Document type identifier
    - `identity_id` integer, required: Associated identity ID
    - `identity` object, required: Identity details
      - `id` integer, required: Identity identifier
      - `name` string, required: Identity name
      - `user_id` integer, required: Owner user ID
      - `created_at` string, required: Identity creation timestamp
      - `persistence_status` 'active' | 'archived' | 'active-immortal', required: Identity persistence status
      - `is_default` boolean, required: Is default identity flag
    - `files` object[], required: Uploaded document files
      - `role` string, required
      - `label` string, required
      - `url` string, required
      - `name` string, required

## Other responses

- `401`: returns unauthorized
- `422`: returns unprocessable entity

---

[API](https://skmtc.dev/didlogic/apis/get-started.md) · [All operations](https://skmtc.dev/didlogic/apis/get-started/llms.txt) · [OpenAPI document](https://skmtc.dev/didlogic/apis/get-started/revisions/dc972d592b34?raw)
