Skip to main content

Interface Extensions SDK β€” No way to upload attachments from a custom extension?

  • April 3, 2026
  • 2 replies
  • 83 views

Vadim Ciobanu
Forum|alt.badge.img+1

Hey πŸ‘‹

I've been building a custom Interface Extension using the Extensions SDK and ran into what seems like a significant limitation β€” I can't find any supported way to let users upload a file/attachment directly from within the extension UI.

What I'm trying to do:

I have a custom extension embedded in an Interface page. The workflow requires users to attach a file (e.g. a PDF or image) to a record β€” ideally triggered from a button or input inside the extension itself.

What I've tried:

  • Using a standard HTML <input type="file"> β€” the file picker opens, but there's no SDK method to then take that file and write it as an attachment to a record field.
  • Looking through the @airtable/blocks SDK docs for something like updateRecordAsync with an attachment payload β€” attachment fields require a URL, not a raw file object. There's no upload endpoint exposed through the SDK.
  • Considered uploading to a third-party storage first (e.g. S3 or Cloudinary), getting a public URL, then writing that URL to the attachment field β€” this works but feels like a significant workaround for what should be a basic operation.

The core problem:

The SDK's updateRecordAsync for attachment fields only accepts an array of objects with a url property. There is no native method to upload a binary file and get back an Airtable-hosted attachment URL. This means a seemingly simple UX β€” "click here, pick a file, it attaches to this record" β€” is essentially impossible without a separate file hosting infrastructure.

My questions:

  1. Is there something I'm missing in the SDK that allows direct file upload from an extension?
  2. Is this a known limitation, and is it on the roadmap?
  3. For those who've solved this β€” what external upload service are you routing through, and how are you handling auth/CORS within the sandboxed extension environment?

This seems like a pretty common use case for anyone building data-entry or document-management workflows inside Interfaces, so I'd love to understand if there's a pattern the community has converged on.

Thanks in advance!

2 replies

coderkid
Forum|alt.badge.img+6
  • Inspiring
  • April 3, 2026

You're correct!!! the SDK does not support direct file uploads...

This is an intentional architectural decision. Extensions run entirely client-side (in the browser).

Because of this, attachment fields don't accept raw files, they require a publicly accessible URL, which Airtable then fetches and stores internally.

So, Instead, you should do this :

1- Let the user select a file:

<input type="file" />

2- Upload the file to external storage, such as:

  • S3
  • Cloudinary
  • Uploadcare / Filestack

3- Retrieve a public or signed URL for the uploaded file

4- Attach it to the Airtable record:

table.updateRecordAsync(recordId, {
Attachments: [{ url }]
})

Β 


Greg_F
Forum|alt.badge.img+18
  • Brainy
  • May 3, 2026

Quite recently I noticed by accident that a direct attachment upload API endpoint showed up..Β https://airtable.com/developers/web/api/upload-attachmentΒ  would require PAT token but for sure an option.Β