cURL Examples
Command-line examples for using Archivus API with cURL.
Authentication
Login
curl -X POST https://api.archivus.app/api/v1/auth/login \
-H "Content-Type: application/json" \
-d '{
"email": "user@example.com",
"password": "your-password",
"tenant_subdomain": "your-tenant"
}'
Using API Key
export API_KEY="ak_live_YOUR_API_KEY"
export TENANT="your-tenant"
curl -H "X-API-Key: $API_KEY" \
-H "X-Tenant-Subdomain: $TENANT" \
https://api.archivus.app/api/v1/documents
Using JWT Token
export TOKEN="YOUR_JWT_TOKEN"
export TENANT="your-tenant"
curl -H "Authorization: Bearer $TOKEN" \
-H "X-Tenant-Subdomain: $TENANT" \
https://api.archivus.app/api/v1/documents
Documents
List Documents
curl -H "Authorization: Bearer $TOKEN" \
-H "X-Tenant-Subdomain: $TENANT" \
"https://api.archivus.app/api/v1/documents?limit=20&page=1"
Get Document
curl -H "Authorization: Bearer $TOKEN" \
-H "X-Tenant-Subdomain: $TENANT" \
"https://api.archivus.app/api/v1/documents/doc_abc123"
Upload Document
# Get CSRF token first
export CSRF=$(curl -s -H "Authorization: Bearer $TOKEN" \
-H "X-Tenant-Subdomain: $TENANT" \
https://api.archivus.app/api/v1/auth/csrf-token | jq -r '.csrf_token')
# Upload document
curl -X POST https://api.archivus.app/api/v1/documents/upload \
-H "Authorization: Bearer $TOKEN" \
-H "X-Tenant-Subdomain: $TENANT" \
-H "X-CSRF-Token: $CSRF" \
-F "file=@contract.pdf" \
-F "enable_ai=true" \
-F "folder_id=folder_xyz"
Update Document
curl -X PUT "https://api.archivus.app/api/v1/documents/doc_abc123" \
-H "Authorization: Bearer $TOKEN" \
-H "X-Tenant-Subdomain: $TENANT" \
-H "X-CSRF-Token: $CSRF" \
-H "Content-Type: application/json" \
-d '{
"filename": "Updated Name.pdf",
"tags": ["updated", "important"]
}'
Delete Document
curl -X DELETE "https://api.archivus.app/api/v1/documents/doc_abc123" \
-H "Authorization: Bearer $TOKEN" \
-H "X-Tenant-Subdomain: $TENANT" \
-H "X-CSRF-Token: $CSRF"
Search
Semantic Search
curl "https://api.archivus.app/api/v1/search?q=contracts+expiring+soon&mode=semantic&limit=10" \
-H "Authorization: Bearer $TOKEN" \
-H "X-Tenant-Subdomain: $TENANT"
Enhanced Search
curl -X POST https://api.archivus.app/api/v1/search/enhanced \
-H "Authorization: Bearer $TOKEN" \
-H "X-Tenant-Subdomain: $TENANT" \
-H "Content-Type: application/json" \
-d '{
"query": "Find all contracts expiring in Q4",
"filters": {
"tags": ["contract"],
"date_range": {
"start": "2025-10-01",
"end": "2025-12-31"
}
}
}'
Chat
Create Chat Session
curl -X POST https://api.archivus.app/api/v1/chat/sessions \
-H "Authorization: Bearer $TOKEN" \
-H "X-Tenant-Subdomain: $TENANT" \
-H "X-CSRF-Token: $CSRF" \
-H "Content-Type: application/json" \
-d '{
"document_id": "doc_abc123",
"name": "Contract Analysis"
}'
Ask Question
curl -X POST "https://api.archivus.app/api/v1/chat/sessions/session_xyz789/ask" \
-H "Authorization: Bearer $TOKEN" \
-H "X-Tenant-Subdomain: $TENANT" \
-H "X-CSRF-Token: $CSRF" \
-H "Content-Type: application/json" \
-d '{
"message": "What are the key terms of this contract?"
}'
Folders
List Folders
curl "https://api.archivus.app/api/v1/folders" \
-H "Authorization: Bearer $TOKEN" \
-H "X-Tenant-Subdomain: $TENANT"
Create Folder
curl -X POST https://api.archivus.app/api/v1/folders \
-H "Authorization: Bearer $TOKEN" \
-H "X-Tenant-Subdomain: $TENANT" \
-H "X-CSRF-Token: $CSRF" \
-H "Content-Type: application/json" \
-d '{
"name": "Contracts",
"color": "#3B82F6"
}'
Complete Workflow Example
#!/bin/bash
# Configuration
API_KEY="ak_live_YOUR_API_KEY"
TENANT="your-tenant"
BASE_URL="https://api.archivus.app/api/v1"
# Get CSRF token
CSRF=$(curl -s -H "X-API-Key: $API_KEY" \
-H "X-Tenant-Subdomain: $TENANT" \
"$BASE_URL/auth/csrf-token" | jq -r '.csrf_token')
# Upload document
echo "Uploading document..."
UPLOAD_RESPONSE=$(curl -s -X POST "$BASE_URL/documents/upload" \
-H "X-API-Key: $API_KEY" \
-H "X-Tenant-Subdomain: $TENANT" \
-H "X-CSRF-Token: $CSRF" \
-F "file=@contract.pdf" \
-F "enable_ai=true")
DOCUMENT_ID=$(echo $UPLOAD_RESPONSE | jq -r '.id')
echo "Document uploaded: $DOCUMENT_ID"
# Wait for processing
echo "Waiting for processing..."
sleep 30
# Get document
DOCUMENT=$(curl -s "$BASE_URL/documents/$DOCUMENT_ID" \
-H "X-API-Key: $API_KEY" \
-H "X-Tenant-Subdomain: $TENANT")
echo "Document processed:"
echo $DOCUMENT | jq '{filename, status, ai_status, ai_summary, ai_tags}'
# Search for similar documents
echo "Searching for similar documents..."
SEARCH_RESULTS=$(curl -s "$BASE_URL/search?q=contracts+similar+to+this&mode=semantic" \
-H "X-API-Key: $API_KEY" \
-H "X-Tenant-Subdomain: $TENANT")
echo "Found $(echo $SEARCH_RESULTS | jq '.total') similar documents"
# Create chat session
echo "Creating chat session..."
SESSION_RESPONSE=$(curl -s -X POST "$BASE_URL/chat/sessions" \
-H "X-API-Key: $API_KEY" \
-H "X-Tenant-Subdomain: $TENANT" \
-H "X-CSRF-Token: $CSRF" \
-H "Content-Type: application/json" \
-d "{\"document_id\": \"$DOCUMENT_ID\", \"name\": \"Analysis\"}")
SESSION_ID=$(echo $SESSION_RESPONSE | jq -r '.id')
# Ask question
echo "Asking question..."
ANSWER=$(curl -s -X POST "$BASE_URL/chat/sessions/$SESSION_ID/ask" \
-H "X-API-Key: $API_KEY" \
-H "X-Tenant-Subdomain: $TENANT" \
-H "X-CSRF-Token: $CSRF" \
-H "Content-Type: application/json" \
-d '{"message": "What are the key terms?"}')
echo "Answer:"
echo $ANSWER | jq -r '.content'
Tips
Using jq for JSON Parsing
# Pretty print JSON
curl ... | jq '.'
# Extract specific field
curl ... | jq -r '.id'
# Filter array
curl ... | jq '.data[] | select(.status == "completed")'
Saving Responses
# Save to file
curl ... > response.json
# Save and pretty print
curl ... | jq '.' > response.json
Error Handling
# Check HTTP status
HTTP_CODE=$(curl -s -o /dev/null -w "%{http_code}" ...)
if [ $HTTP_CODE -eq 200 ]; then
echo "Success"
else
echo "Error: $HTTP_CODE"
fi
Next Steps
- Python SDK - Use Python SDK instead
- JavaScript SDK - Use JavaScript SDK instead
- API Reference - Complete API documentation
Questions? Check the FAQ or contact support@ubiship.com