Files
Upload, manage, attach, and analyze files
14 tools
Upload Files
POST /v1/tools/podio/uploadFiles
Upload files INTO Podio and attach them to a target object in ONE call. attach_to is REQUIRED — every file is immediately attached to the given item, task, or comment. The target must already exist: to put files on a new item, call podio_createItem first, then this tool. Each new file needs base64 content OR a url (mutually exclusive). To upload a generated PDF/chart/Excel, pass its downloadUrl as the url. existing_file_ids attaches already-uploaded UNATTACHED numeric Podio file IDs (e.g. from podio_copyFile) to the same target. A Podio file can only be attached ONCE — file_ids returned by this tool are already attached and cannot be reused. To put the same file on multiple items: attach to the first item here, then for each extra item call podio_copyFile and pass the new ID via existing_file_ids. Status and space attachments are not supported here — they are only available via the REST/MCP API.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
files | array | optional | New files to upload. Each needs filename plus either url or content. Optional if existing_file_ids is provided. |
existing_file_ids | array | optional | Already-uploaded UNATTACHED numeric Podio file IDs to attach to the same target (e.g. output of podio_copyFile, or files a previous call uploaded but failed to attach). |
attach_to | object | required | REQUIRED. The existing Podio object every file will be attached to. |
silent | boolean | optional | Suppress Podio notifications |
Request
curl -X POST https://api.syncello.io/v1/tools/podio/uploadFiles \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json"
-d '{
"attach_to": "..."
}'Response
{
"attached_to": {
"ref_type": "item",
"ref_id": 3141592653
},
"files": [
{
"file_id": 988776601,
"filename": "deal-summary.pdf",
"status": "attached"
}
]
} Try It
Try it
Sign in to execute this tool
Sign InUpload File
POST /v1/tools/podio/uploadFile
Upload one or more NEW files INTO Podio WITHOUT attaching them. Accepts base64 content OR url per file (mutually exclusive). Returns Podio file objects with numeric file_id. Each file must then be attached to an object within a few hours (podio_attachFile, or file_ids in createItem/updateItem) or Podio garbage-collects it. This is the low-level two-step primitive for API integrations; podio_uploadFiles uploads and attaches in one call.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
files | array | required | Array of files to upload. Each needs filename plus either url or content. |
Request
curl -X POST https://api.syncello.io/v1/tools/podio/uploadFile \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json"
-d '{
"files": "..."
}'Response
{
"files": [
{
"file_id": 988776601,
"name": "deal-summary.pdf",
"mimetype": "application/pdf",
"size": 84213,
"link": "https://files.podio.com/988776601",
"hosted_by": "podio"
}
]
} Try It
Try it
Sign in to execute this tool
Sign InAttach File
POST /v1/tools/podio/attachFile
Attach a previously uploaded file to a Podio object. Requires a numeric Podio file_id from podio_uploadFile (not a UUID from non-Podio tools). A file can only be attached to ONE object — attaching the same file_id again fails with "file.already_attached"; use podio_copyFile to mint a fresh unattached file_id for additional targets. Supports ref_type: "item", "task", "comment", "status", or "space".
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
file_id | number | required | Numeric Podio file ID returned from uploadFile. Must be a number, NOT a UUID. |
ref_type | string | required | Object type Values: item, comment, status, space, task |
ref_id | number | required | Object ID |
silent | boolean | optional | Suppress notifications |
Request
curl -X POST https://api.syncello.io/v1/tools/podio/attachFile \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json"
-d '{
"file_id": "123",
"ref_type": "item",
"ref_id": "123"
}'Response
{
"attached": true,
"file_id": 988776602,
"ref_type": "item",
"ref_id": 3141592653
} Try It
Try it
Sign in to execute this tool
Sign InDownload File
POST /v1/tools/podio/downloadFile
Download a single Podio file and return its metadata plus a temporary download link (expires in 1 hour). Use getFilesOnApp, getFilesOnSpace, or getItem to find file IDs first. The download_url can be passed to podio_uploadFiles, tape_uploadFiles, or slack_uploadFile to move the file elsewhere.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
file_id | number | required | Podio file ID (from getFilesOnApp, getFilesOnSpace, or a getItem files response) |
Request
curl -X POST https://api.syncello.io/v1/tools/podio/downloadFile \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json"
-d '{
"file_id": "123"
}'Response
{
"file_id": 988776601,
"name": "deal-summary.pdf",
"download_url": "https://api.syncello.io/v1/files/7f3c1e90-2ab4-4d51-9c8e-1f0a2b3c4d5e/download?organizationId=d4e5f6a7-b8c9-0123-def0-123456789012&expires=1782000000&sig=EXAMPLE_SIGNATURE",
"expires_in": 3600,
"expires_at": "2026-08-05T15:35:00.000Z",
"mimetype": "application/pdf",
"size": 84213,
"size_human": "82 KB"
} Try It
Try it
Sign in to execute this tool
Sign InGet File
POST /v1/tools/podio/getFile
Get file metadata (name, mimetype, size, created_on, link) by ID. Use getFilesOnApp or getFilesOnSpace to find file_ids first. Does not return file content — use analyzeFile (source: "podio") for that.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
file_id | number | required | File ID (from getFilesOnApp, getFilesOnSpace, or a getItem files_only response) |
Request
curl -X POST https://api.syncello.io/v1/tools/podio/getFile \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json"
-d '{
"file_id": "123"
}'Response
{
"file_id": 988776601,
"name": "deal-summary.pdf",
"mimetype": "application/pdf",
"size": 84213,
"link": "https://files.podio.com/988776601",
"hosted_by": "podio",
"description": null,
"created_on": "2026-07-01 14:35:00",
"created_by": {
"user_id": 1122334,
"name": "Jane Doe",
"type": "user"
},
"thumbnail_link": "https://files.podio.com/988776601",
"rights": [
"view",
"delete"
]
} Try It
Try it
Sign in to execute this tool
Sign InGet Files On App
POST /v1/tools/podio/getFilesOnApp
List files attached to items in an app. Use filetype "image" for images, "application" for PDFs/docs. Faster than getFilesOnSpace when you know the app.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
app_id | number | required | App ID |
attached_to | string | optional | Filter by object type Values: item, status, task, space |
filetype | string | optional | Filter by file type Values: image, application, video, text, audio |
limit | number | optional | Max results (default: 20) |
offset | number | optional | Pagination offset |
sort_by | string | optional | Sort field Values: name, created_on |
sort_desc | boolean | optional | Descending order |
Request
curl -X POST https://api.syncello.io/v1/tools/podio/getFilesOnApp \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json"
-d '{
"app_id": "123"
}'Response
[
{
"file_id": 988776601,
"name": "deal-summary.pdf",
"mimetype": "application/pdf",
"size": 84213,
"link": "https://files.podio.com/988776601",
"hosted_by": "podio",
"description": null,
"created_on": "2026-07-01 14:35:00",
"created_by": {
"user_id": 1122334,
"name": "Jane Doe",
"type": "user"
},
"context": {
"type": "item",
"id": 3141592653,
"title": "Northwind Traders"
}
}
] Try It
Try it
Sign in to execute this tool
Sign InGet Files On Space
POST /v1/tools/podio/getFilesOnSpace
List files in a workspace with optional filters. Returns file_id, name, mimetype, size for each file. Use filetype "image" for images, "application" for PDFs/docs.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
space_id | number | required | Space ID |
attached_to | string | optional | Filter by object type Values: item, status, task, space |
filetype | string | optional | Filter by file type Values: image, application, video, text, audio |
limit | number | optional | Max results (default: 20) |
offset | number | optional | Pagination offset |
sort_by | string | optional | Sort field Values: name, created_on |
sort_desc | boolean | optional | Descending order |
Request
curl -X POST https://api.syncello.io/v1/tools/podio/getFilesOnSpace \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json"
-d '{
"space_id": "123"
}'Response
[
{
"file_id": 988776601,
"name": "deal-summary.pdf",
"mimetype": "application/pdf",
"size": 84213,
"link": "https://files.podio.com/988776601",
"hosted_by": "podio",
"description": null,
"created_on": "2026-07-01 14:35:00",
"created_by": {
"user_id": 1122334,
"name": "Jane Doe",
"type": "user"
},
"context": {
"type": "item",
"id": 3141592653,
"title": "Northwind Traders"
}
}
] Try It
Try it
Sign in to execute this tool
Sign InCopy File
POST /v1/tools/podio/copyFile
Copy an existing file so it can be attached elsewhere. Returns a new UNATTACHED file_id. The copy external_id will be "file_{original_id}". Use when you need the same file on multiple items: copy, then pass the new file_id to podio_uploadFiles via existing_file_ids (with attach_to), or to createItem/updateItem file_ids.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
file_id | number | required | File ID to copy |
Request
curl -X POST https://api.syncello.io/v1/tools/podio/copyFile \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json"
-d '{
"file_id": "123"
}'Response
{
"file_id": 988776602
} Try It
Try it
Sign in to execute this tool
Sign InUpdate File
POST /v1/tools/podio/updateFile
Update file metadata (name and description). Both fields are required by the Podio API even if only changing one — use getFile first to get current values. Does not update file content.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
file_id | number | required | File ID |
name | string | required | New filename (required even if unchanged — get current value from getFile) |
description | string | required | New description (required even if unchanged — get current value from getFile) |
Request
curl -X POST https://api.syncello.io/v1/tools/podio/updateFile \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json"
-d '{
"file_id": "123",
"name": "example",
"description": "example"
}'Response
{
"updated": true,
"file_id": 988776601
} Try It
Try it
Sign in to execute this tool
Sign InDelete File
POST /v1/tools/podio/deleteFile
Permanently delete a file by ID. Cannot be undone. Also removes the file from any objects it is attached to.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
file_id | number | required | File ID |
hook | boolean | optional | Execute hooks (default: true) |
Request
curl -X POST https://api.syncello.io/v1/tools/podio/deleteFile \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json"
-d '{
"file_id": "123"
}'Response
{
"deleted": true,
"file_id": 988776601
} Try It
Try it
Sign in to execute this tool
Sign InReplace File
POST /v1/tools/podio/replaceFile
Replace an existing attached file with a new one. The new file takes the position of the old file on whatever object it was attached to. Only files with type "attachment" can be replaced. The new_file_id must be an uploaded/copied file that is not yet attached anywhere.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
old_file_id | number | required | File ID of the currently-attached file to replace |
new_file_id | number | required | File ID of the replacement file (must already be uploaded or copied, and not yet attached) |
Request
curl -X POST https://api.syncello.io/v1/tools/podio/replaceFile \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json"
-d '{
"old_file_id": "123",
"new_file_id": "123"
}'Response
{
"replaced": true,
"old_file_id": 988776601,
"new_file_id": 988776603
} Try It
Try it
Sign in to execute this tool
Sign InCopy Item Files
POST /v1/tools/podio/copyItemFiles
Copy files from one Podio item to another. By default copies all files; pass file_ids to copy specific ones. Duplicate filenames on the target are skipped unless overwrite_duplicates is true, which replaces the target's copy with the source's version.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
source_item_id | number | required | Item ID to copy files from |
target_item_id | number | required | Item ID to copy files to |
file_ids | array | optional | Specific file IDs to copy (omit to copy all files from source) |
overwrite_duplicates | boolean | optional | When target already has a file with the same name: false (default) skips it, true replaces it |
silent | boolean | optional | Suppress Podio notifications (default: false) |
Request
curl -X POST https://api.syncello.io/v1/tools/podio/copyItemFiles \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json"
-d '{
"source_item_id": "123",
"target_item_id": "123"
}'Response
{
"source_item_id": 3141592653,
"target_item_id": 3141592800,
"copied": [
{
"file_id": 988776601,
"new_file_id": 988776604,
"name": "deal-summary.pdf"
}
],
"replaced": [],
"skipped": []
} Try It
Try it
Sign in to execute this tool
Sign InFile To Markdown
POST /v1/tools/podio/fileToMarkdown
Convert a Podio file to markdown text. Supports PDF, DOCX, XLSX, PPTX, and images (JPG, PNG, GIF, WEBP). Returns the extracted text content as markdown. Use getFilesOnApp, getFilesOnSpace, or getItem to find file IDs first.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
file_id | number | required | Podio file ID to convert |
Request
curl -X POST https://api.syncello.io/v1/tools/podio/fileToMarkdown \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json"
-d '{
"file_id": "123"
}'Response
"# Deal Summary\n\nNorthwind Traders is evaluating the enterprise plan.\nNext step: contract review by legal." Try It
Try it
Sign in to execute this tool
Sign In