> ## Documentation Index
> Fetch the complete documentation index at: https://docs.atomscale.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Programmatic Integration

> Upload data and stream frames using the Python SDK

For scripted or automated workflows, you can upload data to Atomscale programmatically using the Python SDK. This page covers API key setup and gives a quick overview of the SDK. For the full guide, see the [SDK Quickstart](/sdk/quickstart).

## Generate an API Key

<Steps>
  <Step title="Open the API Integration tab">
    Click <Badge stroke color="blue">Add Data</Badge> in the sidebar, then select the
    <Badge stroke color="blue">API Integration</Badge> tab. You can also find API key
    management under **User Profile > Access**.
  </Step>

  <Step title="Generate a key">
    Click <Badge stroke color="blue">Generate API Key</Badge>. The key is displayed once. Copy it immediately and store it somewhere safe.
  </Step>
</Steps>

<Warning>
  Regenerating a key immediately invalidates the previous one. Any applications using the old key
  will lose access.
</Warning>

## Install the SDK

```bash theme={null}
pip install atomicds
```

## Upload Files

Create a client and upload files in a few lines:

```python theme={null}
from atomicds.client import Client

files = [
    "/data/growths/2025-02-10/RHEED-stationary.mp4",
    "/data/growths/2025-02-10/RHEED-rotating.imm",
]

client = Client(api_key="YOUR_API_KEY")
client.upload(files=files)
```

The client reads `ADS_API_KEY` from the environment when no key is passed explicitly.

## Next Steps

<CardGroup cols={2}>
  <Card title="SDK Quickstart" icon="rocket" href="/sdk/quickstart">
    Full walkthrough of client setup, search, and upload.
  </Card>

  <Card title="Upload Data" icon="upload" href="/sdk/upload-data">
    Detailed guide on uploading files with the SDK.
  </Card>
</CardGroup>
