---
title: "requestAccessToAccounts(with:options:completion:)"
framework: accounts
role: symbol
role_heading: Instance Method
path: "accounts/acaccountstore/requestaccesstoaccounts(with:options:completion:)"
---

# requestAccessToAccounts(with:options:completion:)

Obtains permission to access protected user properties.

## Declaration

```swift
func requestAccessToAccounts(with accountType: ACAccountType!, options: [AnyHashable : Any]! = [:], completion: (@Sendable (Bool, (any Error)?) -> Void)!)
```

```swift
func requestAccessToAccounts(with accountType: ACAccountType!, options: [AnyHashable : Any]! = [:]) async throws -> Bool
```

## Parameters

- `accountType`: The account type.
- `options`: A dictionary of options, if options are required by the account type; otherwise, nil.
- `completion`: The handler to call when the request has completed. The handler is called on an arbitrary queue.

## Discussion

Discussion important: You can call this method from synchronous code using a completion handler, as shown on this page, or you can call it as an asynchronous method that has the following declaration: func requestAccessToAccounts(with accountType: ACAccountType!, options: [AnyHashable : Any]! = [:]) async throws -> Bool For information about concurrency and asynchronous code in Swift, see Calling Objective-C APIs Asynchronously. Certain account types (such as Facebook) require an options dictionary. This method throws an NSInvalidArgumentException if the options dictionary isn’t provided for such account types. Conversely, if the account type doesn’t require an options dictionary, the options parameter must be nil.

## See Also

### Requesting Access

- [ACAccountStoreRequestAccessCompletionHandler](accounts/acaccountstorerequestaccesscompletionhandler.md)
