---
title: "File Upload"
description: "<p>The File Upload URL APIs provide secure, pre-signed URLs for uploading ZIP files to Launch.</p>"
url: "https://www.contentstack.com/docs/developers/apis/launch-api/file-upload"
product: "Contentstack"
doc_type: "guide"
audience:
  - developers
  - admins
version: "current"
last_updated: "2026-01-13"
---

# File Upload

The File Upload URL APIs provide secure, pre-signed URLs for uploading ZIP files to Launch.

## Get a Signed Upload URL for a Project

### Get a Signed Upload URL for a Project

**GET** `/projects/upload/signed_url`

The Get a Signed Upload URL for a Project request fetches the details of the signed URL where you must upload the file while creating a project.

As the next step, [Upload Your Deployment Zip File to the Signed URL](https://www.contentstack.com/docs/developers/launch/upload-your-deployment-zip-file-to-launch).

#### Headers

- **authorization** (optional)
  Use a bearer token to authenticate if you're not using the authtoken header. Format: Bearer . If provided, the organization\_uid header isn't required.
- **authtoken** (optional)
  Use an authentication token if the Authorization header isn't provided. \*\*Requires the organization\_uid header.\*\* When using authtoken authentication, you must explicitly provide the organization\_uid header. The organization\_uid cannot be derived from project\_uid for Launch REST APIs.
- **x-cs-api-version** (optional)
  Enter the API version. Default is 1.0
- **organization_uid** (optional)
  ⚠️ \*\*REQUIRED when using authtoken authentication\*\* - you must explicitly provide this header. Optional with Authorization Bearer token (organization\_uid can be derived from the token).

#### Sample Response

```json
{
  "uploadUrl": "https://test-upload-url.com",
  "expiresIn": 900,
  "uploadUid": "50xxxxa8",
  "method": "POST",
  "fields": [
    {
      "formFieldKey": "bucket",
      "formFieldValue": "<value>"
    },
    {
      "formFieldKey": "X-Amz-Algorithm",
      "formFieldValue": "<value>"
    },
    {
      "formFieldKey": "X-Amz-Credential",
      "formFieldValue": "<value>"
    },
    {
      "formFieldKey": "X-Amz-Date",
      "formFieldValue": "<value>"
    },
    {
      "formFieldKey": "X-Amz-Security-Token",
      "formFieldValue": "<value>"
    },
    {
      "formFieldKey": "key",
      "formFieldValue": "<value>"
    },
    {
      "formFieldKey": "Policy",
      "formFieldValue": "<value>"
    },
    {
      "formFieldKey": "X-Amz-Signature",
      "formFieldValue": "<value>"
    }
  ],
  "headers": [
    {
      "key": "x-example-header",
      "value": "x-example-value"
    }
  ]
}
```

## Get a Signed Upload URL for an Environment

### Get a Signed Upload URL for an Environment

**GET** `/projects/{project_uid}/environments/upload/signed_url`

The Get a Signed Upload URL for an Environment request fetches the details of the signed URL where you must upload the file when creating an environment.

As the next step, [Upload Your Deployment Zip File to the Signed URL](https://www.contentstack.com/docs/developers/launch/upload-your-deployment-zip-file-to-launch).

#### URL Parameters

- **project_uid** (required)
  Enter the project\_uid of the FILEUPLOAD project where the environments belong.

#### Headers

- **authorization** (optional)
  Use a bearer token to authenticate if you're not using the authtoken header. Format: Bearer . If provided, the organization\_uid header isn't required.
- **authtoken** (optional)
  Use an authentication token if the Authorization header isn't provided. \*\*Requires the organization\_uid header.\*\* When using authtoken authentication, you must explicitly provide the organization\_uid header. The organization\_uid cannot be derived from project\_uid for Launch REST APIs.
- **x-cs-api-version** (optional)
  Enter the API version. Default is 1.0
- **organization_uid** (optional)
  ⚠️ \*\*REQUIRED when using authtoken authentication\*\* - you must explicitly provide this header. Optional with Authorization Bearer token (organization\_uid can be derived from the token).

#### Sample Response

```json
{
  "uploadUrl": "https://test-upload-url.com",
  "expiresIn": 900,
  "uploadUid": "50xxxxa8",
  "method": "POST",
  "fields": [
    {
      "formFieldKey": "bucket",
      "formFieldValue": "<value>"
    },
    {
      "formFieldKey": "X-Amz-Algorithm",
      "formFieldValue": "<value>"
    },
    {
      "formFieldKey": "X-Amz-Credential",
      "formFieldValue": "<value>"
    },
    {
      "formFieldKey": "X-Amz-Date",
      "formFieldValue": "<value>"
    },
    {
      "formFieldKey": "X-Amz-Security-Token",
      "formFieldValue": "<value>"
    },
    {
      "formFieldKey": "key",
      "formFieldValue": "<value>"
    },
    {
      "formFieldKey": "Policy",
      "formFieldValue": "<value>"
    },
    {
      "formFieldKey": "X-Amz-Signature",
      "formFieldValue": "<value>"
    }
  ],
  "headers": [
    {
      "key": "x-example-header",
      "value": "x-example-value"
    }
  ]
}
```

## Get a Signed Upload URL for a Deployment

### Get a Signed Upload URL for a Deployment

**GET** `/projects/{project_uid}/environments/{environment_uid}/deployments/upload/signed_url`

The Get a Signed Upload URL for a Deployment request retrieves the details of the signed URL where you must upload the file when creating or redeploying a deployment.

As the next step, [Upload Your Deployment Zip File to the Signed URL](https://www.contentstack.com/docs/developers/launch/upload-your-deployment-zip-file-to-launch).

#### URL Parameters

- **environment_uid** (required)
  Enter the environment\_uid of the environment where you want to create the deployment.
- **project_uid** (required)
  Enter the project\_uid of the FILEUPLOAD project where the environments belong.

#### Headers

- **authorization** (optional)
  Use a bearer token to authenticate if you're not using the authtoken header. Format: Bearer . If provided, the organization\_uid header isn't required.
- **authtoken** (optional)
  Use an authentication token if the Authorization header isn't provided. \*\*Requires the organization\_uid header.\*\* When using authtoken authentication, you must explicitly provide the organization\_uid header. The organization\_uid cannot be derived from project\_uid for Launch REST APIs.
- **x-cs-api-version** (optional)
  Enter the API version. Default is 1.0
- **organization_uid** (optional)
  ⚠️ \*\*REQUIRED when using authtoken authentication\*\* - you must explicitly provide this header. Optional with Authorization Bearer token (organization\_uid can be derived from the token).

#### Sample Response

```json
{
  "uploadUrl": "https://test-upload-url.com",
  "expiresIn": 900,
  "uploadUid": "50xxxxa8",
  "method": "POST",
  "fields": [
    {
      "formFieldKey": "bucket",
      "formFieldValue": "<value>"
    },
    {
      "formFieldKey": "X-Amz-Algorithm",
      "formFieldValue": "<value>"
    },
    {
      "formFieldKey": "X-Amz-Credential",
      "formFieldValue": "<value>"
    },
    {
      "formFieldKey": "X-Amz-Date",
      "formFieldValue": "<value>"
    },
    {
      "formFieldKey": "X-Amz-Security-Token",
      "formFieldValue": "<value>"
    },
    {
      "formFieldKey": "key",
      "formFieldValue": "<value>"
    },
    {
      "formFieldKey": "Policy",
      "formFieldValue": "<value>"
    },
    {
      "formFieldKey": "X-Amz-Signature",
      "formFieldValue": "<value>"
    }
  ],
  "headers": [
    {
      "key": "x-example-header",
      "value": "x-example-value"
    }
  ]
}
```

## Get a Download URL for a Deployment

### Get a Download URL for a Deployment

**GET** `/projects/{project_uid}/environments/{environment_uid}/deployments/{deployment_uid}/download/signed_url`

The Get a Download URL for the Uploaded File request returns the signed URL to download the uploaded file from the latest deployment.

#### URL Parameters

- **deployment_uid** (required)
  Deployment unique identifier of the latest deployment of an environment for which you want to fetch the download URL.
- **environment_uid** (required)
  Environment unique identifier associated with the deployment.
- **project_uid** (required)
  Project unique identifier of the FILEUPLOAD project where the environments belong.

#### Headers

- **authorization** (optional)
  Use a bearer token to authenticate if you're not using the authtoken header. Format: Bearer . If provided, the organization\_uid header isn't required.
- **authtoken** (optional)
  Use an authentication token if the Authorization header isn't provided. \*\*Requires the organization\_uid header.\*\* When using authtoken authentication, you must explicitly provide the organization\_uid header. The organization\_uid cannot be derived from project\_uid for Launch REST APIs.
- **x-cs-api-version** (optional)
  Enter the API version. Default is 1.0
- **organization_uid** (optional)
  ⚠️ \*\*REQUIRED when using authtoken authentication\*\* - you must explicitly provide this header. Optional with Authorization Bearer token (organization\_uid can be derived from the token).

#### Sample Response

```json
{
  "downloadUrl": "https://test-download-url.com",
  "expiresIn": 900
}
```