> For the complete documentation index, see [llms.txt](https://docs.eyepop.ai/developer-documentation/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.eyepop.ai/developer-documentation/sdks/python/data-endpoint.md).

# Data Endpoint

Datasets, VLM inference, and batch evaluation

The Data API manages datasets and runs VLM inference and evaluation over them.

```python
import asyncio
from eyepop import EyePopSdk

async def main():
    async with EyePopSdk.dataEndpoint(is_async=True) as endpoint:
        datasets = await endpoint.list_datasets()
        print(datasets)

asyncio.run(main())
```

Some Data API calls need an account: set `EYEPOP_ACCOUNT_ID`. See [Configuration](/developer-documentation/sdks/python/configuration.md).

{% hint style="warning" %}
`infer_asset` and `evaluate_dataset` are marked experimental in the SDK and may change.
{% endhint %}

### VLM inference on one asset

```python
import asyncio

from eyepop.data.data_types import InferRequest, TranscodeMode

async def main():
    async with EyePopSdk.dataEndpoint(is_async=True) as endpoint:
        job = await endpoint.infer_asset(
            asset_uuid="your-asset-uuid",
            infer_request=InferRequest(text_prompt="Describe this image."),
            transcode_mode=TranscodeMode.image_cover_1024,
        )
        while result := await job.predict():
            print(result)

asyncio.run(main())
```

### Batch dataset evaluation

```python
import asyncio

from eyepop.data.data_types import EvaluateRequest, InferRequest

request = EvaluateRequest(
    dataset_uuid="your-dataset-uuid",
    infer=InferRequest(text_prompt="How many people are in this image?"),
)

async def main():
    async with EyePopSdk.dataEndpoint(is_async=True, job_queue_length=4) as endpoint:
        job = await endpoint.evaluate_dataset(evaluate_request=request)
        response = await job.response
        print(response.model_dump_json(indent=2))

asyncio.run(main())
```

### Next steps

* [Composable Pops](/developer-documentation/sdks/python/composable-pops.md) — chain models into an inference pipeline for the worker endpoint
* [Running Inference](/developer-documentation/sdks/python/inference.md) — process media directly instead
