1. API reference
  2. Records
  3. List an object's records, with filters and sorting.
  • API reference
  • GETIdentify the calling credential.
  • GETList the webhook events you can subscribe to.
  • GETList the webhook subscriptions this credential owns.
  • POSTSubscribe an HTTPS endpoint to record events on one object.
  • GETGet one webhook subscription by slug.
  • DELETEDelete a webhook subscription.
  • GETList the field types you can create.
  • GETList the file formats a file field can accept.
  • GETList the active tag fields of all objects, one page at a time.
  • GETList every field in the workspace, one page at a time.
  • GETList the fields of an object, one page at a time.
  • POSTAdd a field to an object.
  • GETList all fields an object owns, active and inactive.
  • GETList the active fields of an object, relations included.
  • GETList the select, status and priority fields of an object.
  • GETList the fields that can make another field required.
  • GETGet one field by slug.
  • POSTCopy fields of an object into other objects.
  • POSTAdd one choice to a choice field.
  • PUTChange the order of an object's fields.
  • PUTUpdate a field's settings.
  • DELETEDelete a field and its values.
  • PUTTurn a field on or off on an object.
  • GETList the workspace tags.
  • POSTAdd a tag to the workspace list.
  • PUTReorder the workspace tags.
  • POSTAdd a tag from a record of one object.
  • GETGet one tag with its usage.
  • DELETEDelete a tag, or retire it when records still hold it.
  • PATCHRename or recolor a tag.
  • GETList which optional record features this deployment has turned on.
  • GETList objects, one page at a time.
  • POSTCreate an object.
  • GETList the active objects the credential can read.
  • GETCount records and saved views for each active object.
  • GETGet workspace totals for records, saved views and objects.
  • GETList the duplicate-detection rule of every object.
  • GETCheck whether an object name is free to use.
  • GETGet one object by slug.
  • PUTUpdate an object's name, description, icon, status or folder.
  • DELETEDelete an object and all of its records.
  • GETList the other active objects, for picking a relation target.
  • GETList the active fields of an object.
  • GETGet the duplicate-detection rule of an object.
  • PUTSet the duplicate-detection rule of an object.
  • PUTChange the display order of objects.
  • PUTTurn an object on or off.
  • PUTTurn an object's public form on or off.
  • GETList records as slug and name pairs, for pickers.
  • GETList an object's records, with filters and sorting.
  • POSTCreate a record.
  • POSTSearch an object's records by free text.
  • GETList the records you can link through every relation of an object.
  • GETList the records you can link through one relation field.
  • GETList the records that share a value in one field.
  • GETList the values of dependent filter fields.
  • GETList the records linked to one record through one relation.
  • POSTList the distinct values stored in one field, most common first.
  • POSTGet badge counts for a set of records.
  • GETList the options a select-type field allows.
  • GETGet one record by slug, with its columns and change history.
  • PUTUpdate a record.
  • DELETEDelete a record.
  • GETList every change to one record, newest first.
  • GETList one page of a record's change history, with filters.
  • POSTDuplicate a record.
  • POSTCreate a record from a quick-add row in a table or board.
  • POSTUpdate, assign or delete many records in one call.
  • POSTDuplicate many records in one call.
  • POSTCancel a queued or running bulk job.
  • GETGet the report of a bulk job.
  • POSTDelete up to 500 records by slug.
  • POSTSet the assignees of up to 500 records.
  • PATCHReplace the assignees of a record.
  • PATCHMove a record between two others in manual board order.
  • POSTApply the same change to up to 500 records.
  • DELETEDelete all records of an object.
  • GETGet a short-lived URL for one stored file.
  • GETDownload one stored file.
  • POSTGet short-lived URLs for up to 100 stored files in one call.
GET/api/v1/object/data/{objectSlug}

List an object's records, with filters and sorting.

List an object's records, with filters and sorting.

Returns one page of records in data.data and the object's columns in data.fields: its fields first, then one entry per relation. Only records the credential can see are returned. Without filters or sortBy, the newest records come first.

Record values are keyed by field slug. Each record also carries name, assignees, creator, updater, createdAt, updatedAt, and capabilities (what the credential may do to that record). Linked records live in relations, keyed by relation slug. Each relation cell holds up to 10 linked records and a pagination block; follow pagination.nextPage on GET /object/data/{objectSlug}/{dataSlug}/relations/{relationSlug}.

A record carries is_duplicate only when the credential holds duplicate-flag.view. It carries signals (open tasks, overdue, unread messages, mentions) only when GET /object/features reports record_signals: true.

Query parameters:

  • page — page number, from 1. Default 1.
  • limit — records per page, up to 200. Default 25.
  • filters — a URL-encoded JSON array of conditions. A record must match all of them. At most 50 conditions. A value that is not a JSON array is ignored. Each condition has these keys:
    • fieldSlug — a field slug, a relation slug, or one of created_at, updated_at, created_by, updated_by and linked_record. A condition on an unknown slug is ignored.
    • operator — one of equals, does_not_equal, includes, does_not_include, multi_includes, starts_with, ends_with, is_empty, is_not_empty, greater_than, less_than, greater_than_or_equal, less_than_or_equal, between, before, after, date_between, today, this_week or this_month. Each entry in data.fields lists the operators it supports in filterOperators.
    • value — what to compare with. Omit it for is_empty, is_not_empty, today, this_week and this_month. For multi_includes, send an array; a record matches if any entry matches.
    • valueTo — the upper bound for between and date_between. Both bounds are inclusive.
  • sortBy — a field slug, created_at or updated_at. A belongs-to relation slug sorts by the linked record's name. An unknown value is ignored.
  • sortDirection — asc or desc. Default asc.
  • adminSlug — member slugs, comma-separated. Returns records assigned to any of them.
  • unassigned — true returns records with no assignee. Combined with adminSlug, a record matches either one.

