Checking authentication...

Items

Create, read, update, and delete items in apps

13 tools

Create Item

Write

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

NameTypeRequiredDescription
app_idnumberrequiredApp ID (from getApp, getAppsBySpace, or platform context)
fieldsobjectrequiredField 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_idstringoptionalOptional external reference ID for integrations
file_idsarrayoptionalFile 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.
tagsarrayoptionalTags to add to the item
hookbooleanoptionalExecute hooks (default: true)
silentbooleanoptionalSuppress notifications
id_onlybooleanoptionalReturn only item_id (default: true). Set to false only if full item data is needed for subsequent steps.

Flags

NameTypeDescription
id_onlybooleanReturn only item_id (default: true). Set to false only if full item data is needed for subsequent steps.
silentbooleanSuppress notifications
hookbooleanExecute 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

Get Item

Read Idempotent

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

NameTypeRequiredDescription
item_idnumberoptionalGlobal item ID (from filterItems, platform context, or createItem). Not the number from a Podio URL.
podio_urlstringoptionalA 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_idsarrayoptionalFilter to specific fields by field_id (number) or external_id (string)
field_typesstringoptionalFilter by field type: all (default), basic (exclude calculations), calculation (only calculations)
Values: all, basic, calculation
files_onlybooleanoptionalReturn files only
verbosebooleanoptionalReturn full raw Podio response (discouraged)

Flags

NameTypeDescription
field_idsarrayFilter to specific fields by field_id (number) or external_id (string)
field_typesstringFilter by field type: all (default), basic (exclude calculations), calculation (only calculations)
files_onlybooleanReturn files only
verbosebooleanReturn 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

Update Item

Write

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

NameTypeRequiredDescription
item_idnumberrequiredItem ID to update (from filterItems, getItem, platform context, or a previous createItem response)
fieldsobjectoptionalMulti-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_idnumberoptionalSingle-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_valueanyoptionalThe value for the single field specified by field_id. Format depends on field type (same as createItem).
file_idsarrayoptionalFile 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.
tagsarrayoptionalTags to set on the item (replaces existing tags)
hookbooleanoptionalExecute hooks (default: true)
silentbooleanoptionalSuppress notifications
id_onlybooleanoptionalReturn only item_id

Flags

NameTypeDescription
id_onlybooleanReturn only item_id
silentbooleanSuppress notifications
hookbooleanExecute 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

Delete Item

Destructive

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

NameTypeRequiredDescription
item_idnumberrequiredItem ID to delete (from filterItems, getItem, or platform context). Verify before calling.
hookbooleanoptionalExecute hooks (default: true)
silentbooleanoptionalSuppress notifications

Flags

NameTypeDescription
silentbooleanSuppress notifications
hookbooleanExecute 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

Clone Item

Write

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

NameTypeRequiredDescription
item_idnumberrequiredItem ID to clone (from filterItems, getItem, or platform context)
include_filesbooleanoptionalCopy file attachments to the cloned item
silentbooleanoptionalSuppress notifications

Flags

NameTypeDescription
silentbooleanSuppress notifications
include_filesbooleanCopy 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

Filter Items

Read Idempotent

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

NameTypeRequiredDescription
app_idnumberrequiredApp ID (from getApp, getAppsBySpace, or platform context)
view_idnumberoptionalView 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'.
filtersobjectoptionalMUST 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_labelobjectoptionalAlternative 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_bystringoptionalField ID to sort by (as string), or "created_on", "last_edit_on", "title" for built-in sorts
sort_descbooleanoptionalSort descending (default: false)
limitnumberoptionalMax items to return (default: 100, max: 500). Use offset for pagination if you need more.
offsetnumberoptionalPagination offset (default: 0). Use with limit for paging.
count_onlybooleanoptionalReturn count only
field_idsarrayoptionalFilter to specific fields
field_typesstringoptionalFilter by field type: all (default), basic (exclude calculations), calculation (only calculations)
Values: all, basic, calculation
verbosebooleanoptionalReturn full raw Podio response (discouraged)

Flags

NameTypeDescription
count_onlybooleanReturn count only
field_idsarrayFilter to specific fields
field_typesstringFilter by field type: all (default), basic (exclude calculations), calculation (only calculations)
verbosebooleanReturn 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

Aggregate Items

Read Idempotent

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

NameTypeRequiredDescription
app_idnumberrequiredApp ID (from getApp, getAppsBySpace, or platform context)
filtersobjectoptionalMUST 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_labelobjectoptionalAlternative 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`.
aggregationsarrayrequiredWhat 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_byobjectoptionalOptional. 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

Get Item References

Read Idempotent

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

NameTypeRequiredDescription
item_idnumberrequiredItem ID to find references for (from filterItems, getItem, or platform context)
field_idsarrayoptionalFilter to specific fields

Flags

NameTypeDescription
field_idsarrayFilter 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

Get Item Revisions

Read Idempotent

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

NameTypeRequiredDescription
item_idnumberrequiredItem 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

Get Item Revision

Read Idempotent

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

NameTypeRequiredDescription
item_idnumberrequiredItem ID (from filterItems, getItem, or platform context)
revisionnumberrequiredRevision 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

Get Item Revision Difference

Read Idempotent

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

NameTypeRequiredDescription
item_idnumberrequiredItem ID (from filterItems, getItem, or platform context)
revision_fromnumberrequiredEarlier revision number (from podio_getItemRevisions)
revision_tonumberrequiredLater 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

Batch Create Items

Write

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

NameTypeRequiredDescription
app_idnumberrequiredApp ID (from getApp, getAppsBySpace, or platform context)
itemsarrayrequiredArray of items to create (1-50). Each item has a "fields" object keyed by field_id.
hookbooleanoptionalExecute webhooks for all items (default: true)
silentbooleanoptionalSuppress 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

Batch Update Items

Write

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

NameTypeRequiredDescription
app_idnumberrequiredApp ID for schema validation. All items must belong to this app. Eliminates per-item GET calls.
itemsarrayrequiredArray of items to update (any number — automatically chunked into batches of 50). Each requires item_id and fields. Same formats as updateItem.
hookbooleanoptionalExecute webhooks for all items (default: true)
silentbooleanoptionalSuppress 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