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)