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"

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"
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


Questions? Check the FAQ or contact support@ubiship.com