Skip to main content
Make talks to MADIAD Hub through its generic HTTP → Make a request module — no custom app to install. Add the module to any scenario and you can publish when a Google Sheet changes, on a schedule, from a form submission, or from anything else Make can trigger on.
This guide assumes you already have an API key and at least one connected profile. If not, do the Quickstart first (5 minutes).

1. The building block: HTTP → Make a request

Every call below uses one module: HTTP → Make a request. The common settings:
Create a separate API key for Make (name it make in your dashboard). If it leaks, revoke that one key without touching your other integrations. Store it in a scenario variable or Make’s data store rather than pasting it into every module.

2. Publish a text post

Add HTTP → Make a request:
  • URLhttps://api.madiad.com/v1/posts/text
  • MethodPOST
  • Headers — add Authorization = Bearer mdc_live_…
  • Body typeRaw
  • Content typeapplication/json
  • Request content:
Text posts use JSON. Photos and video use different formats — see Publishing files below.

3. Make retries safe with an Idempotency-Key

Make re-runs a module on error or when you replay a scenario. To avoid a duplicate post, add a header whose value is stable per item — the Hub treats a repeat of the same key as the same request. Add a header: Use a value that is unique per intended post and constant across retries of that same post. Good choices: a UUID you generate once and write back to the row, or a hash of the content itself.
Never use a value that gets reused. A spreadsheet row number shifts when rows are deleted, so tomorrow’s content ends up carrying a key that yesterday’s post already claimed. The Hub answers a reused key with the ORIGINAL result and publishes nothing, so a broken key looks exactly like a successful post. Watch for the Idempotent-Replayed: true header, and see Idempotency.

4. Publish photos or video

PhotosPOST /v1/posts/photos. Set Body type to Multipart/form-data, repeat platforms[] once per platform, and attach the image through a file field mapped from a previous module (e.g. Google Drive → Download a file, or HTTP → Get a file): Already have a public image URL instead of a file? Skip the upload and send photo_urls[] as Raw JSON instead — see Send photos by URL. VideoPOST /v1/posts/video takes JSON only, not a file upload. Set Body type to Raw / application/json and pass a public video_url:

5. Handle the async response

A text or photo post to fast platforms usually returns "status": "completed". Video is asynchronous — it returns "status": "processing" and a request_id. Two ways to finish: Poll — add a Sleep module, then another HTTP → Make a request:
Wrap it in a Repeater and stop when status is completed, partial, or failed. Webhook (recommended) — add a Custom webhook module in Make, copy its address, and register it in your dashboard at hub.madiad.com/dashboard/webhooks for the post.completed event. The Hub signs each delivery with HMAC-SHA256; verify it before trusting the payload. See Webhooks.

6. Read per-platform results

With Parse response on, map the reply directly. A post can partially succeed — branch on each platform’s success, not just the top-level status:
Use a Router with a filter on success to send failures to an alert.

Example scenario: Google Sheets → all platforms

  1. Google Sheets → Watch rows (or a scheduled Search rows where status = ready).
  2. HTTP → Make a requestPOST /v1/posts/photos with profile_id, platforms[], and caption mapped from the row; Idempotency-Key = a UUID column on the row (not the row number — see the warning above).
  3. Router on the response → on success, Google Sheets → Update a row to published; on failure, send an alert.

Next steps

Per-platform fields

Override captions, titles, and options per platform.

Scheduling

Let the Hub publish at a future time for you.

Idempotency

Safe retries from any automation.

Webhooks

Get a signed callback when a post finishes.