Essembi Docs

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.

SettingValue
Base URLhttps://api.essembi.ai
Auth headerAuthorization: <API Key> on every call. Create keys in Settings > API Keys.
VerbsEach endpoint expects a specific HTTP verb. Using the wrong verb returns an error.
ResponsesErrors use standard HTTP response codes. 200 means the request succeeded.
Result limitEndpoints that return Result data return at most 10,000 cells (rows times columns).
cURL
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/Create and PATCH /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.

EndpointDescription
GET/Security/AuthenticateValidates that the API key is active and returns the associated app id.
GET/Tables/ListGet all tables in an app. Table IDs are used in other endpoints.
GET/Tables/{tableId}/FieldsGet all fields in a table. Field IDs (or names) are used when creating, updating, and filtering.
GET/Tables/{tableId}/RecordsGet filtered table data. Record IDs are used when creating foreign key relationships.
POST/Tables/{tableId}/Records/CreateCreate a record, such as a ticket.
PATCH/Tables/{tableId}/Records/{recordId}/EditUpdate an existing record.
PATCH/Tables/{tableId}/Records/{recordId}/ActivateActivate an inactive or archived record.
PATCH/Tables/{tableId}/Records/{recordId}/InactivateInactivate (archive) an active record.
GET/DataModels/ListGet all data models in an app. Data model IDs are used when getting data model results.
GET/DataModels/{dataModelId}/ResultsGet filtered results from a data model configured in Settings > Data Models.
POST/Integrations/DataImport/{dataImportId}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/Integrations/DataImport/{dataImportId}

The optional type query parameter sets what the endpoint expects:

ValueBehavior
type=jsonRequires a JSON body.
type=excelRequires an uploaded file.
OmittedUses 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 (or Columns) as a string array, plus data (or Data) as an array of row arrays.
  • columns plus data as an array of objects keyed by column name.
  • schema.columns as objects with name, plus data.
JSON
{
  "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
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.

JSON
{
  "success": true,
  "message": "...",
  "totalRecordsLoaded": 2
}

For FTP-based delivery into the same Data Import configurations, see Data Imports.

Data Transfer Objects

ObjectFields
Tableidnameactive
FieldidtableIdnameactiverequiredtypenullable

Plus type-specific flags: alphaChannel and recordColor for color fields, recordDueDate for date fields, integerDigits and decimalDigits for decimal fields, recordSort for integer fields, foreignTableId for record reference fields, recordName and recordIcon for short text fields, recordAssignedTo for user fields, and multiSelect, values and columns for drop down fields.

DropDownRowidvalues
Resultfields (ResultField[]), rows (ResultRow[])
ResultFieldfieldIddataModelTableId

dataModelTableId is only returned from DataModels endpoints.

ResultRowidactivevalues
RecordUpdatetableIdrecordId
DataImportResultsuccessmessagetotalRecordsLoaded
DataModelidnameactivedataModelTables
DataModelTableidtableIdtableNamealiasprimary

A table can appear more than once in a data model, so dataModelTableId and tableId are not the same.

ResultsRequestmatchType (any, all, or none), activeType (active, inactive, or all), filters (Filter[])
FilterdataModelTableIdfieldIdoperatorvaluevalue2

dataModelTableId is only for data model results. value2 is required for range operators such as Between.

Filter Operators

Pass the enum name as the operator string.

GroupOperators
PresenceEmptyNotEmpty
ComparisonEqualGreaterThanLessThanGreaterThanOrEqualLessThanOrEqual
RangeBetweenOverlapsDayRangeWeekRangeMonthRangeYearRange
TextContainsStartsWithEndsWithContainedIn
Relative periodsInTheLastYearInTheLastQuarterInTheLastMonthInTheLastWeekInTheNextYearInTheNextQuarterInTheNextMonthInTheNextWeekLastYearLastQuarterLastMonthLastWeekNextYearNextQuarterNextMonthNextWeekThisYearThisQuarterThisMonthThisWeek
Days and nowYesterdayTodayTomorrowNow
Relative hoursInTheLastHourInTheLast4HoursInTheLast8HoursInTheLast12HoursInTheLast24HoursInTheNextHourInTheNext4HoursInTheNext8HoursInTheNext12HoursInTheNext24Hours
AssignmentAssignedToTeam

RecordValues

Values to assign when creating or updating a record, as an object mapping field id or field name to field value:

JSON
{
  "values": {
    "123": "New ticket summary",
    "Status": "Open"
  }
}

Rejoining the server...

Rejoin failed... trying again in seconds.

Failed to rejoin.
Please retry or reload the page.

The session has been paused by the server.

Failed to resume the session.
Please retry or reload the page.