• search
  • Contact Sales
  • Support
    • Online Help
    • Community Forum
    • Contact Support
  • Log in
Get a Demo Try Free
High Contrast
Caspio logo Help
Try Free
  • High Contrast
  • search
  • Contact Sales
  • Support
    • Online Help
    • Community Forum
    • Contact Support
  • Log in
Get a Demo Try Free
  • Help Center
  • Integrate and Extend Your Apps
  • API Overview
  • Comparing REST API v3 and v4
  • Launch Your Caspio Journey
  • Create Applications
    • Applications Overview
    • Creating Apps With Bridge
      • Bridge App Overview
        • Creating a New App Container
        • Importing an App
        • Exporting an App
        • Deleting an App
        • Shared Objects
        • Backing Up Your Applications
        • Sharing an App with Another Account
        • App Parameters
          • Adding App Parameters
          • Managing App Parameters
          • Using App Parameters
      • Authentication
        • Setting Up User Permissions in Your App
        • Adding a Logout Link
        • Record Level Security
          • Create a Workflow using Record Level Security and Filtered Dropdown
          • Restrict Access to Data by User or Role
          • Filter Lookup Dropdown or Listbox Based on User or Role
        • Stamp a Record with User Profile Data
        • OpenID
        • Create a Standalone Login Screen
        • Hiding Multiple Login Forms
      • DataPages
        • What is a DataPage?
        • DataPage Types
        • Forms
          • Submission Forms
          • Update Forms
          • Password Recovery Forms
          • Form Element Types
          • Conditional Forms
          • Child Forms
          • Accepting Payments in Your Application
        • Reports
          • Creating a Report DataPage
          • Comparison Types in Report DataPages
          • Search by Distance
          • Report Page Results Layout
          • Interactive Reporting Options
          • Pivot Table Reports
          • Counting the Number of Times a Record Has Been Viewed
          • Display a Field Data as Hyperlink
          • Fixed Rows and Columns
          • Making the Search Results Downloadable as PDF
          • Editing Data Through My Details Page
          • Making the Details Downloadable for Users
          • Data Editing Options in Reports
          • Combined Chart and Report
          • Adding “Today” to “After Now” or “Next X Days” Criteria
          • Filtering Reports Based on an Expiration Date
          • Advanced Reporting
            • Calculations in Reports
            • Data Grouping
            • Totals and Aggregations
            • Calculated Fields and Datediff Function
        • Charts
        • Calendars
        • HTML Pages
        • DataPage Components
          • Dropdowns and Listboxes
          • Cascading Elements
          • Calculated Values
          • Field Configuration Options
            • Field and Column Width
            • Placeholder Text
            • Rollover Hints – Mouse-Over Help Icon
            • Image Auto-Rotation
          • DataPage Header and Footer
          • HTML Blocks
          • Disabling HTML Editor in DataPage Header/Footer and HTML Blocks
          • Field Formatting Options
          • Custom Date Formatting
          • Multi-column and Sections
          • CAPTCHA
          • Virtual Fields
          • Setting up Default Values
          • AutoComplete
        • Managing DataPages
          • Modifying DataPages
          • Previewing DataPages
          • Moving DataPages
          • Copying DataPages
          • DataPage Revisions
          • DataPage Folders
          • Exporting and Importing DataPages
          • Moving Existing DataPages To a New App
        • Responsive DataPages
          • Responsive DataPage Prerequisites
          • Responsive Behavior on Tablet and Mobile
          • Modifying Styles for Tablet and Mobile
        • AJAX Loading
        • PDF Download
          • Adding a text watermark
          • Adding an image watermark
          • Adding page breaks to details page
          • Adding header and footer
        • Best Practices in Creating Caspio Applications
      • Notifications
        • Email Notifications
          • Verifying Email and Domain
          • Configuring Email
          • Setting Up Dynamic or Conditional Notification Emails
        • SMS Notifications
          • Configuring the SMS-enabled Countries
          • Configuring SMS
          • Adding SMS Sender Name
      • Parameters
        • Parameter Types
        • System Parameters
        • Passing Parameters through Caspio
        • Displaying Parameters
        • Parameters as Query String Values
        • Receiving Parameters
        • Resetting Parameters
        • Passing Multiple Values in One Parameter
        • Formatting Parameters in Email Body and HTML Blocks
        • Parameters in Dropdowns, Listboxes and Radio Buttons
        • Custom Filter Elements
      • Connections
        • SAML Single Sign-On
        • Setting Up ID Services
      • Styles
        • Creating or Editing a Style
        • Layout Options
        • Fix the Width of the DataPage
        • Button Alignment
        • Field Alignment
        • Border Options
        • Using Google Web Fonts
        • Glossy Heading Text
        • Gradient Backgrounds for DataPages
        • Gradient Backgrounds for Fields
        • Replace Links to Records with Images
        • Replace Standard Buttons with Images
        • Change the Color of Field Error Labels
        • Change Text on a Button
        • Put Multiple Fields on One Line
        • Styling Advanced Reports
        • Add Rounded Borders to the Form and Fields
        • Use an Image as Form Background
        • Fix the Width of Labels and Data in List and Gallery Reports
        • Customize the ID Service Icon of the Login Screen
      • Localizations
        • Creating or Editing a Localization
        • Handling Arabic, Hebrew and Other Right-to-Left Languages
        • Formatting Options
        • Using Localization Feature to Improve Usability
        • Format Types
      • Files and Images
        • Uploading Files and Images
        • FileStor CDN
        • Managing Files
        • Bulk File Import and Export
        • Creating Thumbnails with the Image Resizer
        • Using Files in DataPages
        • Orphan File Cleanup
    • Creating Apps With Flex
      • Flex Overview
      • Managing Apps
        • Archiving, Sending, and Receiving Apps Using Vault
        • Installing Apps
      • Roles
        • Creating New Roles
        • Adding Users and Groups to Roles
        • DataPart Display Based on the User Role
        • Editing Role Permissions
          • User’s Own Records
          • Custom Access
        • Removing Users and Groups from Roles
        • Deleting Roles
      • Application Design
        • Segments
          • Themes and Widgets
          • Editing Segment Settings
          • Customizing Themes
        • Creating AppPages
        • AppPage Types
        • Adding DataParts
        • Moving DataParts
        • Resizing DataParts
        • Adding Elements to DataParts
          • Calculated Values in Flex DataParts
        • Forms
          • Form Elements
          • Search Form
          • Submission Form
          • Details/Update Form
          • Conditional Logic in Forms
        • Reports
          • Tabular Report
          • Card Report
          • Pivot Table
        • User Management DataParts
          • Sign-up Form
          • User Details/Update Form
        • Charts
          • Creating and Configuring Charts
          • Chart Display Options
        • Text/HTML
        • Data Filters
          • Creating Filters
        • Communication Between DataParts
        • Designing User-Friendly Navigation Between AppPages
      • Parameters
        • Inserting Parameters
        • Application Parameters
        • Adding Support for Lookup Values in Data Source Parameters
        • Stamping Records with User ID
      • Branding
      • Flex FAQ
  • Manage Users and Groups
    • Directories Overview
      • User Authentication in Directories
      • Converting Tables to Directories
      • Creating Directories
    • Directory Users
      • User Status Overview
      • Creating Users
      • Activating Users
      • Adding Users to Groups
      • Resetting User Passwords
      • Resetting Two-Factor Authentication
      • Suspending and Unsuspending Users
      • Changing User Sign-In Method
    • Directory Groups
    • Directory Security
      • Session Management
      • Turning On Two-Factor Authentication
      • Customizing Directory Security Policy
      • Redirecting to Custom URLs After Sign-in and Sign-out
    • Directory User Portal
    • Directory Emails
    • Identity Providers
      • Adding Identity Providers
        • Tutorial: Adding Microsoft Entra ID (formerly Azure AD) Identity Provider
        • Tutorial: Adding Okta Identity Provider
        • Tutorial: Adding OneLogin Identity Provider
      • Editing Identity Providers
      • Deleting and Disabling Identity Providers
      • Configuring Single Logout
    • App Connections
      • Creating App Connections 
        • Authenticating Users to Caspio Apps in Multiple Accounts Using a Single Directory
        • Tutorial: Adding HubSpot App Connection
        • Tutorial: Adding BambooHR App Connection
        • Tutorial: Adding Slack App Connection
      • Managing App Connections 
      • Deleting and Disabling App Connections
  • Manage and Organize Your Data
    • Data Management Overview
    • Tables and Views
      • Creating Tables
      • Modifying a Table’s Design
      • Removing Blanks From a Dropdown or Listbox
      • Lookup Tables
      • Views
        • Creating a View to Filter Data
        • Creating a View to Join Tables
        • Self-Join Views
        • Modifying Views
        • Importing and Exporting Views
    • Data Types
      • List Data Types
      • Function Reference
      • Adding a Formula Field in a Table
      • Managing Files With the Attachment Data Type
    • Managing Data in Datasheet
      • Find and Replace Specific Values
      • Filtering Data
      • Downloading Table or View Data
    • Database Relationships
      • Relationship Settings
    • Importing Data
    • Exporting Data
    • Sharing Data Between Apps
    • Best Practices for Designing Databases and Tables
    • Logs
      • Managing Logs
        • Logs Retention Period
      • App Access Logs
      • Directory Logs
      • Email Logs
      • Integrations Logs
      • Payment Logs
      • SMS Logs
  • Leverage AI
    • AI Assistant (Beta)
  • Automate Tasks and Workflows
    • Automations Overview
    • Triggered Actions
      • Creating a Triggered Action
        • Actions
          • UPDATE
          • DELETE
          • INSERT INTO
          • SEND EMAIL
          • SEND SMS
        • Data
          • SELECT
        • Logic
        • Loops
        • Text
        • Number
        • Date
        • Variables
    • Tasks
    • Data Import/Export Tasks
      • Data Import Tasks
      • Data Export Tasks
      • Configuring a Repository Site
      • IP Addresses for Data Import/Export Tasks
      • Data Import/Export Tasks Tips and Best Practices
  • Generate PDF Documents
    • Document Generation Overview
    • Creating Templates
    • Mapping Fields in Templates
    • Template Field Types
    • Configuring Template Settings
      • Formatting Field Values
      • Adding Watermarks
      • Encrypting PDF Documents
      • Configuring PDF Document Properties
      • Changing PDF File for a Template
    • Enabling Document Generation in Applications
    • Managing Templates
  • Integrate and Extend Your Apps
    • Integrations Overview
    • Webhooks
      • Getting Started with Webhooks
      • Webhooks Rules and Limitations
      • IP Addresses for Webhooks
      • Creating and Managing Webhooks
        • Configuring Call Throttling
      • Creating and Managing Events
        • Event Types
        • Activating or Deactivating Events
      • Testing Webhooks
    • Extensions
      • AI-Powered GPT Connect
      • Extension for Slack
      • QR Code Generator
      • Dropbox Sign Integration
      • Barcode Generator
      • Location IQ
    • API Overview
      • Creating an API Profile
      • Authenticating REST API
      • Important Header Parameters
      • Special Considerations
      • Error Handling
      • Swagger UI
      • Migration to REST API v3
      • Comparing REST API v3 and v4
    • Caspio MCP Server
    • Integration with Keragon
    • Integration with n8n
      • n8n Integration – Credentials
      • n8n Integration – Triggers
      • n8n Integration – Actions
    • Integration with Make
    • Integration with Zapier
  • Deploy Your Apps
    • Deploying Bridge Apps
      • General Deployment Guide
      • Remove iFrame Border and Change Size
      • Block Access to DataPages by IP Address
    • Deploying Flex Apps
      • Mapping a Friendly Subdomain
  • Manage Account and Billing
    • Account Settings
    • Account Users and Groups
      • Inviting New Account Users
      • Creating Groups for Account Users
      • Managing Permissions
      • Changing Account Owner
    • Custom Domain
    • Caspio ID
      • Managing Your Caspio ID
      • Forgot Your Password
      • Getting Support PIN
    • Organization
      • Set Up Your Organization
      • Manage Accounts
      • Manage Members
    • Account Notifications
    • Changing Your Plan
    • Updating Payment Settings
    • Payment History
    • Resource Usage
    • Support Login
    • Search for Objects
  • Videos
    • Bridge Videos
      • Build Your First App
      • Recorded Training
      • Customize Your Apps
      • Advanced Topics
      • Full App Implementation
      • Tips and Tricks
    • Flex Videos
      • Build Your First App
      • Recorded Training
  • Resources and Best Practices
    • Frequently Asked Questions (FAQ)
    • Tech Tips
    • Troubleshooting
      • Troubleshooting SMS Delivery
      • Troubleshooting Email Delivery and Domain Verification
      • Cannot Log in to My Caspio Account
      • Issue with Login to Apps or DataPages
      • Issue with Redirection After Logout
      • Acknowledgement Emails Are Not Received
      • Issues with Email Verification Code
      • JavaScript Does Not Work with Multiple DataPages
      • Cannot See an SSL Lock Icon for My Web Page
      • Responsive UI Does Not Display Properly
      • Date Fields from Excel Import Incorrectly
      • Troubleshooting Custom PDF Generator
      • Troubleshooting Data Import Speed
      • Troubleshooting Amazon S3 Connection for Data Import and Export Tasks
      • System Limitations
      • Errors and Messages
    • System Requirements
    • Deprecations
      • Deprecation of Older AI Models in AI-Powered GPT Connect Extension
      • Deprecation of Caspio 1.3.0 App Connection in Zapier
      • Deprecation of REST API v1 and REST API v2
      • Deprecation of Microsoft Office Plugin
      • Deprecation of Twitter as an ID Service in Authentications and Connections
      • Deprecation of Google Drive for Data Import/Export Tasks
      • Deprecation of HTTP Deployment
      • Deprecation of the Option to Disable AJAX Loading
      • Deprecation of MS Access for Import/Export
      • Deprecation of Cb_ErrorLog Tables
      • Deprecation of Google Map Mashup Generator
      • Deprecation of Frame Deployment
      • Deprecation of .xls Excel Format for Data Import
      • Deprecation of SEO Deployment Method
      • Deprecation of WordPress Deployment
      • Deprecation of Unverified Email Addresses
      • Deprecation of SOAP Web Service
      • Deprecation of Internet Explorer 11 and Microsoft Edge Legacy Browsers
  • Release Notes
    • Caspio 74.0
    • Caspio 73.0
      • Impacted Areas 73.0
    • Caspio 72.0
    • Caspio 71.0
      • Impacted Areas 71.0
    • Caspio 70.0
      • Impacted Areas 70.0
    • Caspio 69.0
      • Impacted Areas 69.0
    • Caspio 68.0
      • Impacted Areas 68.0
    • Caspio 67.0
    • Caspio 66.0
    • Caspio 65.0
    • Caspio 64.0
    • Caspio 63.0
    • Caspio 62.0
    • Caspio 61.0
      • Impacted Areas 61.0
    • Caspio 60.0
    • Caspio 59.0
    • Caspio 58.0
    • Caspio 57.0
    • Caspio 56.0
    • Caspio 55.0
    • Caspio 54.0
    • Introducing Flex
    • Caspio 53.0
    • Caspio 52.0
    • Caspio 51.0
    • Caspio 50.0
    • Caspio 49.0
    • Caspio 48.0
    • Caspio 47.0
    • Caspio 46.0
    • Caspio 45.0
    • Caspio 44.0
    • Caspio 43.0
    • Caspio 42.0
      • Known Issue: Scrolling on macOS Devices
    • Caspio 41.0
    • Caspio 40.0
    • Caspio 39.0
    • Caspio 38.0
    • Caspio 37.0
      • Impacted Areas 37.0
    • Caspio 36.0
    • Caspio 35.0
    • Caspio 34.0
      • Impacted Areas 34.0
    • Caspio 33.0
    • Caspio 32.0
    • Caspio 31.0
      • Impacted Areas 31.0
    • Caspio 30.0
    • Caspio 29.0
    • Caspio 28.0
    • Caspio 27.0
    • Caspio 26.0
    • Caspio 25.0
    • Caspio 24.0
    • Caspio 23.0
    • Caspio 22.0
    • Caspio 21.5
    • Caspio 21.0
      • Impacted Areas 21.0
    • Caspio 20.0
    • Caspio 19.0
      • Impacted Areas 19.0
      • Security Patch 19.5
    • Caspio 18.0
    • Caspio 17.0
    • Caspio 16.0
    • Caspio 15.0
    • Caspio 14.0
      • Impacted Areas 14.0
    • Caspio 13.0
      • Caspio 13.0
      • Impacted Areas 13.0
    • Caspio 12.0
      • Impacted Areas 12.0
    • Caspio 11.0
      • Impacted Areas 11.0
    • Caspio 10.0
    • Caspio 9.9
      • Impacted Areas 9.9
    • Caspio 9.8
    • Caspio 9.7
    • Caspio 9.6
      • Impacted Areas 9.6
    • Caspio 9.5
      • Impacted Areas 9.5
    • Caspio 9.4
      • Impacted Areas 9.4
    • Caspio 9.3
      • Impacted Areas 9.3
    • Caspio 9.2
      • Impacted Areas 9.2
    • Caspio 9.1
      • Impacted Areas 9.1
    • Caspio 9.0
      • Known Issues 9.0
      • Impacted Areas 9.0

