Public API
Use SuitePortal's Public API to query your synced NetSuite data at scale. Build integrations, dashboards, and workflows without hitting NetSuite's API limits.
SuitePortal syncs your NetSuite data into a managed data warehouse (PostgreSQL + MongoDB). The Public API lets you query this data with nearly unlimited API requests — no SuiteQL concurrency limits, no governance units, no rate throttling.
Why Use the Public API?
NetSuite's native APIs have strict concurrency and governance limits that make it difficult to build real-time integrations. SuitePortal solves this by:
- Syncing data on a schedule — NetSuite data flows into SuitePortal's database via configured syncs
- Exposing a fast REST API — Query the synced data with standard REST endpoints, pagination, filtering, and sorting
- No NetSuite load — API requests hit SuitePortal's database, not NetSuite. Your integration can make thousands of requests without affecting NetSuite performance.
| NetSuite REST API | SuitePortal Public API | |
|---|---|---|
| Concurrency | 5 concurrent requests | Unlimited |
| Rate limits | Governance units | None |
| Response time | 1-5 seconds | ~100ms |
| Data freshness | Real-time | Last sync (configurable) |
| Authentication | OAuth 2.0 / TBA | API key |
Setup
1. Define Your API Schema
The schema controls which record types are exposed and what fields are included.
- Go to Settings > API in your tenant portal
- Click Create Schema (starts as a draft)
- Add endpoints — each maps to a synced record type (e.g., invoices, customers)
- For each endpoint, select which fields to include
- Configure available filters and sort options
2. Publish the Schema
When your schema is ready:
- Click Publish — this locks the schema and makes the API callable
- The version (e.g.,
v1) is now live - Future changes require creating a new version
Published schemas are immutable. To make changes, create a new draft version, edit it, and publish. The previous version is frozen but remains accessible.
3. Create an API Key
- Go to Settings > API > Keys
- Click Create API Key
- Copy the key immediately (it's only shown once)
- Optionally configure scopes to restrict which endpoints and versions the key can access
4. Make Requests
All requests require two headers:
curl https://suiteportal.io/api/public/v1/invoices \
-H "Authorization: Bearer sp-your-api-key" \
-H "x-tenant-id: your-tenant-id"Endpoints
Each endpoint you define in the schema becomes a REST route:
| Method | Route | Description |
|---|---|---|
GET | /api/public/{version}/{resource} | List records (paginated) |
GET | /api/public/{version}/{resource}/{id} | Get a single record |
Pagination
List endpoints return paginated results:
{
"data": [...],
"pagination": {
"page": 1,
"pageSize": 50,
"total": 1234,
"totalPages": 25
}
}Use ?page=2&pageSize=100 query parameters to paginate.
Filtering
If your schema defines filterable fields, use query parameters:
GET /api/public/v1/invoices?status=open&tranDate_after=2025-01-01Sorting
GET /api/public/v1/invoices?sort=tranDate&order=descOpenAPI Documentation
Every published schema auto-generates an OpenAPI 3.1 spec with interactive docs:
- Spec:
GET /api/public/openapi/{version}— JSON spec for code generation - Preview:
GET /api/public/openapi/{version}/preview— Interactive Scalar API reference UI
You can also preview draft schemas by appending ?draft=true (requires authentication).
API Key Scopes
Scopes restrict what an API key can access:
| Scope | Example | Description |
|---|---|---|
| Version | v1 | Restrict to a specific API version |
| Resource | invoices, customers | Restrict to specific endpoints |
| Permission | read, write | Control access level |
A key with no scopes defaults to read access on all resources and versions.
Use Cases
Real-Time Dashboards
Build custom dashboards (Retool, Metabase, etc.) that pull live data from the API without touching NetSuite.
E-Commerce Integration
Feed order and invoice data to your storefront, ERP middleware, or fulfillment systems.
Custom Reporting
Query transaction data programmatically for custom reports, aggregations, or exports that NetSuite saved searches can't handle.
Mobile Apps
Power mobile experiences with fast API responses and no NetSuite concurrency concerns.
Next Steps
- Connect NetSuite — Set up the data connection
- Configure Syncs — Keep API data fresh