# Get a grant

> **GET** `https://api.us.nylas.com/v3/grants/{grantId}`

Source: https://developer.nylas.com/docs/reference/api/manage-grants/get_grant_by_id/

Gets a grant with the provided ID.

If the grant's `grant_status` is `invalid`, the grant has expired and needs to be re-authenticated. See [Handling expired grants](https://developer.nylas.com/docs/dev-guide/best-practices/grant-lifecycle/) for best practices on detection and recovery.

**Authentication:** NYLAS_API_KEY

## Parameters

### Path parameters

| Name | Type | Required | Description |
|------|------|----------|-------------|
| `grantId` | string | Yes |  |

### Query parameters

| Name | Type | Required | Description |
|------|------|----------|-------------|
| `expose_aliases` | boolean | No | If set to `true`, the response will include an array of email aliases associated with the grant. Applicable only for Google and Microsoft grants. Not set by default. Email aliases are only returned for the called API, not stored in the grant object permanently. |

## Responses

### 200 - Returns Grant object

- `request_id` (string) - ID of the request
- `data` (object)
  - `account_id` (string) - The v2 Nylas account ID. This field appears only if the grant was created by migrating a v2
connected account.
  - `blocked` (boolean) - When `true`, indicates that the grant is blocked from accessing the Nylas APIs.
  - `created_at` (integer) **(required)** - When the grant was created, in seconds using the Unix timestamp format.
  - `email` (string) - The email address associated with the grant. If the provider supports `id_token` and exposes the
user's email address, Nylas automatically extracts this value.
  - `grant_status` (string) - Specifies whether the grant is valid or the user needs to re-authenticate.
  - `id` (string) **(required)** - A unique identifier for the grant.
  - `ip` (string) - The user's client IP address. Mostly useful for
[Hosted OAuth](/docs/v3/auth/hosted-oauth-apikey/).
  - `name` (string) - The user's display name.
  - `provider` (string) **(required)** - The provider that the user authenticated with.
  - `provider_user_id` (string) - The user's provider ID. This field might be changed at any time by the provider.
  - `scope` (array) **(required)** - An array of [granular scopes](/docs/dev-guide/scopes/) associated with the grant. If none are
specified, Nylas uses the default scopes from the
[connector](/docs/reference/api/connectors-integrations/).
  - `settings` (object) - A list of settings associated with the grant. The contents of this object might differ between
grants or depending on the provider.
  - `email_aliases` (array) - An array of found email aliases for this grant. Only returned if special query parameter `expose_aliases` for 
[Get Grant](/docs/reference/api/manage-grants/get_grant_by_id/) is used and set to `true`.
Applicable only for Google and Microsoft grants.
  - `state` (string) - The initial state that was set as part of the authentication process. Nylas passes this value
back to your project without modifying it. You can use this field for verification, or to track
information about the user.
  - `updated_at` (integer) - When the user last authenticated their grant, in seconds using the Unix timestamp format.
Initially, this value is the same as `created_at`.
  - `user_agent` (string) - The user's [client or browser information](https://www.useragents.me/). Mostly useful for
[Hosted OAuth](/docs/v3/auth/hosted-oauth-apikey/).
  - `workspace_id` (string) - The ID of the Workspace the grant belongs to, if any. For grants from providers other than
Agent Accounts, Nylas may omit this field when the grant is in the application's default
workspace.
  - `credential_id` (string) - The ID of the Credential the grant is associated with. Grant will use this Credential for provider communication.

### 401 - Not Authenticated

- `request_id` (string) **(required)** - ID of the request
- `error` (object) **(required)** - Error object
  - `type` (string) - Type of error
  - `message` (string) - Informative error message
  - `provider_error` (object) - (OPTIONAL) informative error message from provider's side

### 404 - Not Found

- `request_id` (string) **(required)** - ID of the request
- `error` (object) **(required)** - Error object
  - `type` (string) - Type of error
  - `message` (string) - Informative error message
  - `provider_error` (object) - (OPTIONAL) informative error message from provider's side

## Code samples

### cURL

```bash
curl --request GET \
  --url 'https://api.us.nylas.com/v3/grants/<NYLAS_GRANT_ID>' \
  --header 'Accept: application/json' \
  --header 'Authorization: Bearer <NYLAS_API_KEY>' \
```

### Node.js SDK

```javascript
import Nylas from "nylas";

// Instantiate Nylas SDK
const NylasConfig = {
  apiKey: "<NYLAS_API_KEY>",
  apiUri: "<NYLAS_API_URI>",
};

const nylas = new Nylas(NylasConfig);

// Define the ID of the grant to find
const grantId = "<NYLAS_GRANT_ID>";

// Function to find the grant
async function findGrant() {
  try {
    const grant = await nylas.grants.find({ grantId });

    console.log("Grant found:", grant);
  } catch (error) {
    console.error("Error finding grant:", error);
  }
}

findGrant();

```

### Python SDK

```python
import sys
from nylas import Client

nylas = Client(
    "<NYLAS_API_KEY>",
    "<NYLAS_API_URI>"
)

grant_id = "<NYLAS_GRANT_ID>"

grant = nylas.grants.find(
  grant_id
)

print(grant)
```

### Ruby SDK

```ruby
# frozen_string_literal: true

# Load gems
require 'nylas'

# Initialize Nylas client
nylas = Nylas::Client.new(
  api_key: '<NYLAS_API_KEY>'
)

grant, _ = nylas.grants.find(grant_id: "<NYLAS_GRANT_ID>")

puts grant
```

### Java SDK

```java
import com.nylas.NylasClient;
import com.nylas.models.*;

public class get_grants {
  public static void main(String[] args) throws NylasSdkTimeoutError, NylasApiError {
    NylasClient nylas = new NylasClient.Builder("<NYLAS_API_KEY>").build();
    Response<Grant> grant = nylas.grants().find("<NYLAS_GRANT_ID>");
    
    System.out.println(grant);
  }
}
```

### Kotlin SDK

```kotlin
import com.nylas.NylasClient

fun main(args: Array<String>) {
    val nylas: NylasClient = NylasClient(
        apiKey = "<NYLAS_API_KEY>"
    )

    val grant = nylas.grants().find("<NYLAS_GRANT_ID>")
    print(grant)
}

```