Comparing REST API v3 and v4

10 minutes to read

REST API v4 covers everything available in v3 and adds capabilities for record-level access, bulk operations, schema discovery, and AI integrations. This article walks through the differences in URL structure, query parameters, request bodies, response formats, and status codes, and ends with an endpoint-by-endpoint mapping you can use as a migration reference.

Compare v3 and v4 at a glance

v3 v4
Operations 70 endpoints 107 endpoints
Authentication OAuth 2.0 bearer token OAuth 2.0 bearer token (unchanged)
Object addressing Mixed: tables and views by name, others by externalKey or ID Consistently by ID: a 6-character alphanumeric code or GUID
Query parameters q.-prefixed, such as q.where Plain camelCase, such as where
List response body Result array; pagination on request data plus pagination, always included
JSON property naming PascalCase, such as Name, Type camelCase, such as name, dataType
Partial updates PUT with a q.where query parameter PATCH, with conditions in the request body
Single-record access Not available; list plus WHERE only GET, PATCH, PUT, DELETE by PK_ID
Bulk operations Limited to multi-file upload Dedicated /bulk endpoints for records, users, attachments
Echo written records response query parameter echo=true on all write endpoints
Error responses HTTP status codes only Structured body with code, request ID, hint, and docs link
Response formats JSON for all, XML for selected operations JSON only
Text data type names STRING, TEXT TEXT255, TEXT64K

