Getting Started with the Simply360 API
Set up your environment, install the TypeScript SDK, create an API key, and make your first Simply360 API call.
Overview
This guide walks you through setting up your environment, installing the Simply360 TypeScript SDK, creating an API key, and making your first API call. You can be up and running in under five minutes.
Prerequisites
Before you begin, make sure you have:
- A Simply360 account with access to at least one team.
- An API key generated from your Simply360 dashboard. Navigate to Team Administration → API Keys and click Create API Key. Copy the key immediately — the full value is only shown once.
- Node.js 18+ installed if using the TypeScript SDK.
Your API key will look like this:
s360_live_xxxxxxxxxxxxxxxxxxxxxxxxxxxx
The examples below use production, which is the default environment. Staging is a paid add-on or an included offer benefit, while Development is a separate, limited preview add-on or beta grant. If your Simply360-powered app has non-production access, create a separate API key in that environment and use the matching endpoint from Environments.
Install the SDK
The SDK is currently in developer preview and is not yet published to the public npm registry — contact developers@simply360.app for access, and watch the API Changelog for the public release announcement. Once available, install it with:
npm install @simply360/sdk
# or
yarn add @simply360/sdk
# or
pnpm add @simply360/sdk
The SDK ships with full TypeScript declarations — no separate @types package is needed.
Configure the Client
Create a client instance with your API key. Store the key in an environment variable rather than hard-coding it.
import { Simply360 } from '@simply360/sdk';
const s360 = new Simply360({
apiKey: process.env.S360_API_KEY!, // s360_live_...
});
The client handles authentication, request building, and JSON serialization for you.
Your First API Call: List Records
Retrieve a list of records from one of your DataCollections. You will need the collection's simplyId, which you can find in the Simply360 dashboard under the collection's settings.
TypeScript SDK
import { Simply360 } from '@simply360/sdk';
const s360 = new Simply360({
apiKey: process.env.S360_API_KEY!,
});
async function main() {
const response = await s360.dataRecords.list({
dataCollectionSimplyId: 'XXXX-XXXX-XXXX',
limit: 10,
});
console.log(`Found ${response.data.length} records out of ${response.meta.pagination.total}`);
for (const record of response.data) {
console.log(` ${record.simplyId}:`, record.fields);
}
}
main();
Raw HTTP (fetch)
const apiKey = process.env.S360_API_KEY!;
const dataCollectionSimplyId = 'XXXX-XXXX-XXXX';
const response = await fetch(
`https://api.simply360.app/v1/data-records?dataCollectionSimplyId=${dataCollectionSimplyId}&limit=10`,
{
headers: {
Authorization: `Bearer ${apiKey}`,
'Content-Type': 'application/json',
},
},
);
const body = await response.json();
console.log(`Found ${body.data.length} records out of ${body.meta.pagination.total}`);
cURL
curl -s "https://api.simply360.app/v1/data-records?dataCollectionSimplyId=XXXX-XXXX-XXXX&limit=10" \
-H "Authorization: Bearer $S360_API_KEY" | jq '.data[] | {simplyId, fields}'
Create a Record
Create a new record by providing the collection's simplyId and field values. Field keys are each DataField's simplyId, not the human-readable label.
const created = await s360.dataRecords.create({
dataCollectionSimplyId: 'XXXX-XXXX-XXXX',
fields: {
'FLDS-FRST-NAME': 'Jane',
'FLDS-LAST-NAME': 'Doe',
'FLDS-EMAL-ADDR': 'jane.doe@example.com',
},
});
console.log(`Created record: ${created.data.simplyId}`);
To find the field simplyIds for a collection, call s360.dataCollections.listFields(dataCollectionSimplyId) or open the collection in the dashboard.
Error Handling
The SDK throws an ApiError for any non-2xx response. Each ApiError includes the HTTP statusCode, an error code, a message, and optional details.
import { Simply360, ApiError } from '@simply360/sdk';
const s360 = new Simply360({ apiKey: process.env.S360_API_KEY! });
try {
await s360.dataRecords.get('NONE-XIST-ENT0');
} catch (error) {
if (error instanceof ApiError) {
console.error(`API error ${error.statusCode} (${error.code}): ${error.message}`);
if (error.statusCode === 404) {
console.error('Record not found.');
}
} else {
throw error;
}
}
Next Steps
- Environments — Production, Staging, and Development endpoints, access, and credential isolation.
- Authentication — API keys, session tokens, and Cognito JWT.
- Pagination, Sorting & Field Selection — Paginate through large result sets and reduce response payload size.
- Rate Limiting — Per-tier limits and how to handle
429responses. - Error Handling — Error envelope format and recommended handling patterns.
- TypeScript SDK — Full SDK reference, namespaces, and configuration options.
- API Reference — Browse every endpoint with request and response schemas.