Auto-publish scheduled Instagram posts from Airtable

By General Input

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.

Integrations

  • Airtable
  • Instagram

Type

Deterministic Code

Categories

  • Marketing
  • Operations

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.

Related prompts

Explore more prompts
Creator roster board for rebook, test, or pause callsRun your nutrition clients' weekly meal plans from one consoleBenchmark your Instagram account against rival brandsInstagram UGC rights tracker and repost approval boardInstagram comment and DM triage inbox for your teamA verification desk for every document your team scansBrowse and shortlist creators without burning audit creditsGlobal operations exposure map for your sites and suppliersDeal sourcing kanban board for your Harmonic saved searchesProof client shoots and hand off the delivery album in one place