Skip to main content
The files API stages documents ahead of quote creation. Upload once, then reference the file id in document_ids when creating a quote.

Direct upload

Send the file as multipart form data. Processing is synchronous — the response returns status ready:

Ingest by URL

Send a JSON body with a url and we download it in the background. The response is 202 with status pending:
Track completion either way:
  • Webhooks — subscribe to file.ready / file.failed (recommended).
  • PollingGET /v1/files/{id} until status is ready or failed (failure_message explains failures).

File states

Rules

  • Supported types: PDFs, images (JPEG/PNG/HEIC/TIFF), Microsoft Office documents, text, RTF, and ZIP archives. Maximum size 150 MB.
  • Single use: attaching a file to a quote consumes it. To use the same document on another quote, upload it again.
  • Files must be ready and unconsumed when referenced in document_ids, otherwise quote creation returns a 422 validation error for that entry.
  • You can also skip the files API entirely and pass document_urls directly when creating a quote.