
NetSuite's REST web services, not SOAP or RESTlets, are the right default for new NetSuite integrations as of NetSuite 2026.1: authenticate with OAuth 2.0 ahead of the 2027.1 Token-Based Authentication cutoff, run SuiteQL with bound parameters instead of string-built queries, batch high-volume syncs with homogeneous and sequential operations, and, as of the October 2026 monthly release, read exposed records through the native MCP-based AI Connector Service. Get the auth path or batch strategy wrong and the integration stalls in production. Get the new MCP scope wrong and you can hand an AI agent access to data, including banking records, it should never see.
This guide covers the full REST SuiteTalk surface as it stands after NetSuite's October 2026 monthly release, with the specific decisions that determine whether a NetSuite integration survives contact with production.
Oracle's own guidance is direct: starting with the 2026.1 release, new NetSuite integrations should use REST web services, not SOAP. SOAP is not being switched off for existing integrations, but Oracle has stopped investing feature work there. Every significant enhancement in the last two release cycles, homogeneous batch operations, bound SuiteQL parameters, saved search support, File Cabinet record access, has landed in REST first and, in some cases, only in REST.
RESTlets still have a place for custom server-side logic that needs SuiteScript running inside NetSuite, but for straightforward CRUD against standard and custom records, REST SuiteTalk is now the complete, actively developed path. If you're scoping a new integration in 2026, start there and only reach for RESTlets when REST genuinely can't do what you need.
If you've built against Procore's REST surface before, the shape will feel familiar: resource-per-record-type endpoints, OAuth bearer tokens, and a query language for anything that doesn't map cleanly to a single resource. Our Procore API integration guide walks the same auth-webhooks-sync structure if you're comparing patterns across platforms. fluidlabs has built production NetSuite integrations, so this guide reflects what actually breaks, not just what the docs say should work.
For any new integration, use OAuth 2.0, not Token-Based Authentication (TBA). Oracle has confirmed that starting with NetSuite 2027.1, you will no longer be able to create new integrations using TBA with SOAP, REST, or RESTlets. Existing TBA integrations keep running past that date, but nothing new can be built on it, and PKCE is required for the OAuth 2.0 authorization code flow going forward.
Two OAuth 2.0 grant types cover most integration shapes:
Practical migration note: if you're mid-build right now, don't start a new integration on TBA even if your target go-live is before 2027.1. The setup cost of OAuth 2.0 is the same whether you do it now or later, and building on TBA today just creates a second migration project in twelve months.
Use bound parameters, not string-concatenated values, in every SuiteQL query that includes external input. As of NetSuite 2026.2, REST web services support anonymous bound parameters in SuiteQL search operations: a bound parameter is a placeholder in the query whose value is supplied separately in the request body at execution time, rather than being spliced directly into the query string.
Before this, the common pattern was building the WHERE clause by concatenating variables into the SQL text, the same anti-pattern that causes SQL injection vulnerabilities in any database layer. Bound parameters close that off and also make the query easier to reuse: you write the query shape once and swap in different values per call.
A SuiteQL request to the /query/v1/suiteql endpoint with bound parameters looks roughly like a q field containing the parameterized query text, plus a params array supplying the values in order. If your integration code was built before 2026.2 and still concatenates filter values into the query string, that's worth fixing now, both for security and because NetSuite 2026.2 also changed the default sort order for generic transaction queries: queries that relied on an implicit, undeclared sort order can silently return rows in a different sequence than before, which is exactly the kind of bug that surfaces weeks after go-live in a paginated sync. Always specify an explicit ORDER BY in SuiteQL if your integration depends on row order, including for cursor-based pagination.
Use NetSuite's batch operations to add, update, delete, or upsert multiple records of the same type in a single asynchronous REST request, rather than making one request per record. Before homogeneous batch support existed, teams pushing high-volume data, transactions, inventory updates, customer records, either accepted the round-trip overhead of one-record-per-call REST traffic or fell back to CSV imports and async SuiteScript jobs to get acceptable throughput.
Two batch behaviors matter for integration design:
As of the October 2026 monthly release, task results in asynchronous batch operations also carry a "rel": "request" link back to the originating request body, method, and URL. That closes a real gap: previously you could correlate a result to a task ID, but not easily to the exact endpoint and payload that produced it, which made debugging a partially-failed batch harder than it needed to be. If your integration logs batch results, start capturing this request link now, it will save time the first time a batch job fails partway through.
The NetSuite AI Connector Service is Oracle's native Model Context Protocol (MCP) endpoint for NetSuite, letting external AI clients like Claude or ChatGPT read and act on NetSuite data through a standard tool interface instead of a custom integration. It ships with the MCP Standard Tools SuiteApp, which moved to version 3.0.0 in the October 2026 monthly release and added File Cabinet tools, record actions, and record transformation to the existing record-read tools.
The scope question matters more than the setup question. As of the October 19, 2026 update, Bank Reconciliation Suggestion records are exposed through REST web services and through the AI Connector Service's MCP interface, meaning an AI client with the right role permissions can now read bank reconciliation data directly. The Bank Reconciliation Suggestion REST record documents exactly what fields are retrievable.
This is the newest way a NetSuite integration goes wrong, not through a broken auth flow, but through an over-broad MCP role. The access an agent has through the AI Connector Service is governed by the same role and permission model as everything else in NetSuite: if a role has access to bank reconciliation records, an MCP client authenticated as that role does too. Before connecting any AI client to the AI Connector Service, scope a dedicated role to exactly the record types that agent needs to read or act on, the same discipline you'd apply to any service account, and audit it the same way you'd audit a RESTlet's permissions. We wrote more about the scope implications of this exposure in NetSuite's AI Connector Opens Banking Data to MCP Agents.
If you already have a REST integration running against NetSuite, the October 2026 monthly release for 2026.2 is worth a short review pass, not a rebuild. The changes that touch integration code:
rel: request link for debugging partial failures.None of these are breaking changes to existing REST calls. They're additive, which is the normal NetSuite release pattern, but additive changes to what a role or token can reach are exactly the ones that get missed in a routine release review.
ORDER BY to SuiteQL queries your integration depends on for consistent ordering or pagination.Does NetSuite still support SOAP web services? Yes, existing SOAP integrations continue to run, but Oracle recommends building all new integrations on REST web services starting with NetSuite 2026.1, since new features are landing in REST first.
When does NetSuite stop supporting Token-Based Authentication? Starting with NetSuite 2027.1, you can no longer create new integrations using TBA with SOAP, REST, or RESTlets. Existing TBA integrations keep working, but any new build should use OAuth 2.0 now.
What's the maximum number of results from a SuiteQL query through REST? A SuiteQL query executed through REST web services can return a maximum of 100,000 results, so large exports need pagination regardless of batch strategy.
Can an AI agent read my NetSuite banking data through MCP? Only if the role it authenticates as has permission to the Bank Reconciliation Suggestion record type, which NetSuite exposed through REST and the AI Connector Service's MCP interface in the October 19, 2026 update. Scope the role explicitly rather than reusing a broad integration role.
Do I need SuiteScript to use the NetSuite REST API? No. REST web services, SuiteQL, and batch operations work entirely through HTTP requests and OAuth 2.0 authentication. SuiteScript (and RESTlets built on it) is only needed for custom server-side logic REST doesn't cover.
Getting the auth path, the SuiteQL query layer, and the MCP scope right the first time is the difference between a NetSuite integration that runs quietly for years and one that needs a rebuild before its first TBA deadline. If you're scoping a NetSuite integration, whether it's a sync into a custom system or an ISV connector, talk to the fluidlabs team about how we approach the auth, batch, and MCP decisions in production. For more integration breakdowns like this one, see the fluidlabs resources library.
Thirty minutes with an engineer. Within 48 hours you get a scoped plan and a fixed price in writing, or a straight “you don't need us.” No charge, nothing to sign.
Talk to an engineer →or email us at hello@fluidlabs.com