Address objects by ID

v3 addressing was mixed. Tables and views used names, as in /v3/tables/{tableName}/records, while files, folders, Bridge applications, and data import/export tasks used an externalKey GUID, and webhooks, events, and directories already used IDs.

v4 addresses every object by ID. Tables, views, and tasks use a 6-character alphanumeric identifier, as in /v4/tables/{tableId}/records. Files, folders, and applications use a GUID.

For the objects that moved from names to IDs, the identifier stays stable when the object is renamed, so integrations no longer break because someone renamed a table or view. Look up IDs with GET /v4/schemas/tables or the list endpoints.

Renamed resources

Area v3 v4
Files area /v3/files /v4/fileAssets/files
Folder parameter externalKey (GUID) folderId (GUID)
File identifier externalKey (GUID) fileId (GUID)
App identifier externalKey (GUID) appId (GUID)
DataPages casing datapages dataPages
v4 also reorganizes operations into clearer functional groups. Design operations for tables, views, and directories are separated from data operations, and files used in FILE data type fields live under File Assets.

Update query parameters and property names

v3 query parameters carried a q. prefix: q.select, q.where, q.orderBy, q.groupBy, q.limit, q.pageNumber, q.pageSize, q.sortField, q.sortDescending. v4 keeps the same set as plain camelCase names without the prefix.

