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