Getting Started
The SuiteOp Public API exposes the same operations your dashboard uses over a conventional REST interface. Every operation is authenticated with a secret API key scoped to your organization, or with an OAuth 2.1 access token issued to an app acting on a user’s behalf. The same operations are also available to AI assistants through the hosted MCP server.
Base URLs
Section titled “Base URLs”The API is multi-region. All requests must go to the region where your organization’s data lives. An API key is only known to the region that issued it, so sending it to another region returns 401 authentication_error with the message Invalid API key.
| Region | Base URL |
|---|---|
| US | https://api-us.suiteop.com/api/v1 |
| EU | https://api-eu.suiteop.com/api/v1 |
| APAC | https://api-apac.suiteop.com/api/v1 |
Creating an API Key
Section titled “Creating an API Key”-
Open the SuiteOp dashboard and go to Settings → Developer.
-
Click Create API Key, give it a name, and select the permission scopes your integration needs.
-
Copy the key immediately — it is shown only once. Store it in a secrets manager (environment variable, AWS Secrets Manager, GCP Secret Manager, etc.).
Keys issued by the production API start with sk_live_, and the production regional base URLs accept only sk_live_ keys. (sk_test_ keys exist only on SuiteOp’s internal non-production servers; there is no customer sandbox.)
First Request
Section titled “First Request”List tasks with a single curl call. Replace <region> with us, eu, or apac, and <key> with your API key.
curl https://api-<region>.suiteop.com/api/v1/tasks \ -H "Authorization: Bearer sk_live_your_key_here"Response Envelope
Section titled “Response Envelope”Every response is wrapped in a consistent envelope:
Success (single resource)
{ "data": { "id": "…", "nameText": "Deep clean unit 4B", "status": "not_started" }, "meta": { "requestId": "3f1c9a52-…" }}Success (list)
{ "data": [{ "id": "…", "nameText": "Deep clean unit 4B", "status": "not_started" }], "meta": { "requestId": "3f1c9a52-…", "pagination": { "total": 42, "limit": 20, "offset": 0 } }}Error
{ "error": { "type": "not_found_error", "code": "NOT_FOUND", "message": "Task not found: 7d0e…" }, "meta": { "requestId": "3f1c9a52-…" }}The meta.requestId field uniquely identifies every request and is also returned in the X-Request-Id response header. Include it when contacting support. Fields shown here are abbreviated; see Errors for the full error format.
Interactive Reference
Section titled “Interactive Reference”Every endpoint, field and enum is in the API Reference — the same operation catalogue this site renders from the SuiteOp specification. It asks you to sign in with your SuiteOp account, matching the API itself.