---
title: "List entity records"
method: GET
path: "/api/apps/{app_id}/entities/{entity_name}"
---

# List entity records

`GET /api/apps/{app_id}/entities/{entity_name}`

<Info>This API is in beta. Endpoints, fields, and behavior may still change, so avoid depending on it in production.</Info>

Returns the records held in one of the app's entities. Deleted records are left out.

Row-level security applies, so you only get the records the entity's `rls` read rule lets your credential see. An entity with no `rls` rules returns every record.

Filter records with the `q` parameter, or by passing one of the entity's own field names directly as a query parameter for an exact match. For example, `?status=paid` is equivalent to `q={"status": "paid"}`. Only `q` supports comparisons like `$gt`. An unrecognized parameter name is still treated as a filter, so a misspelled field name matches nothing rather than returning an error.

Returns at most 5000 records per call, whether you leave `limit` out or ask for more. The response doesn't indicate when it was cut short, so use `skip` to page through a larger entity.

<Note>This endpoint accepts a personal API key belonging to a user with access to the app, including a read-only key. Workspace API keys are not accepted.</Note>

## Path parameters

- `app_id` string, required — ID of the app that owns the entity.
- `entity_name` string, required — Name of the entity, exactly as [List entity schemas](/api-reference/list-entity-schemas) reports it. Don't pass `User` here. It doesn't fail, but it reads and writes a separate, disconnected set of records stored under that name, not the app's real user accounts, which are managed through their own endpoints.

## Query parameters

- `q` string
- `limit` integer
- `skip` integer
- `sort` string
- `fields` string

## Response `200`

The entity's records.

- object[]
  - `id` string, nullable — ID of the record. Pass it as `entity_id` to [Get entity record](/api-reference/get-entity-record), [Update entity record](/api-reference/update-entity-record) or [Delete entity record](/api-reference/delete-entity-record).
  - `created_date` string, nullable — When the record was created, as a UTC timestamp in ISO 8601 format. A record Base44 has just created carries a `Z` suffix, and a record read back from storage does not.
  - `updated_date` string, nullable — When the record last changed, as a UTC timestamp in ISO 8601 format. A record Base44 has just created carries a `Z` suffix, and a record read back from storage does not.
  - `created_by` string, nullable — Email of the app user who created the record, or `anonymous` when a visitor created it on an app that needs no login. Apps that hide record authorship leave this field out of the response.
  - `created_by_id` string, nullable — ID of the app user who created the record, or `anonymous` when a visitor created it on an app that needs no login.
  - `is_sample` boolean, nullable — Whether Base44 stored the record as sample data while the app was being built. A record you create reports `false`.

## Other responses

- `400` — `sort` names more than one field.
- `401` — Missing or invalid credentials.
- `403` — You don't have access to this app.
- `404` — App not found, or the app has no entity with this name.
- `422` — A filter you passed as its own query parameter doesn't match the type the entity's schema declares for that field, for example text where the field holds a number. Values inside `q` aren't type-checked.
- `429` — Rate limit exceeded. The base limit is 70 requests per minute, and this endpoint shares it with [Count entity records](/api-reference/count-entity-records). See [Rate limits](/developers/references/apps-api/get-started/rate-limits) for the multiplier your plan gets.

---

[API](https://skmtc.dev/base44/apis/base44-app-management-api.md) · [All operations](https://skmtc.dev/base44/apis/base44-app-management-api/llms.txt) · [OpenAPI document](https://skmtc.dev/base44/apis/base44-app-management-api/revisions/cf164639a9bf?raw)