Ranges and defaults are unchanged. limit accepts 1 to 1,000 with a default of 100, and is ignored when paging. pageSize accepts 1 to 1,000 with a default of 25 when pageNumber is set.

JSON properties are camelCase

Everywhere v3 used PascalCase property names, v4 uses camelCase. This affects both requests and responses.
Context v3 v4
List envelope Result data
Pagination TotalCount, PageNumber, PageSize totalCount, pageNumber, pageSize
Field definition Name, Type, Label, Unique name, dataType, label, unique
Timestamp options OnInsert, OnUpdate, TimeZone stampOnInsert, stampOnUpdate, stampTimeZone
Table creation { "Name": …, "Fields": [...] } { "name": …, "description": …, "fields": [...] }
Notes property Notes description
Record data itself is unaffected. Your field names are returned exactly as defined in the table, and the system primary key remains PK_ID in both versions. In v4 it can also be used directly as a record identifier in requests.

Query and read data

Response envelope

v3 list responses wrapped records in a Result array and returned pagination information only when you set q.getPaginationInfo=true. v4 list responses always return data plus a pagination object, and the getPaginationInfo parameter is gone.

v3

GET /rest/v3/tables/Customers/records?q.where=Status='Active'&q.limit=50
{
  "Result": [ { "PK_ID": 1, "Name": "Acme", "Status": "Active" }, … ]
}

