Skip to content

Attachments

The attachments module provides file upload functionality for the Airia platform. Files are uploaded to cloud storage and can be used across various platform features.

Upload Files

Synchronous Upload

from airia import AiriaClient

# Initialize client (API key can be passed directly or via AIRIA_API_KEY environment variable)
client = AiriaClient(api_key="your_api_key")

# Upload a file
upload_response = client.attachments.upload_file(
    file_path="path/to/your/file.pdf"
)

print(f"Uploaded file ID: {upload_response.id}")
print(f"File URL: {upload_response.image_url}")

Asynchronous Upload

import asyncio
from airia import AiriaAsyncClient

async def main():
    client = AiriaAsyncClient(api_key="your_api_key")

    # Upload a file
    upload_response = await client.attachments.upload_file(
        file_path="path/to/your/file.pdf"
    )

    print(f"Uploaded file ID: {upload_response.id}")
    print(f"File URL: {upload_response.image_url}")

asyncio.run(main())

Upload Multiple Files

from airia import AiriaClient

client = AiriaClient(api_key="your_api_key")

file_paths = [
    "path/to/document.pdf",
    "path/to/image.jpg",
    "path/to/spreadsheet.xlsx"
]

uploaded_files = []
for file_path in file_paths:
    upload_response = client.attachments.upload_file(file_path=file_path)
    uploaded_files.append({
        "path": file_path,
        "id": upload_response.id,
        "url": upload_response.image_url
    })

for file_info in uploaded_files:
    print(f"File: {file_info['path']}")
    print(f"ID: {file_info['id']}")
    print(f"URL: {file_info['url']}")
    print("---")

Integration with Pipeline Execution

Uploaded files can be used directly in pipeline execution. The pipeline execution API supports both local files and remote URLs:

from airia import AiriaClient

client = AiriaClient(api_key="your_api_key")

# Option 1: Upload first, then use in pipeline
upload_response = client.attachments.upload_file(
    file_path="path/to/document.pdf"
)

# Use the uploaded file URL in subsequent API calls if needed
print(f"File available at: {upload_response.image_url}")

# Option 2: Use files directly in pipeline execution (recommended)
# The SDK will automatically upload local files internally
response = client.pipeline_execution.execute_pipeline(
    pipeline_id="your_pipeline_id",
    user_input="Analyze this document",
    files=["path/to/document.pdf"]  # Automatic upload for local files
)

# Option 3: Use remote URLs directly (no upload needed)
response = client.pipeline_execution.execute_pipeline(
    pipeline_id="your_pipeline_id",
    user_input="Analyze this remote document",
    files=["https://example.com/documents/report.pdf"]  # Direct URL usage
)

# Option 4: Mix local files and URLs
response = client.pipeline_execution.execute_pipeline(
    pipeline_id="your_pipeline_id",
    user_input="Compare these documents",
    files=[
        "path/to/local-document.pdf",  # Local file - uploaded automatically
        "https://example.com/remote-document.pdf"  # Remote URL - used directly
    ]
)

print(response.result)