curl --request GET \
--url https://app.base44.com/api/apps/{app_id}/entities/{entity_name}/v2/list \
--header 'Authorization: Bearer <token>'import requests
url = "https://app.base44.com/api/apps/{app_id}/entities/{entity_name}/v2/list"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://app.base44.com/api/apps/{app_id}/entities/{entity_name}/v2/list', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://app.base44.com/api/apps/{app_id}/entities/{entity_name}/v2/list",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://app.base44.com/api/apps/{app_id}/entities/{entity_name}/v2/list"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://app.base44.com/api/apps/{app_id}/entities/{entity_name}/v2/list")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://app.base44.com/api/apps/{app_id}/entities/{entity_name}/v2/list")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"items": [
{
"id": "6886b8d390dc7e2f4a2c91b3",
"created_date": "2026-06-01T09:23:41.481000",
"updated_date": "2026-06-04T14:07:02.115000",
"created_by": "jane@acme.com",
"created_by_id": "6874b0c2e1a94d0031bb77de",
"is_sample": false,
"amount": 4200,
"status": "draft",
"customer_email": "jane@acme.com"
}
],
"next_cursor": "gAAAAABn7vJ...",
"has_more": true
}List entity records by cursor
Returns one page of the records in one of the app’s entities, with a cursor for the next page instead of skip. Deleted records are left out.
Use it for exports, sync jobs, and any loop over a large entity. Every page costs the same however far in you are, and records deleted between pages don’t shift where the next page starts.
Filter and choose fields the same way as List entity records, including by passing a field name directly as a query parameter. For the next page, pass next_cursor from the response as cursor. The cursor carries the filter, sort, and fields, so you don’t need to repeat them, and repeating one with a different value is rejected. Stop when has_more is false. Every page holds limit records except the last. A cursor only works for the user it was issued to, on the same app and entity.
Records come back newest first unless you set sort. Records with no value in the sort field come first in ascending order and last in descending order. Records that share the same sort value are each returned once. A record whose stored value in the sort field isn’t the type the entity’s schema declares is left out.
With distinct, items holds the distinct values of that field among the matching records instead of records, in ascending order and without null. Each element of an array field counts as a value. sort and fields can’t be combined with it, limit goes up to 1000, and an entity with field-level read rules doesn’t support it.
Row-level security applies, so you only get the records the entity’s rls read rule lets your credential see. The User entity isn’t supported. Use List app users instead.
curl --request GET \
--url https://app.base44.com/api/apps/{app_id}/entities/{entity_name}/v2/list \
--header 'Authorization: Bearer <token>'import requests
url = "https://app.base44.com/api/apps/{app_id}/entities/{entity_name}/v2/list"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://app.base44.com/api/apps/{app_id}/entities/{entity_name}/v2/list', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://app.base44.com/api/apps/{app_id}/entities/{entity_name}/v2/list",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://app.base44.com/api/apps/{app_id}/entities/{entity_name}/v2/list"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://app.base44.com/api/apps/{app_id}/entities/{entity_name}/v2/list")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://app.base44.com/api/apps/{app_id}/entities/{entity_name}/v2/list")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"items": [
{
"id": "6886b8d390dc7e2f4a2c91b3",
"created_date": "2026-06-01T09:23:41.481000",
"updated_date": "2026-06-04T14:07:02.115000",
"created_by": "jane@acme.com",
"created_by_id": "6874b0c2e1a94d0031bb77de",
"is_sample": false,
"amount": 4200,
"status": "draft",
"customer_email": "jane@acme.com"
}
],
"next_cursor": "gAAAAABn7vJ...",
"has_more": true
}Authorizations
Personal access token, sent as Authorization: Bearer <token>.
Path Parameters
ID of the app that owns the entity.
Name of the entity, exactly as 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
Filter as a JSON object of field names and values, for example {"status": "paid"} for an exact match, or using an operator such as $gt for a comparison. See Filtering, sorting, and paging for a full list of operators.
Number of records on each page, from 1 to 5000, or up to 1000 with distinct. Defaults to 100, and a higher value is treated as the maximum.
Single field to sort by, prefixed with - for descending. For example, -created_date returns newest first. Defaults to -created_date. Sort by a field every record carries, such as created_date, or by one the entity's schema declares as a string, number, integer, or boolean.
Comma-separated list of fields to return, which reduces the response size on a wide entity. Reach a field inside an object with dots, as in customer.email. Each record still carries its id whether you ask for it or not.
Pagination cursor from previous response. Leave it out for the first page.
Field whose distinct values to return instead of records, in ascending order.
Response
One page of the entity's records.
One page of records and the cursor for the next one.
The page's records in the requested sort order, or with distinct the field's values in ascending order.
One record in one of an app's entities.
Show child attributes
Show child attributes
[
{
"id": "6886b8d390dc7e2f4a2c91b3",
"created_date": "2026-06-01T09:23:41.481000",
"updated_date": "2026-06-04T14:07:02.115000",
"created_by": "jane@acme.com",
"created_by_id": "6874b0c2e1a94d0031bb77de",
"is_sample": false,
"amount": 4200,
"status": "draft",
"customer_email": "jane@acme.com"
}
]
Cursor for fetching the next page. The value is null if there are no more pages.
"gAAAAABn7vJ..."
Whether there are more items to fetch.
true
Was this page helpful?