# Authentication

## Creating an API key

To create an API key, log into the [Tilebox Console](https://console.tilebox.com). Navigate to [Settings → API Keys](https://console.tilebox.com/settings/api-keys) and click the "Create API Key" button.

Keep your API keys secure. Deactivate any keys if you suspect they have been compromised.

![Tilebox Console](/docs/assets/console/api-keys-light.png)

![Tilebox Console](/docs/assets/console/api-keys-dark.png)

## Set up environment variable

Set `TILEBOX_API_KEY` in your shell environment (optional but recommended). That way, the [Tilebox CLI](/docs/agents-and-ai-tools/tilebox-cli) and SDK clients automatically pick it up.

The following commands persist the variable for future terminal sessions and also make it available in the current session.

**Bash**

```bash title="Bash"
echo 'export TILEBOX_API_KEY="<tbx-api-...>"' >> ~/.bashrc
source ~/.bashrc
```

**Zsh**

```zsh title="Zsh"
echo 'export TILEBOX_API_KEY="<tbx-api-...>"' >> ~/.zshrc
source ~/.zshrc
```

**Fish**

```fish title="Fish"
set -Ux TILEBOX_API_KEY "<tbx-api-...>"
```

**PowerShell**

```powershell title="PowerShell"
[Environment]::SetEnvironmentVariable("TILEBOX_API_KEY", "<tbx-api-...>", "User")
$env:TILEBOX_API_KEY = "<tbx-api-...>"
```

Open a new terminal after setting the variable to confirm your shell loads it automatically.

## Manual SDK authentication

In case you didn't configure your shell environment, you can also pass your API key as the `token` parameter when creating an instance of the SDK clients.

**Python**

```python title="Python"
from tilebox.datasets import Client as DatasetsClient
from tilebox.workflows import Client as WorkflowsClient

datasets_client = DatasetsClient(token="<tbx-api-...>")
workflows_client = WorkflowsClient(token="<tbx-api-...>")
```

**Go**

```go title="Go"
import (
	"github.com/tilebox/tilebox-go/datasets/v1"
	"github.com/tilebox/tilebox-go/workflows/v1"
)

datasetsClient := datasets.NewClient(datasets.WithAPIKey("<tbx-api-...>"))
workflowsClient := workflows.NewClient(workflows.WithAPIKey("<tbx-api-...>"))
```

If you set your API key as an environment variable named `TILEBOX_API_KEY`, you can skip the token parameter when creating a client.
