NetSuite REST Record API URL Builder
NetSuite REST web services use a predictable URL pattern, but small details such as the account ID format for sandboxes trip people up. This builder produces the URLs for the common calls so you can paste them into Postman or your code.
Fill in
Use lowercase and replace underscores with hyphens, for example 1234567-sb1 for a sandbox account 1234567_SB1.
REST record type name, for example customer, salesOrder, vendorBill, inventoryItem.
REST query filter value for the q parameter.
Get one record by internal ID
GET https://1234567.suitetalk.api.netsuite.com/services/rest/record/v1/salesOrder/4821?fields=tranId,entity,total,status Authorization: <OAuth 1.0 TBA header or OAuth 2.0 bearer token> Content-Type: application/json
Get one record by external ID
GET https://1234567.suitetalk.api.netsuite.com/services/rest/record/v1/salesOrder/eid:SO-EXT-1001 Authorization: <OAuth header>
List records with filter and paging
GET https://1234567.suitetalk.api.netsuite.com/services/rest/record/v1/salesOrder?q=status IS salesOrder:B&limit=100&offset=0 Authorization: <OAuth header>
Run a SuiteQL query
POST https://1234567.suitetalk.api.netsuite.com/services/rest/query/v1/suiteql?limit=100&offset=0
Authorization: <OAuth header>
Content-Type: application/json
Prefer: transient
{ "q": "SELECT id, tranid FROM transaction WHERE type = 'SalesOrd' FETCH FIRST 10 ROWS ONLY" }Record metadata (JSON schema)
GET https://1234567.suitetalk.api.netsuite.com/services/rest/record/v1/metadata-catalog/salesOrder Accept: application/schema+json Authorization: <OAuth header>
Verify the record type name against the REST API Browser in your account (Setup > Integration), since not every record is exposed through REST and some names differ from SuiteScript record types. The q filter syntax is specific to REST and differs from SuiteQL. Always test in a sandbox account first.
NetSuite integration review
Optional review of your REST integration design, authentication and concurrency approach.
Optional. The tool and every export work without this. No spam.
How to use the builder
Enter the account ID the way it appears in your NetSuite URL, lowercase with underscores replaced by hyphens. Fill in the record type, the internal ID or external ID, the fields you want and the paging size. The output lists a single-record GET, an external ID GET, a filtered list, a SuiteQL POST and a metadata request. Copy the one you need and add the authorization header from your TBA or OAuth 2.0 setup.
URL structure
The host is the account ID followed by suitetalk.api.netsuite.com. Record calls live under services/rest/record/v1, SuiteQL under services/rest/query/v1/suiteql and the metadata catalog under services/rest/record/v1/metadata-catalog. An external ID is addressed with the eid: prefix in place of the internal ID. The fields parameter limits the response, and expandSubResources returns sublists such as item lines instead of links to them.
- Sandbox hosts use a hyphenated suffix such as 1234567-sb1
- Use eid: before an external ID
- limit and offset page list results
- SuiteQL needs the Prefer: transient header
Authentication and permissions
REST calls need either OAuth 1.0 token-based authentication or OAuth 2.0. The integration role must have the REST Web Services permission and the record-level permissions for what you read or write. A 403 or insufficient permission error usually points to the role, not the URL. Calls also count against concurrency limits for the account, so avoid running many parallel requests from one integration.
Common mistakes
Typical errors are using the production host for a sandbox account, leaving an uppercase or underscore in the account segment, asking for a record type REST does not support, and expecting sublists in the default response. Another is paging without a stable order, which can duplicate or skip rows when data changes between pages.
Frequently Asked Questions
What is the NetSuite REST API base URL?
It is https://ACCOUNTID.suitetalk.api.netsuite.com/services/rest followed by record/v1, query/v1 or another service path. The account ID is lowercase and underscores become hyphens, so a sandbox looks like 1234567-sb1.
How do I fetch a record by external ID?
Replace the internal ID in the path with eid: and the external ID value, for example record/v1/customer/eid:CUST-100. The record must have the external ID set, and the external ID must be unique for that record type.
Does REST return all sublist data?
By default sublists appear as links. Add expandSubResources=true to include them inline, or follow the links. For large transactions, requesting the sublist separately can be lighter.
Can I run saved searches over REST?
Not directly through the record service. Use SuiteQL for query needs, or expose a saved search through a RESTlet if you need its exact behavior.
If you are connecting NetSuite to other systems, Netray builds custom integrations and read-only AI over NetSuite data, with the underlying calls shown for review.
Related Tools
SuiteQL Query Generator
Fill in a table, columns, filter and sort and get a SuiteQL statement ready for the N/query module, the REST SuiteQL endpoint or the SuiteAnalytics Workbook.
NetSuiteNetSuite Token-Based Authentication Setup Checklist
Every step to configure token-based authentication for NetSuite REST, SOAP or RESTlet calls, from features and roles to tokens and test calls.
NetSuiteNetSuite SuiteTalk SOAP to REST Migration Checklist
A step-by-step checklist for replacing SOAP calls with REST record and SuiteQL calls, from inventory to cutover and rollback.
NetSuiteNetSuite Internal ID Lookup Worksheet
An editable table to record internal IDs, script IDs and external IDs per environment, so scripts and integrations stop hardcoding guesses.
More NetSuite tools
See all- NetSuite Saved Search Formula Generator
- NetSuite CSV Import Template Guide
- NetSuite Role Permission Matrix Worksheet
- NetSuite Inventory Costing Method Reference
- NetSuite Month End Close Checklist
- NetSuite License Cost Estimator
- NetSuite User Access Request Form Template
- NetSuite Custom Record Design Spec Template
- NetSuite SuiteScript Deployment Handover Template