Skip to content

CRUD Operations

Every entity in your workspace gets a full set of CRUD endpoints. The entity name in the URL matches the entity name defined in your schema.

Endpoint Pattern

/api/v1/{orgSlug}/{workspaceSlug}/{entityName}
/api/v1/{orgSlug}/{workspaceSlug}/{entityName}/{id}

List Records

http
GET /api/v1/acme-corp/sales/Customer?page=0&size=20
Authorization: Bearer sk_live_abc123...

Response (200):

json
{
  "data": [
    { "id": 1, "name": "Jane Doe", "email": "jane@example.com" },
    { "id": 2, "name": "John Smith", "email": "john@example.com" }
  ],
  "meta": {
    "page": 0,
    "size": 20,
    "totalElements": 150,
    "totalPages": 8
  }
}

See Pagination & Sorting for details on paging and sort parameters.

Get a Single Record

http
GET /api/v1/acme-corp/sales/Customer/42
Authorization: Bearer sk_live_abc123...

Response (200):

json
{
  "data": {
    "id": 42,
    "name": "Jane Doe",
    "email": "jane@example.com",
    "age": 30
  }
}

Returns 404 if the record doesn't exist.

Create a Record

http
POST /api/v1/acme-corp/sales/Customer
Authorization: Bearer sk_live_abc123...
Content-Type: application/json

{
  "name": "Jane Doe",
  "email": "jane@example.com",
  "age": 30
}

Response (201):

json
{
  "data": {
    "id": 43,
    "name": "Jane Doe",
    "email": "jane@example.com",
    "age": 30
  }
}

The id is generated automatically. Fields not included in the request default to null (if the column allows it).

Update a Record

http
PUT /api/v1/acme-corp/sales/Customer/42
Authorization: Bearer sk_live_abc123...
Content-Type: application/json

{
  "name": "Jane Smith",
  "email": "jane.smith@example.com"
}

Response (200):

json
{
  "data": {
    "id": 42,
    "name": "Jane Smith",
    "email": "jane.smith@example.com",
    "age": 30
  }
}

Only the fields you include are updated. Omitted fields keep their current values.

Delete a Record

http
DELETE /api/v1/acme-corp/sales/Customer/42
Authorization: Bearer sk_live_abc123...

Response: 204 No Content

Returns 404 if the record doesn't exist.

Relationships

If your entities have relationships (e.g., an Order belongs to a Customer), you can include related data in responses using the expand query parameter and control which fields are returned with fields.

See Expanding Relationships and Field Selection for details.

Content Type

All request bodies must use Content-Type: application/json. Dates are formatted as ISO 8601 strings (2026-01-15T10:30:00Z).

SchemaStack Documentation