> ## Documentation Index
> Fetch the complete documentation index at: https://docs.base44.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Entities API Overview

> Get started with the Base44 Entities API

<Note>
  The Entities API is in beta. Its endpoints and responses may change.
</Note>

An entity is a table in your app's database. Its schema is a JSON Schema that names the entity's fields, marks which are required, and holds its row-level security rules under `rls`. The Entities API lets you read and change those schemas, and count the records and users an app holds.

Use the Entities API to:

* Read an app's entity schemas, one at a time or all together.
* Add, replace, or remove an entity.
* Make an app's live schema match its source in one call, as a deploy does.
* Count an entity's records, or the app's users.

## Prerequisites

* A personal API key. See [Authentication](/developers/references/app-management/get-started/authentication) to get one. These endpoints share the App Management API's `api_key` header and base URL.
* An app you can edit, and permission to take the action you are calling.

## App ID

Endpoints that act on a specific app include the app's ID in the URL path as `app_id`.

**To get your app ID:**

1. Go to [app.base44.com](https://app.base44.com/).
2. Open your app in the app editor.
3. Copy the app ID from the editor URL: `"https://app.base44.com/apps/<app_id>/editor"`.

## Schema writes do not change your code

<Warning>
  Every write here changes the app's live schema right away, but it does not change the entity definition in the app's source code. Base44 rebuilds the live schema from the source files whenever the app's code changes, which reverts anything you set through this API. Change the code itself when you need the edit to last.
</Warning>

This makes the API a good fit for a deploy step that pushes a schema Base44 should serve now, and a poor fit for a lasting schema edit.

## The User entity

`User` is built in, so it does not behave like an entity you defined:

* You cannot create it. Use [Update entity schema](/api-reference/update-entity-schema) with `User` to add custom fields to it.
* Reading it returns only the custom fields you added, not the built-in ones, and returns a 404 when there are none.
* Custom fields cannot redeclare `email` or `full_name`, which Base44 manages.
* Counting users has its own endpoint, [Count app users](/api-reference/count-app-users). `User` never reaches [Count entity records](/api-reference/count-entity-records).

## Row-level security applies to counts

Both count endpoints return what the calling credential can read. An entity whose `rls` rules narrow reads returns a smaller number than it actually holds, and nothing in the response says a rule applied.

## Rate limits

The count endpoints allow 100 requests per minute per app, shared with the app's other entity and user listing calls.
