# Create an Upload **POST /uploads** Uploading a file to Arta via API is a two step process. The first step is to make an authenticated HTTP request to the `POST /uploads` endpoint described here. Successful requests to this endpoint will create an upload resource with a "pending" `status` as well as a `presigned_url` attribute. The second step is to create a `PUT` HTTP request to the URL defined in the `presigned_url` field of the successful create response. This second request must include the raw data of the file as the request `body` and a `content-type` header. The `content-type` header must match the `mime_type` provided in your initial request. The size of the raw data must match the `size` param provided in your initial request. For example, if you provided a `mime_type` of `text/csv` and a `size` of `13` bytes in the initial request to create the resource and if it successfully responded with a `presigned_url` value of `https://cdn.arta.io/uploads/my-file.csv`, your second request will look something like the following: ``` curl --location --request PUT 'https://cdn.arta.io/uploads/my-file.csv' \ --header 'Content-Type: text/csv' \ --data-raw 'hello,world, ' ``` ## Servers - https://api.arta.io: https://api.arta.io () ## Parameters ### Headers - **Authorization** (string) Authorize your API calls with an Arta API token ### Body: application/json (object) - **upload** (object) ## Responses ### 201 response #### Headers - **content-type** (string) - **x-arta-request-id** (string) A unique identifier for the Arta API call #### Body: application/json (object) - **created_at** (string) - **document_type** (string) The document type of the uploaded file - **document_type_label** (string | null) A brief label providing additional context about the `document_type`. Required when "other" is the `document_type` - **download_url** (string | null) - **file_name** (string) The name of the uploaded file - **id** (integer) - **mime_type** (string) The mime-type of the uploaded file - **presigned_url** (string) A pre-signed and secure URL to use to send the file to Arta via a PUT HTTP request within 20 seconds of the upload resource being created - **size** (integer) The size of the uploaded file in bytes - **status** (string) ### 400 Bad Request #### Headers - **content-type** (string) - **x-arta-request-id** (string) A unique identifier for the Arta API call #### Body: application/json (object) - **errors** (object) [Powered by Bump.sh](https://bump.sh)