# Ingesting with Metadata

## Uploading Data

This section handles batch uploading PDF files from philosophy and mathematics categories providing extra metadata.

```python
import os
import json
import requests

url = 'https://api.activeloop.ai/files'
headers = {'Authorization': f'Bearer {os.getenv("ACTIVELOOP_TOKEN")}'}

for category in ['philosophy', 'mathematics']:
    for author in os.listdir(category):
        files = [('file', (pdf, open(f'{category}/{author}/{pdf}', 'rb'))) for pdf in os.listdir(f'{category}/{author}')]
        
        # specify any extra metadata 
        metadata = { 
            'category': category,
            'author': author
        }
        data = {'metadata': json.dumps(metadata)}
        
        # upload files 
        response = requests.post(url, headers=headers, files=files, data=data)
        print(response.status_code)
```

You can learn more on supported document type by going over [modalities](https://docs.activeloop.ai/user-guide/ingesting-with-metadata/modalities).&#x20;
