---
title: "downloadTask(with:)"
framework: foundation
role: symbol
role_heading: Instance Method
path: "foundation/urlsession/downloadtask(with:)-3fb7s"
---

# downloadTask(with:)

Creates a download task that retrieves the contents of a URL based on the specified URL request object and saves the results to a file.

## Declaration

```swift
func downloadTask(with request: URLRequest) -> URLSessionDownloadTask
```

## Parameters

- `request`: A URL request object that provides the URL, cache policy, request type, body data or body stream, and so on.

## Mentioned in

Downloading files from websites Downloading files in the background

## Return Value

Return Value The new session download task.

## Discussion

Discussion By creating a task based on a request object, you can tune various aspects of the task’s behavior, including the cache policy and timeout interval. After you create the task, you must start it by calling its resume() method. The task calls methods on the session’s delegate to provide you with progress notifications, the location of the resulting temporary file, and so on.

## See Also

### Adding download tasks to a session

- [downloadTask(with:)](foundation/urlsession/downloadtask(with:)-1onj.md)
- [downloadTask(with:completionHandler:)](foundation/urlsession/downloadtask(with:completionhandler:)-7cuje.md)
- [downloadTask(with:completionHandler:)](foundation/urlsession/downloadtask(with:completionhandler:)-4a84s.md)
- [downloadTask(withResumeData:)](foundation/urlsession/downloadtask(withresumedata:).md)
- [downloadTask(withResumeData:completionHandler:)](foundation/urlsession/downloadtask(withresumedata:completionhandler:).md)
- [URLSessionDownloadTask](foundation/urlsessiondownloadtask.md)
- [URLSessionDownloadDelegate](foundation/urlsessiondownloaddelegate.md)
