Items
Create, read, update, and delete items in apps
13 tools
Create Item
POST /v1/tools/podio/createItem
Create a new item in a Podio app. Returns item_id and link. IMPORTANT: If creating 2+ items, use podio_batchCreateItems instead — it is faster and validates all items upfront. When presenting the result to the user, always include the link so they can navigate directly to the new item in Podio. PREREQUISITE: Call podio_getApp(app_id, fields_only: true) first to get field IDs, types, and category option IDs — do NOT guess these values. WARNING: The INPUT format for creating items is DIFFERENT from the response format you see in getItem. getItem returns values wrapped in {"value":...} but createItem uses RAW values — do NOT copy the getItem format. Field values are keyed by numeric field_id. Input formats: text="string", number=123, category=option_id, [ids], "text", or ["text1","text2"], date={"start":"YYYY-MM-DD HH:MM:SS"} (time REQUIRED, use 00:00:00; WRONG: "2024-01-15"), money={"value":"100.00","currency":"USD"}, app=item_id or [item_ids], contact=profile_id or [profile_ids] (NEVER use user_id — it causes a 404; get profile_id from getUserStatus or getContacts), phone/email=[{"type":"work","value":"..."}], embed="url" (auto-coerced to Podio format), image=file_id or "https://url" for one image, or an array [file_id_or_url, ...] for multiple images (URLs are auto-uploaded — no need to call uploadFiles first), location="address string", progress=0-100, duration=seconds.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
app_id | number | required | App ID (from getApp, getAppsBySpace, or platform context) |
fields | object | required | Field values keyed by field_id (numeric, from getApp). IMPORTANT: Use RAW values, not the {"value":...} wrapper format you see in getItem responses. Formats: text="string", number=123, category=option_id, [ids], "text", or ["text1","text2"] (from getApp config.settings.options), date={"start":"YYYY-MM-DD HH:MM:SS"} (time REQUIRED, use 00:00:00 for date-only), money={"value":"100.00","currency":"USD"}, app=item_id or [item_ids], contact=profile_id or [profile_ids] (NEVER use user_id — it causes a 404; get profile_id from getUserStatus or getContacts), phone/email=[{"type":"work","value":"..."}] (types: home, main, mobile, work, other), embed="url" (auto-coerced to Podio format), image=file_id or "https://url" for one image, or an array [file_id_or_url, ...] for multiple images (URLs are auto-uploaded — no need to call uploadFiles first), location="address string", progress=0-100, duration=seconds. |
external_id | string | optional | Optional external reference ID for integrations |
file_ids | array | optional | File IDs or URLs to attach. URLs (https://...) are auto-uploaded. Numeric IDs can ONLY be NEW/unattached files — use podio_copyFile to get a fresh file_id from an existing file. Do NOT pass file_ids returned by podio_uploadFiles (those are already attached). To add files to an item that already exists, prefer podio_uploadFiles with attach_to. |
tags | array | optional | Tags to add to the item |
hook | boolean | optional | Execute hooks (default: true) |
silent | boolean | optional | Suppress notifications |
id_only | boolean | optional | Return only item_id (default: true). Set to false only if full item data is needed for subsequent steps. |
Flags
| Name | Type | Description |
|---|---|---|
id_only | boolean | Return only item_id (default: true). Set to false only if full item data is needed for subsequent steps. |
silent | boolean | Suppress notifications |
hook | boolean | Execute hooks (default: true) |
Request
curl -X POST https://api.syncello.io/v1/tools/podio/createItem \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json"
-d '{
"app_id": "123",
"fields": "..."
}'Response
{
"item_id": 3141592653,
"link": "https://podio.com/acme-corp/deals/items/1"
} Try It
Try it
Sign in to execute this tool
Sign InGet Item
POST /v1/tools/podio/getItem
Retrieve a Podio item by item_id or Podio URL. Returns a compact summary: item header (item_id, title, link, created_by, tags) + fields as {"Label": "formatted value"} — no field config (use getApp for that). Use field_ids to fetch specific fields only. Set verbose=true to get the full raw Podio API response (discouraged — very large). To find items by field criteria (status, date, etc.) use podio_filterItems; to search by name/keyword across apps use podio_searchPodio.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
item_id | number | optional | Global item ID (from filterItems, platform context, or createItem). Not the number from a Podio URL. |
podio_url | string | optional | A Podio item URL (e.g. https://podio.com/org/workspace/apps/app-name/items/123). Use this when the user pastes a link — the number in the URL is an app_item_id, not item_id. The tool resolves the slug and fetches the item automatically. |
field_ids | array | optional | Filter to specific fields by field_id (number) or external_id (string) |
field_types | string | optional | Filter by field type: all (default), basic (exclude calculations), calculation (only calculations) Values: all, basic, calculation |
files_only | boolean | optional | Return files only |
verbose | boolean | optional | Return full raw Podio response (discouraged) |
Flags
| Name | Type | Description |
|---|---|---|
field_ids | array | Filter to specific fields by field_id (number) or external_id (string) |
field_types | string | Filter by field type: all (default), basic (exclude calculations), calculation (only calculations) |
files_only | boolean | Return files only |
verbose | boolean | Return full raw Podio response (discouraged) |
Request
curl -X POST https://api.syncello.io/v1/tools/podio/getItem \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json"Response
{
"item_id": 3141592653,
"app_item_id": 1,
"title": "Northwind Traders",
"link": "https://podio.com/acme-corp/deals/items/1",
"created_by": {
"user_id": 1122334,
"name": "Jane Doe"
},
"created_on": "2026-07-01 14:30:00",
"tags": [],
"fields": [
{
"field_id": 261000001,
"external_id": "company-name",
"label": "Company Name",
"type": "text",
"value": "Northwind Traders"
},
{
"field_id": 261000002,
"external_id": "stage",
"label": "Stage",
"type": "category",
"value": [
{
"id": 2,
"text": "Negotiation"
}
]
},
{
"field_id": 261000003,
"external_id": "deal-value",
"label": "Deal Value",
"type": "money",
"value": {
"value": "25000.0000",
"currency": "USD"
}
},
{
"field_id": 261000004,
"external_id": "close-date",
"label": "Close Date",
"type": "date",
"value": {
"start": "2026-08-15",
"end": null
}
},
{
"field_id": 261000005,
"external_id": "owner",
"label": "Owner",
"type": "contact",
"value": [
{
"user_id": 1122334,
"name": "Jane Doe"
}
]
}
]
} Try It
Try it
Sign in to execute this tool
Sign InUpdate Item
POST /v1/tools/podio/updateItem
Update field values on an existing Podio item. Only needs item_id — do NOT pass app_id (it is fetched internally). IMPORTANT: If updating 2+ items, use podio_batchUpdateItems instead — it is faster and validates all items upfront. PREREQUISITE: Call podio_getApp first to get field IDs and types; call podio_getItem to see current values. Do NOT guess field IDs. WARNING: The INPUT format is DIFFERENT from the getItem response format. getItem returns values wrapped in {"value":...} but updateItem uses RAW values — do NOT copy the getItem format. Two modes: multi-field (pass "fields" object with field_id keys) or single-field optimized (pass "field_id" + "field_value"). Only specified fields are changed. Input formats: text="string", number=123, category=option_id, [ids], "text", or ["text1","text2"], date={"start":"YYYY-MM-DD HH:MM:SS"} (time REQUIRED, use 00:00:00; WRONG: "2024-01-15"), money={"value":"100.00","currency":"USD"}, app=item_id or [item_ids], contact=profile_id or [profile_ids] (NEVER use user_id — it causes a 404; get profile_id from getUserStatus or getContacts), phone/email=[{"type":"work","value":"..."}], embed="url" (auto-coerced to Podio format), image=file_id or "https://url" for one image, or an array [file_id_or_url, ...] for multiple images (URLs are auto-uploaded — no need to call uploadFiles first), location="address string", progress=0-100, duration=seconds.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
item_id | number | required | Item ID to update (from filterItems, getItem, platform context, or a previous createItem response) |
fields | object | optional | Multi-field update: field values keyed by field_id (numeric, from getApp). IMPORTANT: Use RAW values, not the {"value":...} wrapper format from getItem responses. Only specified fields are changed. Formats: text="string", number=123, category=option_id, [ids], "text", or ["text1","text2"], date={"start":"YYYY-MM-DD HH:MM:SS"} (time REQUIRED, use 00:00:00 for date-only), money={"value":"100.00","currency":"USD"}, app=item_id or [item_ids], contact=profile_id or [profile_ids] (NEVER use user_id — it causes a 404; get profile_id from getUserStatus or getContacts), phone/email=[{"type":"work","value":"..."}], embed="url" (auto-coerced to Podio format), image=file_id or "https://url" for one image, or an array [file_id_or_url, ...] for multiple images (URLs are auto-uploaded — no need to call uploadFiles first), location="address string". |
field_id | number | optional | Single-field update (optimized): the field_id to update. Must be used together with field_value. More efficient than multi-field for changing one value. |
field_value | any | optional | The value for the single field specified by field_id. Format depends on field type (same as createItem). |
file_ids | array | optional | File IDs or URLs to attach. URLs (https://...) are auto-uploaded. Numeric IDs can ONLY be NEW/unattached files — use podio_copyFile to get a fresh file_id from an existing file. Do NOT pass file_ids returned by podio_uploadFiles (those are already attached). To add files to an item that already exists, prefer podio_uploadFiles with attach_to. |
tags | array | optional | Tags to set on the item (replaces existing tags) |
hook | boolean | optional | Execute hooks (default: true) |
silent | boolean | optional | Suppress notifications |
id_only | boolean | optional | Return only item_id |
Flags
| Name | Type | Description |
|---|---|---|
id_only | boolean | Return only item_id |
silent | boolean | Suppress notifications |
hook | boolean | Execute hooks (default: true) |
Request
curl -X POST https://api.syncello.io/v1/tools/podio/updateItem \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json"
-d '{
"item_id": "123"
}'Response
{
"revision": 1,
"title": "Northwind Traders"
} Try It
Try it
Sign in to execute this tool
Sign InDelete Item
POST /v1/tools/podio/deleteItem
Permanently delete a Podio item -- cannot be undone. Verify item_id before calling; consider using podio_getItem first to confirm. Set silent: true to prevent notifications, hook: false to skip automations.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
item_id | number | required | Item ID to delete (from filterItems, getItem, or platform context). Verify before calling. |
hook | boolean | optional | Execute hooks (default: true) |
silent | boolean | optional | Suppress notifications |
Flags
| Name | Type | Description |
|---|---|---|
silent | boolean | Suppress notifications |
hook | boolean | Execute hooks (default: true) |
Request
curl -X POST https://api.syncello.io/v1/tools/podio/deleteItem \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json"
-d '{
"item_id": "123"
}'Response
{
"deleted": true,
"item_id": 3141592653
} Try It
Try it
Sign in to execute this tool
Sign InClone Item
POST /v1/tools/podio/cloneItem
Create an exact copy of a Podio item with all field values. Returns a new item with a new item_id; the original item is unchanged. Set include_files: true to also copy all file attachments to the new item (each file is re-uploaded with a new file ID). Set silent: true to prevent notifications.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
item_id | number | required | Item ID to clone (from filterItems, getItem, or platform context) |
include_files | boolean | optional | Copy file attachments to the cloned item |
silent | boolean | optional | Suppress notifications |
Flags
| Name | Type | Description |
|---|---|---|
silent | boolean | Suppress notifications |
include_files | boolean | Copy file attachments to the cloned item |
Request
curl -X POST https://api.syncello.io/v1/tools/podio/cloneItem \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json"
-d '{
"item_id": "123"
}'Response
{
"item_id": 3141592800
} Try It
Try it
Sign in to execute this tool
Sign InFilter Items
POST /v1/tools/podio/filterItems
Retrieve item CONTENT from a Podio app — use this when the user wants to SEE items, not COUNT or TOTAL them. DO NOT USE FOR AGGREGATIONS: if the question involves "how many", "total", "count", "sum", "average", "min", "max", or "breakdown", call podio_aggregateItems instead — it computes exact server-side results and avoids the model miscounting. For a fast single-number count of matching items without fetching their data, use count_only: true. PREREQUISITE: Call podio_getApp first to get field_ids and types for constructing filters. Call without filters to list all items. Returns compact format: item header + fields as {"Label": "formatted value"} — no field config. Use field_ids to return only specific fields. Filter keys are numeric field_ids from getApp. Text fields use partial match ("search text"), category fields use option_ids ([3] or [3,5] from getApp config.settings.options) or text values ("Option A" or ["A","B"]), date/number fields use ranges ({"from":"2024-01-01","to":"2024-12-31"}), app references use [item_id]. Use offset for pagination. Calculation fields are filterable: number-return calcs use range format, date-return calcs use date range, text-return calcs use string partial match (same as text fields). Set verbose=true for full raw response (discouraged). To find an app or item by NAME/keyword (rather than by field values), use podio_searchPodio; to fetch a single already-known item by item_id, use podio_getItem.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
app_id | number | required | App ID (from getApp, getAppsBySpace, or platform context) |
view_id | number | optional | View ID to filter within. When provided, applies the view's saved filters/sorting as a baseline before any additional filters. Use the view_id from platform context when the user refers to 'this view' or 'items in this view'. |
filters | object | optional | MUST be a flat object (NOT an array) keyed by numeric field_id from getApp. Example: {"246992598": [3,5], "272538402": {"from":"2024-01-01","to":"2024-12-31"}}. Value format by field type: text → "search text" (partial match), category → [option_id] or ["Option Text"], date → {"from":"YYYY-MM-DD","to":"YYYY-MM-DD"} (also accepts relative tokens: -30d, +0d=today, -1w, +1m, -1y, e.g. last 30 days = {"from":"-30d","to":"+0d"}), number → {"from":100,"to":500}, app → [item_id], contact → [profile_id]. Omit to return all items. |
filters_by_label | object | optional | Alternative to `filters`: a flat object keyed by field LABEL (case-insensitive) instead of numeric field_id, e.g. {"Status": ["Open"], "Install End Date": {"from":"-30d","to":"+0d"}}. Resolved to field_ids server-side; values use the same per-type formats as `filters` and may be combined with it. An ambiguous label (matches >1 field) or unknown label is rejected with the matching field_ids so you can disambiguate via `filters`. |
sort_by | string | optional | Field ID to sort by (as string), or "created_on", "last_edit_on", "title" for built-in sorts |
sort_desc | boolean | optional | Sort descending (default: false) |
limit | number | optional | Max items to return (default: 100, max: 500). Use offset for pagination if you need more. |
offset | number | optional | Pagination offset (default: 0). Use with limit for paging. |
count_only | boolean | optional | Return count only |
field_ids | array | optional | Filter to specific fields |
field_types | string | optional | Filter by field type: all (default), basic (exclude calculations), calculation (only calculations) Values: all, basic, calculation |
verbose | boolean | optional | Return full raw Podio response (discouraged) |
Flags
| Name | Type | Description |
|---|---|---|
count_only | boolean | Return count only |
field_ids | array | Filter to specific fields |
field_types | string | Filter by field type: all (default), basic (exclude calculations), calculation (only calculations) |
verbose | boolean | Return full raw Podio response (discouraged) |
Request
curl -X POST https://api.syncello.io/v1/tools/podio/filterItems \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json"
-d '{
"app_id": "123"
}'Response
{
"filtered": 3,
"total": 3,
"items": [
{
"item_id": 3141592700,
"app_item_id": 2,
"title": "Contoso Ltd",
"link": "https://podio.com/acme-corp/deals/items/2",
"created_by": {
"user_id": 1122334,
"name": "Jane Doe"
},
"created_on": "2026-07-01 14:31:00",
"tags": [],
"fields": [
{
"field_id": 261000001,
"external_id": "company-name",
"label": "Company Name",
"type": "text",
"value": "Contoso Ltd"
},
{
"field_id": 261000002,
"external_id": "stage",
"label": "Stage",
"type": "category",
"value": [
{
"id": 2,
"text": "Negotiation"
}
]
},
{
"field_id": 261000003,
"external_id": "deal-value",
"label": "Deal Value",
"type": "money",
"value": {
"value": "48000.0000",
"currency": "USD"
}
}
]
}
]
}Alternate mode
{
"total": 3,
"count_only": true
} Try It
Try it
Sign in to execute this tool
Sign InAggregate Items
POST /v1/tools/podio/aggregateItems
THE tool for any Podio question involving "how many", "total", "count", "sum", "average", "min", "max", or "breakdown". Computes server-side aggregations (sum, avg, min, max, count) on Podio items matching a filter and returns exact, deterministic numbers. ALWAYS prefer this over filterItems + manual counting — the model is unreliable at counting or summing values from item lists, and filterItems only returns up to 200 items per call. Use count operation with any field_id to count matching items (e.g. aggregations: [{field_id: <app_item_id_field>, operation: "count"}]). When using group_by, the response includes both per-group breakdowns AND a "totals" object with grand totals across all groups — use totals directly, do NOT add up group values manually. Supports group_by on date fields (with day/week/month/quarter/year intervals), category fields, relationship fields, member fields, and tags. IMPORTANT: You MUST call podio_getApp in a prior step and wait for its response before calling this tool. Do NOT call podio_aggregateItems in the same turn as podio_getApp — the model needs real field_ids from getApp before constructing aggregations.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
app_id | number | required | App ID (from getApp, getAppsBySpace, or platform context) |
filters | object | optional | MUST be a flat object (NOT an array) keyed by numeric field_id from getApp. Example: {"246992598": [3], "272538402": {"from":"2024-01-01","to":"2024-12-31"}}. Value format by field type: text → "search text" (partial match), category → [option_id] or ["Option Text"], date → {"from":"YYYY-MM-DD","to":"YYYY-MM-DD"} (also relative: -30d, +0d=today, -1w, +1m, -1y), number → {"from":100,"to":500}, app → [item_id], contact → [profile_id]. Omit to aggregate all items. |
filters_by_label | object | optional | Alternative to `filters`: a flat object keyed by field LABEL (case-insensitive) instead of numeric field_id, e.g. {"Office": "AZ - Phoenix"}. Resolved to field_ids server-side; an ambiguous or unknown label is rejected with the matching field_ids. Can be combined with `filters`. |
aggregations | array | required | What to compute. Max 5 per request. Single-field: {field_id, operation}. Operations by field type: number/money/duration/calculation(number) → sum, avg, min, max, count; date/calculation(date) → min, max, count; all other fields (text, category, relationship, member, tags, etc.) → count only. Date difference: {metric:"date_diff", field_a_id, field_b_id, unit, operation} computes avg/sum/min/max/count of (field_b - field_a), e.g. avg days from a Creation Date to an Install End Date — groupable like any metric. For date_diff, count = items where BOTH dates are present. |
group_by | object | optional | Optional. Group results by a field or tags. Only one group_by per request. |
Request
curl -X POST https://api.syncello.io/v1/tools/podio/aggregateItems \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json"
-d '{
"app_id": "123",
"aggregations": "..."
}'Response
{
"total_items": 3,
"aggregations": {
"261000003": {
"sum": 85000,
"avg": 28333.33,
"count": 3
}
}
} Try It
Try it
Sign in to execute this tool
Sign InGet Item References
POST /v1/tools/podio/getItemReferences
Find items from other apps that have app-reference fields pointing to this item. Returns an array of referencing items. Useful for finding related records across apps (e.g., find all tasks linked to a project). Use field_ids to limit which fields are returned for each referencing item.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
item_id | number | required | Item ID to find references for (from filterItems, getItem, or platform context) |
field_ids | array | optional | Filter to specific fields |
Flags
| Name | Type | Description |
|---|---|---|
field_ids | array | Filter to specific fields |
Request
curl -X POST https://api.syncello.io/v1/tools/podio/getItemReferences \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json"
-d '{
"item_id": "123"
}'Response
[
{
"app": {
"app_id": 28460003,
"name": "Contacts"
},
"items": [
{
"item_id": 3141592900,
"app_item_id": 12,
"title": "Jane Doe"
}
]
}
] Try It
Try it
Sign in to execute this tool
Sign InGet Item Revisions
POST /v1/tools/podio/getItemRevisions
List revision history for a Podio item. Returns up to 30 most recent revisions with revision number, created_by, and created_on. Use revision numbers with podio_getItemRevision to see full state at that point, or podio_getItemRevisionDifference to compare two revisions.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
item_id | number | required | Item ID to get revision history for (from filterItems, getItem, or platform context) |
Request
curl -X POST https://api.syncello.io/v1/tools/podio/getItemRevisions \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json"
-d '{
"item_id": "123"
}'Response
[
{
"item_revision_id": 157000002,
"revision": 1,
"type": "update",
"created_on": "2026-07-01 15:02:00",
"created_by": {
"user_id": 1122334,
"name": "Jane Doe",
"type": "user"
},
"created_via": {
"id": 90001,
"name": "Syncello",
"url": null
},
"user": {
"user_id": 1122334,
"name": "Jane Doe",
"type": "user"
}
},
{
"item_revision_id": 157000001,
"revision": 0,
"type": "creation",
"created_on": "2026-07-01 14:30:00",
"created_by": {
"user_id": 1122334,
"name": "Jane Doe",
"type": "user"
},
"created_via": {
"id": 90001,
"name": "Syncello",
"url": null
},
"user": {
"user_id": 1122334,
"name": "Jane Doe",
"type": "user"
}
}
] Try It
Try it
Sign in to execute this tool
Sign InGet Item Revision
POST /v1/tools/podio/getItemRevision
Get the full item state at a specific revision. Returns all field values as they were at that point in time. Get revision numbers from podio_getItemRevisions first. Revision 0 is the original creation; higher numbers are subsequent updates.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
item_id | number | required | Item ID (from filterItems, getItem, or platform context) |
revision | number | required | Revision number (from podio_getItemRevisions). Revision 0 is the original creation. |
Request
curl -X POST https://api.syncello.io/v1/tools/podio/getItemRevision \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json"
-d '{
"item_id": "123",
"revision": "123"
}'Response
{
"created_by": {
"user_id": 1122334,
"name": "Jane Doe",
"type": "user"
},
"created_on": "2026-07-01 14:30:00",
"created_via": {
"id": 90001,
"name": "Syncello",
"url": null
},
"item_revision_id": 157000001,
"revision": 0,
"type": "creation",
"user": {
"user_id": 1122334,
"name": "Jane Doe",
"type": "user"
}
} Try It
Try it
Sign in to execute this tool
Sign InGet Item Revision Difference
POST /v1/tools/podio/getItemRevisionDifference
Compare two revisions of a Podio item to see what changed. Returns an array of changes with field_id, from value, and to value. Get revision numbers from podio_getItemRevisions first.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
item_id | number | required | Item ID (from filterItems, getItem, or platform context) |
revision_from | number | required | Earlier revision number (from podio_getItemRevisions) |
revision_to | number | required | Later revision number (from podio_getItemRevisions) |
Request
curl -X POST https://api.syncello.io/v1/tools/podio/getItemRevisionDifference \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json"
-d '{
"item_id": "123",
"revision_from": "123",
"revision_to": "123"
}'Response
[
{
"field_id": 261000006,
"external_id": "probability",
"type": "number",
"label": "Probability",
"config": {
"label": "Probability",
"settings": {
"decimals": 0
},
"required": false
},
"from": [
{
"value": "60.0000"
}
],
"to": [
{
"value": "80.0000"
}
]
},
{
"field_id": 261000002,
"external_id": "stage",
"type": "category",
"label": "Stage",
"config": {
"label": "Stage",
"settings": {
"options": [
{
"id": 1,
"text": "Prospect"
},
{
"id": 2,
"text": "Negotiation"
}
]
}
},
"from": [
{
"value": {
"id": 1,
"text": "Prospect"
}
}
],
"to": [
{
"value": {
"id": 2,
"text": "Negotiation"
}
}
]
}
] Try It
Try it
Sign in to execute this tool
Sign InBatch Create Items
POST /v1/tools/podio/batchCreateItems
Create multiple items in a Podio app in a single batch. PREFERRED over podio_createItem when creating 2+ items (e.g., from spreadsheets, CSVs, or bulk data). Validates all items upfront before making any API calls. Returns per-item results with item_id and link. Max 50 items per batch. PREREQUISITE: Call podio_getApp(app_id, fields_only: true) first to get field IDs, types, and category option IDs. Image-type fields accept https:// URLs — they are auto-uploaded and converted to Podio file IDs.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
app_id | number | required | App ID (from getApp, getAppsBySpace, or platform context) |
items | array | required | Array of items to create (1-50). Each item has a "fields" object keyed by field_id. |
hook | boolean | optional | Execute webhooks for all items (default: true) |
silent | boolean | optional | Suppress notifications for all items (default: false) |
Request
curl -X POST https://api.syncello.io/v1/tools/podio/batchCreateItems \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json"
-d '{
"app_id": "123",
"items": "..."
}'Response
{
"total": 2,
"successful": 2,
"failed": 0,
"items": [
{
"index": 0,
"success": true,
"item_id": 3141592701,
"link": "https://podio.com/acme-corp/deals/items/3"
},
{
"index": 1,
"success": true,
"item_id": 3141592700,
"link": "https://podio.com/acme-corp/deals/items/2"
}
]
} Try It
Try it
Sign in to execute this tool
Sign InBatch Update Items
POST /v1/tools/podio/batchUpdateItems
Update any number of items in a single call — automatically splits into chunks of 50. Items within each chunk run in parallel; chunks are processed sequentially. Requires app_id for schema validation (avoids per-item lookups). Each item needs item_id and fields. PREREQUISITE: Call podio_getApp first to get field IDs and types. Do NOT guess field IDs or item IDs — use IDs from filterItems, getItem, or previous createItem responses. Uses the same field value formats as updateItem. All items are validated upfront; if any fail validation, none are updated. Partial failures are possible. Only specified fields are changed per item.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
app_id | number | required | App ID for schema validation. All items must belong to this app. Eliminates per-item GET calls. |
items | array | required | Array of items to update (any number — automatically chunked into batches of 50). Each requires item_id and fields. Same formats as updateItem. |
hook | boolean | optional | Execute webhooks for all items (default: true) |
silent | boolean | optional | Suppress notifications for all items (default: false) |
Request
curl -X POST https://api.syncello.io/v1/tools/podio/batchUpdateItems \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json"
-d '{
"app_id": "123",
"items": "..."
}'Response
{
"total": 2,
"successful": 2,
"failed": 0,
"items": [
{
"index": 0,
"success": true,
"item_id": 3141592701
},
{
"index": 1,
"success": true,
"item_id": 3141592700
}
]
} Try It
Try it
Sign in to execute this tool
Sign In