API & WebhooksRecords

Records

CRUD operations for custom entity records, nested under entity types.

Records API

Manage records for your custom entity types. Records are nested under their entity type slug. Permissions are dynamic — for an entity type with slug projects, the required abilities are projects.view, projects.create, projects.edit, and projects.delete. The general records.* abilities also work as a fallback.


List Records

GET /api/v1/entity-types/{slug}/records — Permission: {slug}.view or records.view

Query Parameters

ParameterTypeRequiredDescription
searchstringNoSearch across custom field values
filtersstringNoJSON-encoded advanced filter object
per_pageintegerNoResults per page, 1–100 (default: 25)

Example Request

curl -X GET "https://your-domain.com/api/v1/entity-types/projects/records?per_page=10" \
  -H "Authorization: Bearer YOUR_API_TOKEN" \
  -H "Accept: application/json"

Example Response

{
  "data": [
    {
      "id": 5,
      "entity_type_slug": "projects",
      "display_name": "Website Redesign",
      "fields": {
        "project_name": "Website Redesign",
        "status": "In Progress",
        "budget": 15000
      },
      "tags": [
        { "id": 2, "name": "Active", "slug": "active", "color": "green" }
      ],
      "created_at": "2025-03-01T09:00:00.000000Z",
      "updated_at": "2025-03-18T16:30:00.000000Z"
    }
  ],
  "meta": { "current_page": 1, "last_page": 1, "per_page": 10, "total": 1 },
  "links": { "first": "...", "last": "...", "prev": null, "next": null }
}

Create Record

POST /api/v1/entity-types/{slug}/records — Permission: {slug}.create or records.create

Request Body

FieldTypeRequiredDescription
fieldsobjectNoKey-value pairs matching the entity type’s field keys

Example Request

curl -X POST "https://your-domain.com/api/v1/entity-types/projects/records" \
  -H "Authorization: Bearer YOUR_API_TOKEN" \
  -H "Accept: application/json" \
  -H "Content-Type: application/json" \
  -d '{
    "fields": {
      "project_name": "Mobile App",
      "status": "Planning",
      "budget": 25000
    }
  }'

Example Response 201 Created

{
  "data": {
    "id": 6,
    "entity_type_slug": "projects",
    "display_name": "Mobile App",
    "fields": {
      "project_name": "Mobile App",
      "status": "Planning",
      "budget": 25000
    },
    "tags": [],
    "created_at": "2025-03-20T14:00:00.000000Z",
    "updated_at": "2025-03-20T14:00:00.000000Z"
  }
}

Get Record

GET /api/v1/entity-types/{slug}/records/{id} — Permission: {slug}.view or records.view

Example Request

curl -X GET "https://your-domain.com/api/v1/entity-types/projects/records/5" \
  -H "Authorization: Bearer YOUR_API_TOKEN" \
  -H "Accept: application/json"

Returns the same shape as a single item in the list response.


Update Record

PUT /api/v1/entity-types/{slug}/records/{id} — Permission: {slug}.edit or records.edit

Send only the fields you want to change.

Request Body

FieldTypeRequiredDescription
fieldsobjectNoKey-value pairs matching the entity type’s field keys

Example Request

curl -X PUT "https://your-domain.com/api/v1/entity-types/projects/records/5" \
  -H "Authorization: Bearer YOUR_API_TOKEN" \
  -H "Accept: application/json" \
  -H "Content-Type: application/json" \
  -d '{
    "fields": {
      "status": "Completed"
    }
  }'

Delete Record

DELETE /api/v1/entity-types/{slug}/records/{id} — Permission: {slug}.delete or records.delete

Example Request

curl -X DELETE "https://your-domain.com/api/v1/entity-types/projects/records/5" \
  -H "Authorization: Bearer YOUR_API_TOKEN" \
  -H "Accept: application/json"

Returns 204 No Content on success.

Was this article helpful?