v4

GET /rest/v4/tables/a1b2c3/records?where=Status=N'Active'&limit=50
{
  "data": [ { "PK_ID": 1, "Name": "Acme", "Status": "Active" }, … ],
  "pagination": { "totalCount": 137, "pageNumber": 1, "pageSize": 50 }
}

T-SQL expressions in query parameters

In v4, the select, where, orderBy, and groupBy parameters accept full T-SQL expressions. That includes aggregates such as COUNT(*) and SUM(Amount), CASE expressions, arithmetic, and correlated subqueries against any table or view your API profile can access. groupBy supports HAVING for aggregate filtering.

Every referenced object is validated against your profile’s permission boundary before execution. DDL statements and system catalogs are always blocked.

GET /rest/v4/tables/a1b2c3/records
    ?select=Region, COUNT(*) AS Orders, SUM(Amount) AS Total
    &groupBy=Region HAVING COUNT(*) > 5
    &orderBy=Total DESC

Two syntax conventions apply to v4 WHERE clauses. Prefix string literals with N for Unicode, as in Status=N'Active', and escape quotes by doubling them, as in N'O''Brien'. Use 1 and 0 for Yes/No fields in conditions, while sending JSON true and false in write payloads.

Richer list metadata

v3’s GET /v3/tables returned a plain array of table names. v4’s GET /v4/tables returns full metadata for each table: tableId, name, description, fieldCount, lastModified, modifiedBy, dateCreated, createdBy, plus which Bridge apps, Flex apps, and triggered actions use the table.

