> For the complete documentation index, see [llms.txt](https://docs.nodies.app/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.nodies.app/application-guide/creating-and-managing-your-workspace/api-keys.md).

# API Keys

<figure><img src="/files/tUf9dt7AD2jzdUawLpxN" 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="/files/u1Wv75MN9fMG0pG9KwtU" 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 %}


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.nodies.app/application-guide/creating-and-managing-your-workspace/api-keys.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
