Files

Request presigned upload URLs

Request presigned S3 URLs for direct file uploads.

Supported File Types:

  • Documents: PDF, DOC, DOCX, CSV, TXT, XLS, XLSX
  • Images: PNG, JPG, JPEG, JPE, JFIF, JIF, GIF, WebP, BMP, TIFF, TIF, SVG, ICO, HEIC, HEIF, AVIF, APNG
  • Max file size: 1GB per file
  • Max files per request: 100 files

Upload Process:

  1. Call this endpoint with file metadata
  2. Use the returned uploadUrl with a PUT request to upload each file
  3. Include the Content-Type header matching the declared contentType
  4. File size must exactly match the declared sizeBytes

Example upload:

curl -X PUT "<uploadUrl>" \
  -H "Content-Type: application/pdf" \
  --data-binary "@floor_plan.pdf"
post/v1/files/upload-urls

Request

  • Base URL: https://api.handoff.ai
  • URL: https://api.handoff.ai/v1/files/upload-urls
  • Auth: HTTP bearer

Request body

expirationMinutesinteger

URL expiration time in minutes (default: 5, range: 1-15)

Example request

{
  "files": [
    {
      "filename": "floor_plan.pdf",
      "contentType": "application/pdf",
      "sizeBytes": 1048576
    }
  ],
  "expirationMinutes": 5
}

Response

Upload URLs generated successfully

expiresInSecondsinteger required

Seconds until the upload URLs expire

Example response

{
  "uploadUrls": [
    {
      "fileId": "550e8400-e29b-41d4-a716-446655440000",
      "filename": "floor_plan.pdf",
      "uploadUrl": "https://bucket.s3.amazonaws.com/enterprise/...",
      "expiresAt": "2024-01-15T10:30:00.000Z",
      "uploadMethod": "PUT"
    }
  ],
  "expiresInSeconds": 300
}

Changes

No recorded changes to this operation across all 1 revision of this API.