Field definitions also expose more. Formula fields return their formula text, and lookup fields return a relationship object describing referencedTable, referencedField, relationshipType, and referentialIntegrity. A description can also be set in POST /v4/tables.

Schema discovery in one call

The /v4/schemas endpoints return every accessible object with its complete field definitions, and for tables its relationship definitions, in a single request. In v3, discovering the shape of an account required one request per table or view. This is the recommended first call for any new v4 integration.

GET /rest/v4/schemas/tables
GET /rest/v4/schemas/views
GET /rest/v4/schemas/directories
GET /rest/v4/schemas/outgoingWebhooks

Write data

Single-record operations

v3 had no way to address one record. Reads, updates, and deletes always operated on the collection filtered by q.where. v4 adds record-level endpoints keyed by PK_ID.

GET    /v4/tables/{tableId}/records/{recordPkId}
PATCH  /v4/tables/{tableId}/records/{recordPkId}   (partial update)
PUT    /v4/tables/{tableId}/records/{recordPkId}   (update)
DELETE /v4/tables/{tableId}/records/{recordPkId}

PATCH updates only the fields you include. Unspecified fields are left unchanged, and passing null clears a field. The same record-level pattern applies to views at /v4/views/{viewId}/records/{recordPkId} and to directory users at /v4/directories/{directoryId}/users/{userId}, keyed by UserGUID.

