# API Keys

<figure><img src="https://196680601-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F2rYhTFzQ2N3dGkNYGHaf%2Fuploads%2FBqwmnzRFbGzqFZ9qTRBL%2FAPI%20key%20-%20System-generated.png?alt=media&#x26;token=b6c53b6f-8690-4d3e-8fb1-bebab2c7ae3d" alt=""><figcaption></figcaption></figure>

The API Keys tab manages the keys associated with your workspace.

* Each new workspace receives one system-generated key
* All workspaces can have multiple API keys, but must always have at least one active key
* Users can add and delete API keys, as well as whitelisting domains and IPv4 addresses if they so choose.&#x20;

<figure><img src="https://196680601-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F2rYhTFzQ2N3dGkNYGHaf%2Fuploads%2Fby8oFTRunYbnopJLD490%2FAPI%20key%20-%20Add%20modal.png?alt=media&#x26;token=e075b742-cc5d-4819-ac2f-b82901bac0d1" alt="" width="563"><figcaption></figcaption></figure>

Every request requires an API key.

You may authenticate in two ways:

1. Embed the key in the URL:

{% tabs fullWidth="false" %}
{% tab title="Curl" %}

```bash
curl "https://lb.nodies.app/v2/<network-name>?apikey=<your-api-key>" \
-X POST \
-H "Content-Type: application/json" \
```

{% endtab %}

{% tab title="Python" %}

```python
from web3 import Web3
import requests

# Define the Web3 provider with API key in the URL
client = Web3(Web3.HTTPProvider('https://lb.nodies.app/v2/<network-name>?apikey=<api_key_here>'))
```

{% endtab %}

{% tab title="JavaScript" %}

```javascript
import { Web3, HttpProvider } from 'web3';

// Define Web3 client with API key in the URL
const client = new Web3(new HttpProvider('https://lb.nodies.app/v2/<network-name>?apikey=<your-api-key>'));
```

{% endtab %}
{% endtabs %}

2. Pass the key as a header:

{% tabs %}
{% tab title="Curl" %}

```bash
curl https://lb.nodies.app/v2/<network-name> \
-X POST \
-H "x-api-key: <api_key_value>" \
-H "Content-Type: application/json" \
```

{% endtab %}

{% tab title="Python" %}

```python
from web3 import Web3
import requests

#define a http session with an api key
http_session = requests.Session()
http_session.update({'x-api-key': 'api_key_here'})

#defined the web3 provider
client = Web3.HTTPProvider('https://lb.nodies.app/v2/<network-name>')
```

{% endtab %}

{% tab title="JavaScript" %}

```javascript
import { Web3, HttpProvider } from 'web3';

// define web3 client
const client = new Web3(new HttpProvider('https://lb.nodies.app/v2/<network-name>', {
    providerOptions: {
        headers: {
            "x-api-key": "api_key_value"
        }
    }
}));
```

{% endtab %}
{% endtabs %}
