# List bases

`GET https://api.airtable.com/v0/meta/bases`

Returns the list of bases the token can access, 1000 bases at a time.
If there is another page to request, pass the offset as a URL query parameter.
(e.g. `?offset=itr23sEjsdfEr3282/appSW9R5uCNmRmfl6`)

## Requirements

- **Authentication:** [Personal access token](https://airtable.com/developers/web/api/authentication.md#types-of-token), [OAuth integration](https://airtable.com/developers/web/api/authentication.md#types-of-token)
- **Scope:** [`schema.bases:read`](https://airtable.com/developers/web/api/scopes.md#schema-bases-read)
- **User role:** Base read-only
- **Billing plans:** All plans

## Query parameters

- `offset: string` — optional

## Response format

- `offset: string` — optional

- `bases: array<object>` — required

  - `id: string` — required

    Base ID, a unique identifier for a base.

  - `name: string` — required

  - `permissionLevel: "none" | "read" | "comment" | "edit" | "create"` — required

### Example — Success response

```sh
curl "https://api.airtable.com/v0/meta/bases" \
-H "Authorization: Bearer YOUR_TOKEN"
```

```json
{
  "bases": [
    {
      "id": "appLkNDICXNqxSDhG",
      "name": "Apartment Hunting",
      "permissionLevel": "create"
    },
    {
      "id": "appSW9R5uCNmRmfl6",
      "name": "Project Tracker",
      "permissionLevel": "edit"
    }
  ],
  "offset": "itr23sEjsdfEr3282/appSW9R5uCNmRmfl6"
}
```