Conditional updates move to /bulk

The v3 collection update becomes an explicit bulk operation in v4, and the WHERE condition moves from a query parameter into the JSON body.

v3

PUT /rest/v3/tables/Customers/records?q.where=Status='Prospect'
Body: { "Status": "Active" }

v4

PATCH /rest/v4/tables/a1b2c3/records/bulk
Body: {
  "where": "Status=N'Prospect'",
  "recordValues": { "Status": "Active" }
}

Bulk DELETE works the same way, using DELETE /v4/tables/{tableId}/records/bulk with { "where": "..." } in the body. Keeping the condition in the body avoids URL-encoding problems with complex WHERE clauses, a common source of v3 integration bugs.

As a safety measure, always-true conditions such as 1=1 are rejected on bulk writes when the tautology guard is active. Scope bulk writes with a targeted condition, and verify the match count with a GET first.

Bulk inserts with per-record status

POST /v4/tables/{tableId}/records/bulk accepts an array of up to 1,000 records. If every record succeeds you get 201 Created with the new PK_ID values. If some fail you get 207 Multi-Status with a per-record result array in request order, showing each record’s individual status code, so you can retry only the failures. v3 had no bulk insert, and each record required its own POST.

Two related endpoints are also new. POST /v4/tables/{tableId}/records/bulk/attachments uploads one file to multiple records and multiple attachment fields in a single request. PATCH /v4/tables/{tableId}/records/bulk/attachments/{fieldName}/fileInfo renames table attachment files that match a condition.

Echo replaces the response parameter

v3 write endpoints used a response query parameter to control the response type. v4 standardizes this: every write endpoint accepts echo=true to return the affected records. Without it, a POST returns just the PK_ID, and updates return the affected-record count.

Review changes by resource

Tables

GET /v4/tables/{tableId}/records/bulk/attachments/{fieldName}/fileInfo returns file metadata for multiple records in one call. v3 could return metadata for only one file per request, so multiple requests were needed.

Files become File Assets

  • All paths move from /v3/files to /v4/fileAssets/files and /v4/fileAssets/folders, and externalKey becomes folderId or fileId.
  • New: search files or folders by name across the whole account with GET /v4/fileAssets/files/search?name=….
  • New: create folders with POST /v4/fileAssets/folders. v3 could only list them.
  • New: fullFilePath and fullFolderPath properties in GET, PUT, and POST operations simplify uploading files to tables. Upload the file to All assets first, then use the fullFilePath returned in the response to update a File data type field.
  • Clearer status codes: multi-upload POST …/files/bulk returns 409 Conflict for name collisions, PUT returns 201 for a new file and 200 for an overwrite, and DELETE returns 204 No Content.

Directories

  • v3 returned directories and their users alongside other tables and records under /v3/tables. v4 returns them only under /v4/directories, which is cleaner now that permissions are separated by resource type.
  • v3 could only update or delete users in bulk using a Where query parameter. v4 adds per-user endpoints keyed by UserGUID at PATCH and DELETE /v4/directories/{directoryId}/users/{userId}, alongside /users/bulk endpoints with the condition in the body.
  • User activation moves the UserGUID into the path: POST …/users/{userId}/activate.
  • New: directory field design. Create, update, and delete directory fields programmatically with POST, PATCH, and DELETE …/fields. v3 had no directory design endpoints.
  • New: attachment files on user records. Download, upload, and delete per user, plus bulk metadata and rename.
  • Directory queries return directory-designated fields plus system attributes _status, _sign_in_method, and _2fa_status.

