In this guide

Upload a File

Put a photo, video, PDF or any file from the phone on a page.

Action referenceCreate

What this action does #

First, connect Notion in Services. Then open Actions → + → Notion and choose Upload a File.

To find this direct request action, choose Every Notion endpoint in the integration’s picker. The setup guide also explains the dedicated forms for common tasks.

What a run does

Running or testing this action creates something in your connected service.

More about this action

The file comes from the shortcut — a photo just taken, one picked from the library, a file from Files, whatever the share sheet hands over — or is asked for with a picker as the action runs. It goes up to Notion first, then onto the page as the block its type calls for: a photo as an image, a video as a video, a PDF as a PDF, anything else as a file.

Up to 20 MB, or 5 MB on a free Notion workspace.

Inputs to fill in #

Open an input to choose its value. Keep a fixed value with Text, receive it from Shortcuts, ask when the action runs, or use an Earlier Step. Read how input sources work.

Page

RequiredText

The page to add to. A block's ID works too — the file goes inside it.

Example value (replace with your own):
248104cd-477e-80a9-8a1b-e4f8b0f8c1d2

File

RequiredFile

A photo, video, audio, PDF, document, archive or 3D model — whatever Notion takes.

Accepted file types: gif, heic, jpeg, jpg, png, svg, tif, tiff, webp, ico, bmp, avif, apng, amv, asf, wmv, avi, f4v, flv, gifv, m4v, mp4, mkv, webm, mov, qt, mpeg, ogv, 3gp, 3g2, aac, adts, mid, midi, mp3, mpga, m4a, m4b, oga, ogg, opus, wav, wma, weba, flac, pdf, txt, csv, json, js, ts, tsx, py, doc, dot, docx, dotx, xls, xlt, xla, xlsx, xltx, ppt, pot, pps, ppa, pptx, potx, rtf, md, markdown, html, htm, epub, xml, css, odt, ods, odp, ics, yaml, yml, tsv, zip, gz, gzip, tar, 7z, bz2, rar, dwg, dxf, dwf, rvt, rfa, fbx, 3dm, step, stp, iges, igs, stl, obj, 3mf, gltf, glb, dae, usdz

Caption

OptionalFormatted text

Markdown works: **bold**, *italic*, ~~struck~~, `code`, [a link](https://…), $E=mc^2$, <span color="red">colour</span>, <span underline="true">underline</span>, <mention-page url="…"/>, <mention-user url="user://…"/>, <mention-date start="tomorrow"/>. Put a \ before a character to keep it as it is.

Where

OptionalChoice

start puts it at the top of the page, end at the bottom, after_block below the block given next. Leave empty for the bottom.

Choices: start, end, after_block

After Block

OptionalText

The block to add it below. Only read when Where is after_block.

Example value (replace with your own):
18f2b39-2664-80c1-b8e2-000000000000

What comes back #

In the action editor, open Output → Returned Value to choose fields for your shortcut. These are the response fields described by the app; a service may omit an optional field or return an empty list. JSON File contains the full response.

Returned fieldTypeMeaning
resultsarrayA list of values.
results[].idstringThe new block's ID.
results[].typestringimage, video, audio, pdf or file.

Run it from Shortcuts #

  1. Give the action a recognizable name and tap Save.
  2. In Apple Shortcuts, add Shortcutify’s Execute Action and select the saved action.
  3. Supply any Param or File slots you bound in the inputs, then run the shortcut.

If the result is unexpected, open Logs in Shortcutify, select the run, and inspect this step’s inputs and response.

Advanced reference #

Request, permissions, and identifiers

Request: PATCH https://api.notion.com/v1/blocks/{block_id}/children

Action identifier: notion.blocks.uploadFile.v1

No additional per-action permissions are declared in the app’s catalog. The integration’s connection and account access rules still apply.

InputRequest keyLocation
Pageblock_idpath
Filefilebody
Captioncaptionbody
Whereposition.typebody
After Blockposition.after_block.idbody

Notion API reference