Skip to main content

1. Create an account

Sign up at app.uplint.dev to get access to the dashboard. The free tier includes 500 uploads/month with full platform access.

2. Get your API key

Navigate to Settings → API Keys in the dashboard, or create one via the API:
curl -X POST https://api.uplint.dev/api/v1/api-keys \
  -H "Authorization: Bearer YOUR_JWT_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "My First Key",
    "scopes": ["upload", "download", "metadata"]
  }'
The response includes your API key — store it securely, it’s only shown once:
{
  "status": "SUCCESS",
  "data": {
    "api_key_id": "6612f1a2c3b4d5e6f7890123",
    "api_key": "ul_live_a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6",
    "name": "My First Key",
    "scopes": ["upload", "download", "metadata"]
  }
}

3. Create a file context

File contexts define your upload pipelines — what file types are allowed, size limits, and which validations to run:
curl -X POST https://api.uplint.dev/api/v1/contexts \
  -H "Authorization: Bearer ul_live_a1b2c3d4..." \
  -H "Content-Type: application/json" \
  -d '{
    "context_key": "patient_reports",
    "display_name": "Patient Reports",
    "description": "Medical reports uploaded by patients",
    "allowed_extensions": ["pdf", "png", "jpg", "jpeg"],
    "max_file_size_mb": 25,
    "reject_blank_files": true,
    "reject_corrupt_files": true,
    "scan_for_viruses": true
  }'

4. Upload a file

Upload a file into your context. Uplint validates it against all configured rules before storing it:
curl -X POST https://api.uplint.dev/api/v1/files/upload \
  -H "Authorization: Bearer ul_live_a1b2c3d4..." \
  -F "file=@report.pdf" \
  -F "context=patient_reports" \
  -F 'metadata={"department": "radiology", "patient_id": "P-12345"}'
If the file passes all checks:
{
  "status": "SUCCESS",
  "message": "File uploaded",
  "data": {
    "file_id": "6612f1a2c3b4d5e6f7890abc",
    "original_filename": "report.pdf",
    "content_type": "application/pdf",
    "size_bytes": 843776,
    "context_key": "patient_reports"
  }
}
If the file fails validation (blank, corrupt, virus, wrong extension, oversized):
{
  "status": "ERROR",
  "message": "File rejected: blank document detected",
  "errors": ["blank_document"]
}

5. Retrieve your file

Generate a pre-signed download URL:
curl https://api.uplint.dev/api/v1/files/FILE_ID \
  -H "Authorization: Bearer ul_live_a1b2c3d4..."
{
  "status": "SUCCESS",
  "data": {
    "file_id": "6612f1a2c3b4d5e6f7890abc",
    "download_url": "https://s3.amazonaws.com/...",
    "expires_in_seconds": 300,
    "original_filename": "report.pdf"
  }
}

Next steps

Authentication

Learn about API key scopes and security best practices.

File Contexts

Understand how to configure upload pipelines.

Trust Pipeline

See every validation stage your files pass through.

API Reference

Explore the full API with request/response examples.