Airtable
Render jsontoimg templates from selected Airtable records with a custom extension.
Install the jsontoimg custom extension (Airtable Blocks CLI). Map record fields to named layers, render selected records, and write assetUrl back to a URL field and/or attachment. Same /api/v1 contract as REST and n8n.
Requires an Airtable Pro or Enterprise workspace for collaborators to run custom extensions. You can develop against a base where you have creator permission.
This extension is button-driven. It does not run on record create/update. For that, use n8n or HTTP.
Install
- In Airtable, open Extensions → Build a custom extension.
- Install the CLI:
npm install -g @airtable/blocks-cli block init <baseId>/<blockId> .then copy the jsontoimgfrontend/sources into the project (or clone the airtable app and point.block/remote.jsonat your extension id).block run— the CLI listens athttps://localhost:9000. That URL is not a webpage (GET /returns Not found). Paste it into Edit extension.
First load: accept the self-signed certificate if the browser warns, then return to Airtable.
block release publishes the extension to its installations. Marketplace block submit is not required.
Credentials
- Create an API key under Integrations → API keys.
- In the extension, open settings (gear).
- Paste the jsontoimg API key. For attachment/gallery write-back, also paste an Airtable PAT with
data.records:write. Leave Base URL blank forhttps://app.jsontoimg.com(a trailing/api/v1is stripped). - Click Test connection.
The keys are stored in the extension globalConfig. Collaborators who can edit the base can read them. Use dedicated keys you can revoke.
First render
- Pick a table, template, and format.
- Map each named layer to an Airtable field (text layers stringify; image layers take the first attachment URL or an
http(s)string). - Pick a URL field and/or attachment field for write-back.
- Select records in the grid (cap 50) → Render selected.
Each row mints POST /api/v1/img/sign, writes the signed GET /api/v1/img/{template} URL to the URL field, then downloads that URL (retries HTTP 503) and uploads bytes to the attachment field (POST content.airtable.com/.../uploadAttachment, 5 MB cap).
Limits
- 50 selected records per run
- Custom apps cannot subscribe to create/update; use n8n or HTTP for automations
- Opening
https://localhost:9000in a normal browser tab will show Not found — that is expected