Skip to main content

Overview

Aifano accepts documents via public URLs, presigned URLs, or direct file uploads. Uploaded files receive an aifano:// reference that can be used across all endpoints.

Input Methods

Public URL

Pass any publicly accessible URL directly:
{
  "input": "https://example.com/report.pdf"
}

Presigned URL

Use presigned URLs from S3, GCS, Azure Blob, or any cloud storage:
{
  "input": "https://s3.amazonaws.com/bucket/doc.pdf?X-Amz-Signature=..."
}

Aifano File Reference

Upload a file first, then use the returned aifano:// reference:
{
  "input": "aifano://abc123def456.pdf"
}

Job Reference

Reuse results from a previous job to skip re-processing:
{
  "input": "jobid://job_abc123"
}
Using jobid:// references with Extract skips the parsing step entirely, saving time and credits when you’ve already parsed a document.

Uploading Files

Upload documents via POST /upload with multipart form data:
curl -X POST "https://platform.aifano.com/upload" \
  -H "Authorization: Bearer $AIFANO_API_KEY" \
  -F "file=@/path/to/document.pdf"

Upload Response

{
  "file_id": "aifano://abc123def456.pdf",
  "presigned_url": "https://storage.aifano.com/..."
}

Supported File Types

FormatExtensionsNotes
PDF.pdfFull support including scanned documents
Images.png, .jpg, .jpeg, .tiffOCR applied automatically
Word.docxMicrosoft Word documents
PowerPoint.pptxPresentation slides

File Size Limits

LimitValue
Maximum file size50 MB
Maximum pages (sync)Recommended < 50 pages
Maximum pages (async)No hard limit
For documents over 50 pages, use the async endpoints (/parse_async, /extract_async, etc.) to avoid request timeouts.

File Extension Override

If your file URL doesn’t have a recognizable extension, specify it explicitly:
curl -X POST "https://platform.aifano.com/upload?extension=pdf" \
  -H "Authorization: Bearer $AIFANO_API_KEY" \
  -F "file=@document-without-extension"

Best Practices

Upload once, then use the aifano:// reference for parse, extract, split, and edit. This avoids re-uploading the same file.
If you’ve already parsed a document and want to extract different data, use jobid://job_id as input to skip the parsing step.
Check that your file extension is in the supported list before uploading to avoid 400 errors.