<!-- Markdown twin of https://pixelvault.dev/integrations/make/ -->

[Integrations](/integrations/) / Make

# Turn images into public URLs in Make

Instagram and other modules need a direct image link, and a Google Drive share link is not one. Download the file in Make, upload it to PixelVault, and use the public CDN URL it returns in the next module.

**Status:** these steps and the downloadable scenario have not yet been verified in Make. Check the module field names against your Make version and run a test before scheduling anything.

## Download the scenario

-   [Google Drive → PixelVault → public image URL (Make blueprint)](/workflows/make-google-drive-to-pixelvault.json)

In Make, create a scenario, open the menu next to **Save**, and choose **Import Blueprint**. After importing, open the Google Drive module to connect your account and choose a file, then in the HTTP module re-map the file’s data and file name from the Drive module, and replace the placeholder API key. If the import fails or a field looks wrong, build the two modules below by hand instead.

## Build it by hand

1.  Create a PixelVault account and copy a project API key from your [dashboard](/dashboard/).
2.  Add the **Google Drive** module that downloads a file (it appears as “Download a File”, or “Get a File” in some Make versions, and must return the file contents, not only metadata), connect your Google account, and choose the image. Use a file intended for public hosting.
3.  Add **HTTP → Make a request** after it (Make may label the older version “HTTP (legacy)” and suggest upgrading; the settings below are for the legacy module that the downloadable scenario uses) and set:
    -   URL: `https://api.pixelvault.dev/v1/images`
    -   Method: `POST`
    -   Header: name `Authorization`, value `Bearer YOUR_PIXELVAULT_API_KEY`
    -   Body type: `Multipart/form-data`
    -   Parse response: `Yes`
    -   One field: key `file`, type **File**, with the Drive module’s file data and file name mapped in.
4.  Run the scenario once. The API responds with `{"data": {"url": "..."}}`, and Make puts the parsed response under its own `data` property, so the URL is nested twice. In the mapping panel, pick `data` → `data` → `url` from the HTTP module, which looks like `{{2.data.data.url}}` (module number may differ in your scenario). If you are unsure, run once and choose the field from the panel.

The file field must be a real file, not text. A `400` saying the file is missing means the `file` field was not sent as a file; check its type and mapping. A `400` saying the file is invalid means the downloaded bytes are not a supported image, so check the Drive file and its type.

Always send your API key: keyless uploads expire, and the steps above use an authenticated upload for durable storage. Hosted images are public, so choose assets intended for publication. Your key is stored in the scenario in plain text, so do not share an exported blueprint after you have pasted a real key into it.

## Import from a URL instead

If your source already has a public HTTPS image URL, skip the download. In **HTTP → Make a request**, use the same URL, method and header, set Body type to `Raw`, Content type to `JSON (application/json)`, and send `{"url": "https://example.com/image.jpg", "folder": "make"}`. If you map the URL from another module, keep the mapping inside the quotes and make sure it contains no quote characters. Import while the source URL is still valid.

## Use the result with Instagram

Pass the returned URL to the Instagram module’s photo URL field. Start with a JPEG that meets Meta’s current size and aspect-ratio requirements. Hosting does not convert or validate the image for Instagram, and the URL must stay reachable until the post is published. This integration hosts images, not videos.

## Check before scheduling

-   Open the returned URL in a private window and confirm it serves the image.
-   Run one test with your publishing module before turning on a schedule.
-   For a 401 response, check the header and the `Bearer` prefix. For 429, check account limits before retrying.

References: [Make multipart/form-data](https://developers.make.com/custom-apps-documentation/component-blocks/api/multipart-form-data) and [Meta content publishing](https://developers.facebook.com/docs/instagram-platform/instagram-api-with-instagram-login/content-publishing).
