--- title: API Media POST | Datasquirel docs description: Upload a media file via the Datasquirel API page_title: Media POST page_description: Upload images and files to your Datasquirel media storage programmatically. --- ## Overview Use the Media POST endpoint to upload one or more files to your media storage. Files are stored in the folder you specify, and image thumbnails are generated automatically. ## npm Package ```javascript import datasquirel from "@moduletrace/datasquirel"; import fs from "fs"; // Read the file and convert to base64 const fileBuffer = fs.readFileSync("./photo.jpg"); const base64 = fileBuffer.toString("base64"); const result = await datasquirel.media.add({ media: [ { name: "photo.jpg", base64: `data:image/jpeg;base64,${base64}`, }, ], folder: "profile-images", type: "image", apiKey: process.env.DATASQUIREL_API_KEY, }); console.log(result.payload); // Uploaded media object(s) ``` ## Parameters | Parameter | Type | Required | Description | |-----------|------|----------|-------------| | `media` | `array` | Yes | Array of files to upload. Each item has a `name` and `base64` string | | `folder` | `string` | No | Destination folder name. Created automatically if it does not exist | | `type` | `string` | Yes | File type — `"image"`, `"video"`, `"audio"`, or `"file"` | | `apiKey` | `string` | No | API key. Falls back to `DATASQUIREL_API_KEY` | ### media Array Items | Field | Type | Description | |-------|------|-------------| | `name` | `string` | The file name including extension (e.g. `"photo.jpg"`) | | `base64` | `string` | Base64-encoded file data. Must include the data URL prefix (e.g. `data:image/jpeg;base64,...`) | ## REST API ``` POST /api/v1/media ``` **Headers:** ``` Authorization: Bearer YOUR_API_KEY Content-Type: application/json ``` **Body:** ```json { "media": [ { "name": "photo.jpg", "base64": "data:image/jpeg;base64,/9j/4AAQSkZJRgABAQ..." } ], "folder": "profile-images", "type": "image" } ``` ## Response ```json { "success": true, "payload": [ { "id": 23, "name": "photo.jpg", "folder": "profile-images", "url": "https://your-instance.com/media/profile-images/photo.jpg" } ] } ``` ## Notes - A **Full Access** API key is required. Read-only keys cannot upload files. - Image thumbnails are generated automatically and stored alongside the original. - Uploading a file with the same name as an existing file in the same folder will overwrite it if `update: true` is passed.