---
title: "What this app is, to you"
description: "Get the app's name, address, enabled surfaces, theme, your roles and the pages those roles may open."
canonical: "https://grid82.com/docs/app-api/app/get"
updated: "2026-11-13"
---

# What this app is, to you

`GET https://your-suite.grid82.app/your-app/v1/app`

Get the app's name, address, enabled surfaces, theme, your roles and the pages those roles may open.

> **Note: Generic contract**
>
> Your own version of this operation, with your tables and the fields you can read, is in
> your app's document: `https://{suite}.grid82.app/{app}/v1/openapi.json`, behind your credential.
> [Why each person gets their own](/docs/start/studio-and-runtime#why-an-app-has-an-api-of-its-own).

Never returns the app's full role list or other users' roles.

Requires the `schema:read` scope. Operation `app.get`. MCP tool `app_get`. CLI: `grid82 app get` (`npx grid82`).

**Authorizations**

- `Authorization` (bearer, in header, required)

## Response

**200**: Success

- `data` (`object`, required)
- `data.constrained` (`Record<string, string[]>`, required)
- `data.id` (`string`, required)
- `data.name` (`string`, required)
- `data.slug` (`string`, required)
- `data.surfaces` (`object`, required)
- `data.surfaces.data` (`boolean`, required, default: `true`)
- `data.surfaces.interface` (`boolean`, required, default: `true`)
- `data.surfaces.assistant` (`boolean`, required, default: `true`)
- `data.surfaces.api` (`boolean`, required, default: `true`)
- `data.surfaces.mcp` (`boolean`, required, default: `true`)
- `data.surfaces.cli` (`boolean`, required, default: `true`)
- `data.theme` (`object`, required)
- `data.theme.radius` (`number`, required, default: `6`, range: `0–24`)
- `data.theme.accent` (`string`, required, default: `oklch(0.47 0.16 262)`, pattern: `^(?:#[0-9a-fA-F]{3,8}|oklch\([0-9.%\s/]{1,60}\))$`)
- `data.theme.font` (`enum<string>`, required, default: `inter`, one of: `system, geist, inter, figtree, manrope, jakarta, dm-sans, outfit, work-sans, nunito-sans, rubik, public-sans, source-serif, lora, fraunces, instrument-serif, geist-mono, jetbrains-mono, ibm-plex-mono`)
- `data.theme.icon` (`string | null`, default: `null`)
- `data.roles` (`object[]`, required)
- `data.roles.id` (`string`, required)
- `data.roles.name` (`string`, required)
- `data.roles.description` (`string`, required)
- `data.buildsPages` (`boolean`, required)
- `data.buildsWorkflows` (`boolean`, required, default: `false`)
- `data.pages` (`object[]`, required)
- `data.pages.id` (`string`, required)
- `data.pages.name` (`string`, required)
- `data.pages.kind` (`enum<string>`, required, one of: `declarative, code`)
- `data.pages.mode` (`enum<string>`, required, one of: `locked, template, canvas`)
- `data.pages.tableId` (`string,null`, required)
- `data.pages.owner` (`enum<string>`, required, one of: `admin, user`)
- `data.pages.version` (`number`, required)
- `data.pages.updatedAt` (`string`, required)
- `data.pages.bundleHash` (`string,null`, required)
- `data.pages.forkedFrom` (`string,null`, required)
- `data.pages.publishedVersion` (`number,null`, required, default: `null`)
- `data.pages.theme` (`object | null`, required, default: `null`)
- `data.pages.theme.accent` (`string`)
- `data.pages.theme.radius` (`number`)

```json
{
  "data": {
    "constrained": {},
    "id": "<string>",
    "name": "<string>",
    "slug": "<string>",
    "surfaces": {
      "data": true,
      "interface": true,
      "assistant": true,
      "api": true,
      "mcp": true,
      "cli": true
    },
    "theme": {
      "radius": 6,
      "accent": "oklch(0.47 0.16 262)",
      "font": "inter",
      "icon": null
    },
    "roles": [
      {
        "id": "<string>",
        "name": "<string>",
        "description": "<string>"
      }
    ],
    "buildsPages": true,
    "buildsWorkflows": false,
    "pages": [
      {
        "id": "<string>",
        "name": "<string>",
        "kind": "declarative",
        "mode": "locked",
        "tableId": null,
        "owner": "admin",
        "version": 123.45,
        "updatedAt": "<string>",
        "bundleHash": null,
        "forkedFrom": null,
        "publishedVersion": null,
        "theme": null
      }
    ]
  }
}
```

**4XX**: Refused

- `error` (`object`, required)
- `error.code` (`enum<string>`, required, one of: `not_found, forbidden, unauthenticated, validation_failed, conflict, rate_limited, payment_required, not_implemented, internal`)
- `error.message` (`string`, required)
- `error.details` (`Record<string, unknown>`)

```json
{
  "error": {
    "code": "not_found",
    "message": "<string>",
    "details": {}
  }
}
```

**Example request**

```bash
curl --request GET \
  --url 'https://your-suite.grid82.app/your-app/v1/app' \
  --header 'Authorization: Bearer <token>'
```
