Auto-publish scheduled Instagram posts from Airtable
Turn your Airtable content calendar into a hands-off Instagram publisher. Every 15 minutes, due rows post themselves and the calendar updates with the result.
Build a code workflow that publishes scheduled Instagram posts from an Airtable content calendar. Trigger: cron every 15 minutes.
Step 1. Use Airtable List Records against my Content Calendar table. Filter to rows where status is exactly "Ready" and scheduled_at is less than or equal to now. Assume the table has these fields: status (single select: Ready, Published, Failed), scheduled_at (dateTime), caption (long text), image_url (URL), video_url (URL), media_type (single select: image, video, reel), instagram_media_id (single line text), published_at (dateTime), notes (long text). Base id, table id, and Instagram IG User ID should be workflow inputs.
Step 2. Before processing rows, call Instagram Check Publishing Limit for the account. If the account has already used its 50-posts-in-24-hours quota, stop the run early and exit cleanly (do not fail the row). If quota is available, iterate rows one at a time so a single failure does not halt the batch.
Step 3. For each due row, call Instagram Create Media Container. Pass image_url when media_type is image, otherwise pass video_url and set media_type to VIDEO or REELS to match the row. Include the row's caption. Capture the returned creation id.
Step 4. If media_type is video or reel, poll Instagram Get Media on the creation id, requesting the status_code field, every 5 seconds up to a 2-minute budget, until status_code returns FINISHED. If it returns ERROR or EXPIRED, treat this as a failure. For image containers, skip the poll and go straight to publish.
Step 5. Call Instagram Publish Media with the creation id. Capture the returned instagram media id.
Step 6. On success, call Airtable Update Record on that row: set status to "Published", write the returned instagram media id into instagram_media_id, and stamp published_at with the current timestamp.
Step 7. On any failure during steps 3 to 5 (container error, poll timeout, publish error), call Airtable Update Record on that row: set status to "Failed" and write the error message into notes. Do not throw. Move on to the next row.
Notes: Instagram publishing is capped at 50 posts per rolling 24 hours per account. Media URLs must be publicly reachable by Meta. Only Instagram Business or Creator accounts can publish via the API. Keep the flow deterministic, no LLM calls in the loop.
Additional information
What does this prompt do?
- Watches your Airtable Content Calendar every 15 minutes and picks up any row marked Ready with a scheduled time in the past.
- Publishes the row's photo, video, or reel to Instagram using the caption and media link from the calendar.
- Writes the result back to the same row: status flips to Published, the Instagram post link is saved, and the published time is stamped.
- If a post fails or the daily posting quota is hit, the row is marked Failed with the reason so you can review it.
What do I need to use this?
- An Airtable base with a Content Calendar table that has columns for status, scheduled time, caption, and a media URL.
- An Instagram Business or Creator account connected through Facebook, with permission to publish content.
- Publicly reachable image or video links in the calendar (Instagram cannot pull from private storage).
How can I customize it?
- Change how often it checks the calendar, from every few minutes to once an hour.
- Rename the status values or add extra filters, for example only publishing rows tagged with a specific brand or channel.
- Add a Slack or email notification whenever a post fails so your team sees it right away.
Frequently asked questions
Do I need a paid Airtable plan?
Does this work with a personal Instagram account?
Can it post reels and videos, not just photos?
What happens if Instagram is at its daily posting limit?
How do I stop a post from going out?
Related templates
Stop babysitting your Instagram calendar.
Connect Airtable and Instagram once, and Geni publishes every scheduled post for you on time.