API Library
Jump To
API Authentication / Overview
The Essembi REST API lets you read and write table records, pull data model results, and run Data Imports from your own systems. Every call is authenticated with an API key.
| Setting | Value |
|---|---|
| Base URL | https://api.essembi.ai |
| Auth header | Authorization: <API Key> on every call. Create keys in Settings > API Keys. |
| Verbs | Each endpoint expects a specific HTTP verb. Using the wrong verb returns an error. |
| Responses | Errors use standard HTTP response codes. 200 means the request succeeded. |
| Result limit | Endpoints that return Result data return at most 10,000 cells (rows times columns). |
curl https://api.essembi.ai/Security/Authenticate \
-H "Authorization: <API Key>"Ways to Create and Update Records
- Table record endpoints. Create or edit one record at a time with
POST /Tables/{tableId}/Records/CreateandPATCH /Tables/{tableId}/Records/{recordId}/Edit. - Data Import API. Run a configured Data Import with JSON or an uploaded Excel, JSON or delimited file to insert and update many records in one call.
- Essembi FTP + Data Import. Upload files to the Essembi-provided FTP site. Essembi pulls the files into a Data Import for insert and update processing. See Data Imports.
Endpoints
All paths are relative to https://api.essembi.ai.
| Endpoint | Description |
|---|---|
GET/ | Validates that the API key is active and returns the associated app id. |
GET/ | Get all tables in an app. Table IDs are used in other endpoints. |
GET/ | Get all fields in a table. Field IDs (or names) are used when creating, updating, and filtering. |
GET/ | Get filtered table data. Record IDs are used when creating foreign key relationships. |
POST/ | Create a record, such as a ticket. |
PATCH/ | Update an existing record. |
PATCH/ | Activate an inactive or archived record. |
PATCH/ | Inactivate (archive) an active record. |
GET/ | Get all data models in an app. Data model IDs are used when getting data model results. |
GET/ | Get filtered results from a data model configured in Settings > Data Models. |
POST/ | Runs a configured Data Import (Settings > Data Imports) to insert and/or update records from JSON or an uploaded file. |
Execute Data Import via API
Use this endpoint to run the same Data Import configurations available in the app. The Data Import's Transform & Load Script controls insert vs update behavior.
POSThttps://api.essembi.ai/
The optional type query parameter sets what the endpoint expects:
| Value | Behavior |
|---|---|
type=json | Requires a JSON body. |
type=excel | Requires an uploaded file. |
| Omitted | Uses the JSON body when Content-Type is application/json. Otherwise uses the uploaded file. |
Option A: JSON body
Send the header Content-Type: application/json. These JSON shapes are accepted:
columns(orColumns) as a string array, plusdata(orData) as an array of row arrays.columnsplusdataas an array of objects keyed by column name.schema.columnsas objects withname, plusdata.
{
"columns": ["Part", "Standard Cost"],
"data": [
["ABC-100", 12.5],
["ABC-200", 18.0]
]
}Option B: File upload (Excel / JSON / delimited)
Send multipart/form-data with a file field named file (or the first form file). The file extension must match the Data Import File Type:
- Excel Data Import requires
.xlsx. - JSON Data Import requires
.json. - Delimited Data Import requires delimited text per the import's delimiter settings.
curl -X POST "https://api.essembi.ai/Integrations/DataImport/{dataImportId}?type=excel" \
-H "Authorization: <API Key>" \
-F "file=@parts.xlsx"Responses
A successful run returns success: true, a message, and totalRecordsLoaded.
{
"success": true,
"message": "...",
"totalRecordsLoaded": 2
}For FTP-based delivery into the same Data Import configurations, see Data Imports.
Data Transfer Objects
| Object | Fields |
|---|---|
| Table | idnameactive |
| Field | idtableIdnameactiverequiredtypenullablePlus type-specific flags: |
| DropDownRow | idvalues |
| Result | fields (ResultField[]), rows (ResultRow[]) |
| ResultField | fieldIddataModelTableId
|
| ResultRow | idactivevalues |
| RecordUpdate | tableIdrecordId |
| DataImportResult | successmessagetotalRecordsLoaded |
| DataModel | idnameactivedataModelTables |
| DataModelTable | idtableIdtableNamealiasprimaryA table can appear more than once in a data model, so |
| ResultsRequest | matchType (any, all, or none), activeType (active, inactive, or all), filters (Filter[]) |
| Filter | dataModelTableIdfieldIdoperatorvaluevalue2
|
Filter Operators
Pass the enum name as the operator string.
| Group | Operators |
|---|---|
| Presence | EmptyNotEmpty |
| Comparison | EqualGreaterThanLessThanGreaterThanOrEqualLessThanOrEqual |
| Range | BetweenOverlapsDayRangeWeekRangeMonthRangeYearRange |
| Text | ContainsStartsWithEndsWithContainedIn |
| Relative periods | InTheLastYearInTheLastQuarterInTheLastMonthInTheLastWeekInTheNextYearInTheNextQuarterInTheNextMonthInTheNextWeekLastYearLastQuarterLastMonthLastWeekNextYearNextQuarterNextMonthNextWeekThisYearThisQuarterThisMonthThisWeek |
| Days and now | YesterdayTodayTomorrowNow |
| Relative hours | InTheLastHourInTheLast4HoursInTheLast8HoursInTheLast12HoursInTheLast24HoursInTheNextHourInTheNext4HoursInTheNext8HoursInTheNext12HoursInTheNext24Hours |
| Assignment | AssignedToTeam |
RecordValues
Values to assign when creating or updating a record, as an object mapping field id or field name to field value:
{
"values": {
"123": "New ticket summary",
"Status": "Open"
}
}