Limiting rows

scopeWithAdminApiResponse() limits every API query of the model, also when the model is included as a relation of another model. scopeAdminRows() of the listing applies too.
app/Models/Order.php

Changing rows

setAdminApiResponse() is called for each returned row:
app/Models/Order.php

Scope filters

Public scopes declared on the model become filters. The value of the filter is passed as the parameter of the scope:
app/Models/Product.php
An empty value calls the scope with its default parameter. A column with the same name wins over the scope.

Relations in responses

include uses the camelCase names of the relations, listed in /admin/api/v1/models. The response keys are snake_case, as Eloquent returns them:
Rows of a child model are not filtered by the parent automatically. Filter them by the foreign column, e.g. filter[post_id]=5.

Other relations of the model

Relations which are not fields, child or parent models are not included, the API answers 400 and the message names the $apiRelations property. List them there to allow them:
app/Models/Invoice.php
The related model has to be an admin model. The constraints of the relation, the read permission and scopeAdminRows() of the related model apply as for other relations, and nested includes continue with the relations of the related model.

Localized values

With localization enabled, send the App-Locale header to receive the values of one language. Without it, localized fields return all languages.

Tokens for integrations

Create a token with explicit abilities for a server integration:

Custom response format

The request parameters and the response shapes come from a format class. The default AdminApi\Formats\Laravel\LaravelFormat follows Laravel API resources and the spatie query builder. Implement AdminApi\Formats\Format and bind it to use another convention, e.g. JSON:API:
app/Providers/AppServiceProvider.php
The format also describes its parameters and schemas in the OpenAPI document. Which columns, relations and scopes are accessible stays the same for every format.