Outgoing webhooks

  • Webhook and event updates change from PUT to PATCH. Create, read, and delete are unchanged.
  • Webhook event creation uses objectId, either a tableId or directoryId, instead of objectName.
  • GET /v4/outgoingWebhooks/{webhookId}/events accepts an eventType query parameter: table.recordInsert, table.recordUpdate, or table.recordDelete.
  • New: PATCH …/regenerateSecret rotates a webhook’s signing secret without recreating the webhook.
  • New: GET /v4/schemas/outgoingWebhooks lists all webhooks with their event definitions in one call.

Bridge apps, Flex apps, and tasks

  • Bridge application endpoints are functionally unchanged. {externalKey} becomes {appId}, and bulk deployment moves to …/dataPages/bulk/deployment.
  • New: read access to Flex applications with GET /v4/flexApplications and GET /v4/flexApplications/{appId}.
  • Data import/export task endpoints return both active and inactive tasks, and are identified by a new 6-character alphanumeric {taskId} instead of the {externalKey} GUID used in v3.

Handle errors

v3 errors returned an HTTP status code with minimal body detail. Every v4 error returns a structured JSON body.
{
  "Code": "IncorrectQueryParameter",
  "Message": "The WHERE clause references a field that does not exist.",
  "Resource": "/v4/tables/a1b2c3/records",
  "RequestId": "7f3a9c…",
  "DocumentationUrl": "…/v4/errors/IncorrectQueryParameter",
  "Hint": { "Note": "…", "Remediation": "…" }
}
Code is machine-readable for programmatic handling, RequestId speeds up support investigations, and Hint carries remediation guidance. Also plan for 207 Multi-Status on bulk inserts. Structural deletes, such as deleting a table, folder, or Flex app, intentionally return 405, because schema deletion is not exposed through the API by design.

Build for AI and automation

v4 is designed to be consumed by AI agents and MCP integrations, not only by hand-written code. The specification embeds a machine-readable domain primer in the OpenAPI info.x-caspio-ai-context extension, and GET /v4/aiManifest serves that context along with focused specification lenses: data manager for runtime record work, designer for structural work, and automation for webhooks and triggered actions. Tools can load only the operations they need instead of the full 107-operation specification.

  • PRODUCT

  • Platform Overview
  • What Is Low Code?
  • Case Studies
  • Marketplace
  • Pricing
  • Get a Custom Demo
  • Free Trial
  • SOLUTIONS

  • Healthcare
  • Education
  • Government
  • Financial Services
  • Energy and Utilities
  • Nonprofits
  • Media
  • Consulting
  • RESOURCES

  • Resource Center
  • Caspio Academy
  • Online Help
  • Online Help
  • Onboarding
  • Get Certified
  • Professional Services
  • Managed Application Services
  • Support Center
  • Legal Center
  • COMPANY

  • Our Story
  • Careers
  • Leadership
  • News
  • Partner Programs
  • Referral Program
  • Academic Program
  • Discount Programs
  • Contact Us
  • TRENDING

  • HIPAA Compliance
  • SOC 2 Type 2 Compliance
  • FERPA Compliance
  • Build Custom CRM
  • Create Web Dashboards
  • Best Online Database
  • Build a Mini CRM SaaS in 1 Hour
  • Migrate MS Access Online
  • Launch Patient Portal
Caspio Logo

Caspio is the world’s leading cloud platform for building online database applications without coding.
Start a free trial today and experience the power of no-code.

Footer Partners

© 2026 Caspio, Inc. Sunnyvale, California. All rights reserved.

  • Privacy Statement
  • Terms of Use
  • Report Abuse
  • Feedback