Skip to main content
Files that belong to a record: a signed contract on a deal, an ID scan on a customer, a brief on a lead. Reads take attachments:view, writes attachments:configure.

Rules

  • Up to 10 MB per file. Executable and script files (.exe, .js, .sh, …) are refused. Everything else is stored as sent; the API does not inspect content.
  • The record must be readable by the credential: every call proves the record first, so a file on a record outside your reach is a 404, never a listing.
  • Files live in a private bucket keyed <workspace>/<object>/<record>/…. Nothing is served from a public URL; download_url is a signed link that expires (expires_in seconds). Mint another when you need one.
  • Deleting removes the row and, best effort, the object. The row is the source of truth.

Parity

The same attachment rows the app shows on a record. The app’s own uploads (fax documents, WhatsApp media) live in their own buckets and are not listed here.