---
title: "Upload employee file"
method: POST
path: "/v1/employee/documents"
tags: ["Employee Files"]
---

# Upload employee file

`POST /v1/employee/documents`

## Request

- Base URL: `https://gateway.remote.com`
- URL: `https://gateway.remote.com/v1/employee/documents`
- Auth: one of:
  - OAuth 2
    - Client credentials
    - Token URL: `/auth/oauth2/token` scopes: `document:write`
  - OAuth 2
    - Client credentials
    - Token URL: `/auth/oauth2/token` scopes: `all:write`
  - OAuth 2
    - Authorization code: `/auth/oauth2/authorize`
    - Token URL: `/auth/oauth2/token` scopes: `document:write`
  - OAuth 2
    - Authorization code: `/auth/oauth2/authorize`
    - Token URL: `/auth/oauth2/token` scopes: `all:write`

Uploads a file owned by the authenticated employee, for example
identity documents or tax forms.

## Authentication

This endpoint accepts any one of the following token types:

- **Employee-scoped access token** (`OAuth2Assertion`) — obtained through the `urn:ietf:params:oauth:grant-type:jwt-bearer` grant. See [OAuth Assertion](https://developer.remote.com/docs/authorization-method-oauth-assertion).
- **Company-scoped access token** (`OAuth2AuthorizationCode`) — obtained by the employee through the Authorization Code flow or the Refresh Token flow. See [Authentication for partners](https://developer.remote.com/docs/authentication-for-partners).

## Scopes

Any one of the scopes in a token type's row is enough. `all:write` works too.

| Token type | Category | Read only Scope | Write only Scope (read access implicit) |
|---|---|---|---|
| Employee-scoped access token | Manage employment documents (`employment_documents`) | - | Manage documents (`document:write`) |
| Company-scoped access token | Manage employment documents (`employment_documents`) | - | Manage documents (`document:write`) |

## Request body `multipart/form-data`

- EmployeeFileParams: Parameters to upload a file from an employee-issued token. The employment is derived from the access token's subject, so no employment id is required in the body.
  - `file` string, binary, required: The file content, base64-encoded.
  - `sub_type` string: A more specific classification within the type.
  - `type` string: The broad category of the file (e.g., "id", "tax_document").

## Response `201`

Created

- UploadFileResponse: Response returned after successfully uploading a file.
  - `data` object
    - `file` File, required: A file associated with an employment, such as a contract, tax document, or identity document.
      - `id` string, required: The unique identifier (UUID) of the file.
      - `inserted_at` string, date-time, required: UTC date time in [ISO 8601][] format. [ISO 8601]: https://en.wikipedia.org/wiki/ISO_8601
      - `name` string, required: The file name including extension (e.g., "id.pdf", "contract.pdf").
      - `sub_type` string, nullable: A more specific classification of the file within its type (e.g., "personal_id" within type "id", or "ir_35" within type "contract"). Null if no sub-type applies.
      - `type` string, required: The broad category of the file (e.g., "id", "contract", "tax_document").

## Other responses

- `400`: Bad Request
- `401`: Unauthorized
- `403`: Forbidden
- `404`: Not Found
- `422`: Unprocessable Entity

---

[API](https://skmtc.dev/remote-com/apis/employments.md) - [All operations](https://skmtc.dev/remote-com/apis/employments/llms.txt) - [OpenAPI document](https://skmtc.dev/remote-com/apis/employments/revisions/da61f6ebc73a?raw)
