Data Model
Supersonic has no hardcoded tables. The entire schema is dynamic — each workspace defines its own data types, fields, and pipelines at runtime.Core Concepts
Data Types (ObjectType)
A data type defines an entity in the CRM. Default types include Company, Contact, and Deal, but workspaces can create any custom type. Each data type has:- A slug (e.g.
company,deal,contact) — used in all tool calls - A name and icon for display
- A set of field definitions
objects.list to discover all data types in a workspace.
Fields (FieldDefinition)
Fields define the shape of records. Each field has a slug, label, type, and validation rules. Supported field types:| Type | Description |
|---|---|
text | Free text |
number | Numeric value |
email | Email address |
phone | Phone number |
date | Date value |
select | Single choice from options |
multi_select | Multiple choices from options |
url | Web URL |
boolean | True/false |
currency | Monetary value with currency code |
[{"label": "SaaS", "value": "saas"}, ...]
Records
A record is an instance of a data type. It stores data as a JSON object where keys are field slugs:Relations
Relations are typed links between two records. For example, a Contact can be linked to a Company. Userecords.link and records.unlink to manage them.
When you call records.get, the response includes all related records.
Pipelines (List)
A pipeline (internally called a List) is a Kanban board scoped to a data type. For example, a “Sales Pipeline” scoped to the Deal data type. Each pipeline has stages (e.g. “Qualification”, “Proposal”, “Negotiation”, “Closed Won”).Pipeline Entries (ListEntry)
When a record is added to a pipeline, it becomes an entry with:- A stage — which column it’s in
- A position — its order within that column
- Optional entry-level data — custom fields specific to the pipeline
lists.add_entry to add records, lists.update_entry to move between stages.
Important
Always callobjects.list before creating or querying records. Each workspace has a different schema, and field slugs vary. Never hardcode field names.