---
title: "POST /entities/query/table"
method: POST
path: "/entities/query/table"
tags: ["Graph", "Entity"]
---

# POST /entities/query/table

`POST /entities/query/table`

## Headers

- `X-Authenticated-User-Actor-Id` string, uuid, required

## Request body

- QueryEntitiesTableParams — Parameters for [`EntityStore::query_entities_table`]. [`EntityStore::query_entities_table`]: crate::entity::EntityStore::query_entities_table
  - `conversions` QueryConversion[] — Converts the rows' property values at each conversion's path into its target data type, mirroring [`QueryEntitiesParams::conversions`]. [`QueryEntitiesParams::conversions`]: crate::entity::QueryEntitiesParams::conversions
    - `dataTypeId` string, uri, required — The versioned URL of a Block Protocol ontology type (the $id of the schema). It should be of the form `${baseUrl}v/${versionNumber}`
    - `path` PropertyPathElement[], required
      - union — An element in a property path that identifies a specific property location. [`PropertyPathElement`] represents a single step in navigating a property hierarchy, addressing either: - A specific property by its type URL (for object properties) - A specific index (for array properties) These elements can be chained together to form a [`PropertyPath`] that addresses deeply nested properties within the property hierarchy.
        - string, uri — The base URL of a Block Protocol ontology type (the $id of the schema, without the versioned suffix). It should be a valid URL, with a trailing slash.
        - integer — An array index that addresses a specific element in an array property.
  - `cursor` string — An opaque continuation token for the entities table
  - `filter` EntityTableFilter, required — The scope of the entities table.
    - `entityTypeIds` VersionedUrl[], nullable — The types the rows are narrowed to, as the versioned selections a filter UI works with. Left out for no narrowing at all, where the table spans every type its scope holds. An empty list narrows to nothing and matches no rows.
    - `excludedTypeBaseUrls` BaseUrl[] — Types the table never shows, whatever [`entity_type_ids`](Self::entity_type_ids) selects. Entities carrying one of these types are left out entirely — of the rows, the count, and the type summary alike — so a selection cannot bring them back. Base URLs rather than versioned ids on purpose: an exclusion is meant to hide a type regardless of which version an entity carries, and it covers inherited types as well as direct ones.
    - `includeArchived` boolean
    - `propertyFilters` EntityTablePropertyFilter[] — Conditions on property columns, all of which a row has to satisfy.
      - union — A filter on one of the table's property columns, mirroring the operators the table's filter UI offers. The `type` tag selects the operator, `property` names the column, and each operator carries exactly the value fields it needs, so a value-less operator with a value (or the reverse) is unrepresentable.
        - object
          - `property` string, uri, required — The base URL of a Block Protocol ontology type (the $id of the schema, without the versioned suffix). It should be a valid URL, with a trailing slash.
          - `type` 'hasAnyValue', required
        - object
          - `property` string, uri, required — The base URL of a Block Protocol ontology type (the $id of the schema, without the versioned suffix). It should be a valid URL, with a trailing slash.
          - `type` 'isEmpty', required
        - object
          - `property` string, uri, required — The base URL of a Block Protocol ontology type (the $id of the schema, without the versioned suffix). It should be a valid URL, with a trailing slash.
          - `type` 'isTrue', required
        - object
          - `property` string, uri, required — The base URL of a Block Protocol ontology type (the $id of the schema, without the versioned suffix). It should be a valid URL, with a trailing slash.
          - `type` 'isFalse', required
        - object
          - `property` string, uri, required — The base URL of a Block Protocol ontology type (the $id of the schema, without the versioned suffix). It should be a valid URL, with a trailing slash.
          - `type` 'equals', required
          - `value` union, required — A property value a table filter compares against.
            - number
            - string
        - object
          - `property` string, uri, required — The base URL of a Block Protocol ontology type (the $id of the schema, without the versioned suffix). It should be a valid URL, with a trailing slash.
          - `type` 'notEquals', required
          - `value` union, required — A property value a table filter compares against.
            - number
            - string
        - object
          - `property` string, uri, required — The base URL of a Block Protocol ontology type (the $id of the schema, without the versioned suffix). It should be a valid URL, with a trailing slash.
          - `type` 'greaterThan', required
          - `value` number, required
        - object
          - `property` string, uri, required — The base URL of a Block Protocol ontology type (the $id of the schema, without the versioned suffix). It should be a valid URL, with a trailing slash.
          - `type` 'greaterThanOrEqual', required
          - `value` number, required
        - object
          - `property` string, uri, required — The base URL of a Block Protocol ontology type (the $id of the schema, without the versioned suffix). It should be a valid URL, with a trailing slash.
          - `type` 'lessThan', required
          - `value` number, required
        - object
          - `property` string, uri, required — The base URL of a Block Protocol ontology type (the $id of the schema, without the versioned suffix). It should be a valid URL, with a trailing slash.
          - `type` 'lessThanOrEqual', required
          - `value` number, required
        - object — Matches anywhere inside the property's text.
          - `property` string, uri, required — The base URL of a Block Protocol ontology type (the $id of the schema, without the versioned suffix). It should be a valid URL, with a trailing slash.
          - `type` 'containsSegment', required
          - `value` string, required
        - object
          - `property` string, uri, required — The base URL of a Block Protocol ontology type (the $id of the schema, without the versioned suffix). It should be a valid URL, with a trailing slash.
          - `type` 'startsWith', required
          - `value` string, required
        - object
          - `property` string, uri, required — The base URL of a Block Protocol ontology type (the $id of the schema, without the versioned suffix). It should be a valid URL, with a trailing slash.
          - `type` 'endsWith', required
          - `value` string, required
    - `webs` union — Which webs the table draws rows from. The default is [`Exclude`] with an empty list: every web the actor may see. [`Exclude`]: Self::Exclude
      - object — Only the listed webs, where an empty list matches no rows at all.
        - `type` 'include', required
        - `webs` WebId[], required
      - object — Every web the actor may see except the listed ones.
        - `type` 'exclude', required
        - `webs` WebId[], required
  - `includeEntityTypes` 'closed' | 'resolved' | 'resolvedWithDataTypeChildren'
  - `includeSummary` boolean
  - `limit` integer, required
  - `sort` EntityTableSorting
    - `key` 'createdAtDecisionTime' | 'editionCreatedAtDecisionTime' | 'label' | 'typeTitle' | 'archived', required — Sort key of the entities table, closed over the materialized, indexable columns. Extending the table's sortable columns means adding a variant here, never a free-form path.
    - `ordering` 'ascending' | 'descending', required