How value is read:

  • Text: includes, starts_with and ends_with ignore case; equals does not.
  • Select, status, priority and source fields: the option id. Multi-select and tag fields: includes with an option id.
  • Dates, created_at and updated_at: a day as YYYY-MM-DD, in the credential owner's timezone. before and after exclude that day.
  • created_by and updated_by: a member slug.
  • Relations and linked_record: the linked record's slug. Relations support equals, is_empty and is_not_empty.

Example filters value, before URL encoding:

[
  { "fieldSlug": "email-k2v8x1qa", "operator": "ends_with", "value": "@example.com" },
  { "fieldSlug": "created_at", "operator": "date_between", "value": "2026-09-01", "valueTo": "2026-09-14" }
]

Scope: read.<object slug>, for example read.contacts.

Errors:

  • 400 — no active object has that slug.
  • 400 — sortBy names a relation or lookup that links many records (code RELATION_SORT_UNSUPPORTED or LOOKUP_SORT_UNSUPPORTED).
  • 400 — a condition names a lookup field whose source no longer exists (code LOOKUP_FILTER_UNSUPPORTED).
  • 403 — the credential lacks read.<object slug>.
  • 422 — a query parameter is invalid, for example an unknown operator, more than 50 conditions, or limit above 200.

Response 200:

{
  "status": 200,
  "message": "Object data retrieved successfully",
  "data": {
    "fields": [
      {
        "name": "name",
        "slug": "name-mp9nm29v",
        "label": "Name",
        "type": "text",
        "icon": null,
        "options": null,
        "is_system": true,
        "api_only": false,
        "field_group": null,
        "required": false,
        "default_value": null,
        "sort_order": 0,
        "is_active": true,
        "filterOperators": ["includes", "multi_includes", "does_not_include", "equals", "does_not_equal", "starts_with", "ends_with", "is_empty", "is_not_empty"]
      },
      {
        "name": "email",
        "slug": "email-k2v8x1qa",
        "label": "Email",
        "type": "email",
        "icon": null,
        "options": null,
        "is_system": false,
        "api_only": false,
        "field_group": null,
        "required": false,
        "default_value": null,
        "sort_order": 1,
        "is_active": true,
        "filterOperators": ["includes", "multi_includes", "equals", "does_not_equal", "starts_with", "ends_with", "is_empty", "is_not_empty"]
      }
    ],
    "data": [
      {
        "name-mp9nm29v": "Sara Ali",
        "assignees": [
          {
            "type": "user",
            "slug": "5e1a9c3b7d20",
            "name": "Omar Hassan",
            "email": "omar@example.com",
            "profile_image": null
          }
        ],
        "email-k2v8x1qa": "sara@example.com",
        "name": "Sara Ali",
        "relations": {},
        "slug": "9f2c4b7a1e03",
        "random_id": "a3f9c21b",
        "createdAt": "2026-09-14T10:00:00.000Z",
        "updatedAt": "2026-09-14T10:00:00.000Z",
        "position": null,
        "creator": {
          "type": "user",
          "slug": "5e1a9c3b7d20",
          "name": "Omar Hassan",
          "email": "omar@example.com",
          "profile_image": null
        },
        "updater": null,
        "linked_record": null,
        "capabilities": { "can_edit": true, "can_delete": true, "can_assign": true }
      }
    ]
  },
  "pagination": {
    "total": 1,
    "page": 1,
    "limit": 25,
    "totalPages": 1,
    "nextPage": null,
    "prevPage": null
  }
}

Send request

Use the documented inputs to call this endpoint directly.

API serverbase URL
Bearer tokenbearerAuthoptional
Stored only in this browser for the bearerAuth security scheme and reused on every API page in this group.

Parameters

Values are applied to the request and the example on the right.

objectSlugpath · stringrequired
queryquery · stringoptional

Responses

200application/json

Successful response

{
  "message": "string",
  "data": "string",
  "pagination": "string"
}
messagestringrequired
dataobjectrequired
paginationobjectrequired
400application/json

Bad request

{
  "status": 1,
  "message": "string",
  "code": "string",
  "data": {}
}
statusintegerrequired

The HTTP status code of the response.

messagestringrequired

What went wrong. Several validation messages are joined with ", ".

codestringoptional

A stable, machine-readable reason. Only some errors set it.

dataobjectoptional

Extra detail about the error. Only some errors set it.

401application/json

Unauthorized

{
  "status": 1,
  "message": "string",
  "code": "string",
  "data": {}
}
statusintegerrequired

The HTTP status code of the response.

messagestringrequired

What went wrong. Several validation messages are joined with ", ".

codestringoptional

A stable, machine-readable reason. Only some errors set it.

dataobjectoptional

Extra detail about the error. Only some errors set it.

500application/json

Internal server error

{
  "status": 1,
  "message": "string",
  "code": "string",
  "data": {}
}
statusintegerrequired

The HTTP status code of the response.

messagestringrequired

What went wrong. Several validation messages are joined with ", ".

codestringoptional

A stable, machine-readable reason. Only some errors set it.

dataobjectoptional

Extra detail about the error. Only some errors set it.

List records as slug and name pairs, for pickers.< PreviousCreate a record.Next >

Powered by heyo-docs

curl --request GET \  'https://corteksa.info/api/v1/object/data/string?query=string'
{
  "message": "string",
  "data": "string",
  "pagination": "string"
}