> ## Documentation Index
> Fetch the complete documentation index at: https://docs.royaltyport.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Contract Download

> Get a signed download URL for a contract file.

## Download Contract

Returns a signed download URL for a contract's original file. The URL expires in 1 hour.

### Request

```
GET /v1/contracts/{contract_id}/download
```

### Path Parameters

| Parameter     | Type   | Required | Description     |
| ------------- | ------ | -------- | --------------- |
| `contract_id` | string | Yes      | The contract ID |

### Query Parameters

| Parameter   | Type | Required | Default | Description                         |
| ----------- | ---- | -------- | ------- | ----------------------------------- |
| `projectId` | UUID | Yes      | —       | The project the contract belongs to |

### Headers

| Header          | Required | Description                                                |
| --------------- | -------- | ---------------------------------------------------------- |
| `Authorization` | Yes      | `Bearer <token>` — must be scoped to the requested project |

### Response

```json theme={null}
{
  "data": {
    "url": "https://storage.example.com/contracts/contract.pdf?token=...",
    "fileName": "contract.pdf",
    "fileType": "application/pdf",
    "expiresIn": 3600
  }
}
```

| Field       | Type    | Description                    |
| ----------- | ------- | ------------------------------ |
| `url`       | string  | Pre-signed download URL        |
| `fileName`  | string  | Original file name             |
| `fileType`  | string  | MIME type of the file          |
| `expiresIn` | integer | URL expiration time in seconds |

### Errors

| Status | Description                                  |
| ------ | -------------------------------------------- |
| `400`  | Missing or invalid `projectId`               |
| `403`  | Token is not scoped to the requested project |
| `404`  | Contract not found                           |
| `429`  | Rate limit exceeded                          |

### Example

```bash theme={null}
curl "https://api.royaltyport.com/v1/contracts/contract-123/download?projectId=a1b2c3d4-..." \
  -H "Authorization: Bearer rp_your_token_here"
```