## Response `200`

- QueryEntitiesTableResponse
  - `closedMultiEntityTypes` object
  - `cursor` string — An opaque continuation token for the entities table
  - `definitions` EntityTypeResolveDefinitions
    - `dataTypes` object, required
    - `entityTypes` object, required
    - `propertyTypes` object, required
  - `rows` EntityTableRow[], required
    - `archived` boolean, required
    - `createdAtDecisionTime` string, date-time, required
    - `createdAtTransactionTime` string, date-time, required
    - `createdBy` string, uuid, required
    - `editionCreatedAtDecisionTime` string, date-time, required
    - `entityEditionId` string, uuid, required
    - `entityId` string, required
    - `entityTypeIds` VersionedUrl[], required — The entity's direct types, parallel to [`entity_type_titles`](Self::entity_type_titles).
    - `entityTypeTitles` string[], required
    - `label` string
    - `lastEditedBy` string, uuid, required
    - `properties` PropertyObject, required
    - `propertiesMetadata` PropertyObjectMetadata, required
      - `metadata` ObjectMetadata
        - `confidence` number, double
        - `provenance` PropertyProvenance
          - `sources` SourceProvenance[]
            - `authors` string[] — The people or organizations that authored the material.
            - `entityId` string
            - `firstPublished` string, date-time
            - `lastUpdated` string, date-time
            - `loadedAt` string, date-time
            - `location` Location — A location where the source material can be found.
              - …
            - `type` 'webpage' | 'document' | 'integration', required — The type of source material which was used to produce a value.
      - `value` object, required — Metadata for each field in the object. The keys correspond to the property type URLs used in the object property.
    - `sourceEntity` EntityTableLinkEndpoint — One endpoint of a link row: its identity, display label, and direct types.
      - `entityId` string, required
      - `entityTypeIds` VersionedUrl[], required — The endpoint's direct types.
      - `label` string
    - `targetEntity` EntityTableLinkEndpoint — One endpoint of a link row: its identity, display label, and direct types.
      - `entityId` string, required
      - `entityTypeIds` VersionedUrl[], required — The endpoint's direct types.
      - `label` string
  - `summary` EntityTableSummary — The summary of the entities table. The two halves have different scopes on purpose: [`count`] reflects the page's full filters, where the type maps span the whole scope so a filter UI can widen a narrowed selection. [`count`]: Self::count
    - `count` integer, required — How many entities match the page's full filters.
    - `entityTypeIds` object, required — How many entities in the scope carry each (direct) type.
    - `entityTypeTitles` object, required — The display titles of the types in [`entity_type_ids`]. [`entity_type_ids`]: Self::entity_type_ids

## Other responses

- `422` — Provided query is invalid
- `500` — Store error occurred

## Changes

- **2026-07-30** `ba95e69ddba8` — 1 info
  - endpoint added

[Change history](https://skmtc.dev/hashintel/apis/graph/changes/entities/query/table/post.md)

---

[API](https://skmtc.dev/hashintel/apis/graph.md) · [All operations](https://skmtc.dev/hashintel/apis/graph/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/hashintel/graph/revisions/ba95e69ddba8/schema)
