---
title: "Quickstarts API | Grafana Cloud documentation"
description: "Create, list, update, and delete Grafana Assistant quickstart prompts with the HTTP API."
---

> For a curated documentation index, see [llms.txt](/llms.txt). For the complete documentation index, see [llms-full.txt](/llms-full.txt).

# Quickstarts API

Use quickstarts to manage suggested prompts shown to users in the Assistant interface. Quickstarts help users discover what Assistant can do by offering ready-made questions they can run with a single click.

Quickstarts have two scopes:

- **Tenant quickstarts** are visible to all users in the organization. Use tenant quickstarts when you manage prompts through the HTTP API, because they appear for all users across the organization.
- **User quickstarts** are visible only to the identity that created them. You can’t create user quickstarts on behalf of other users.

Examples use the base URL and service account token described in [Grafana Assistant HTTP API reference](/docs/grafana-cloud/platform/grafana-assistant/reference/http-apis).

## Create a quickstart

Create a new quickstart prompt.

**Endpoint**

`POST /quickstarts`

**Permissions**

Expand table

| Quickstart scope | Required permission                               |
|------------------|---------------------------------------------------|
| `user`           | `grafana-assistant-app.quickstarts.user:create`   |
| `tenant`         | `grafana-assistant-app.quickstarts.tenant:create` |

**Request**

Send a JSON request body.

Expand table

| Field     | Required | Description                                        |
|-----------|----------|----------------------------------------------------|
| `scope`   | Yes      | Quickstart scope: `user` or `tenant`.              |
| `prompt`  | Yes      | The question text shown to users.                  |
| `title`   | No       | A short display title for the quickstart.          |
| `enabled` | No       | Whether the quickstart is active. Default: `true`. |

JSON ![Copy code to clipboard](/media/images/icons/icon-copy-small-2.svg) Copy

```json
{
  "scope": "tenant",
  "title": "SLO health",
  "prompt": "How healthy are my SLOs right now?",
  "enabled": true
}
```

**Response**

JSON ![Copy code to clipboard](/media/images/icons/icon-copy-small-2.svg) Copy

```json
{
  "status": "success",
  "data": {
    "id": "c5d3e4f6-7890-1234-cdef-056789012345",
    "created": "2025-11-15T10:00:00Z",
    "modified": "2025-11-15T10:00:00Z",
    "createdBy": "sa-5594@serviceaccount.grafana",
    "updatedBy": "sa-5594@serviceaccount.grafana",
    "title": "SLO health",
    "prompt": "How healthy are my SLOs right now?",
    "enabled": true,
    "scope": "tenant"
  }
}
```

**Examples**

Bash ![Copy code to clipboard](/media/images/icons/icon-copy-small-2.svg) Copy

```bash
curl -X POST "${ASSISTANT_API_URL}/quickstarts" \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer ${SERVICE_ACCOUNT_TOKEN}" \
  -d '{
    "scope": "tenant",
    "title": "SLO health",
    "prompt": "How healthy are my SLOs right now?",
    "enabled": true
  }'
```

## List quickstarts

Retrieve quickstarts with optional filtering and pagination.

**Endpoint**

`GET /quickstarts`

**Permissions**

Expand table

| Quickstart scope | Required permission                             |
|------------------|-------------------------------------------------|
| `user`           | `grafana-assistant-app.quickstarts.user:read`   |
| `tenant`         | `grafana-assistant-app.quickstarts.tenant:read` |

**Request**

Expand table

| Parameter      | Required | Description                                                           |
|----------------|----------|-----------------------------------------------------------------------|
| `scope`        | No       | Filter by scope: `user` or `tenant`.                                  |
| `enabled_only` | No       | When `true`, return only enabled quickstarts.                         |
| `limit`        | No       | Maximum number of quickstarts to return. Range: 1-100. Default: `20`. |
| `offset`       | No       | Pagination offset. Default: `0`.                                      |

**Response**

JSON ![Copy code to clipboard](/media/images/icons/icon-copy-small-2.svg) Copy

```json
{
  "status": "success",
  "data": {
    "quickstarts": [
      {
        "id": "c5d3e4f6-7890-1234-cdef-056789012345",
        "created": "2025-11-15T10:00:00Z",
        "modified": "2025-11-15T10:00:00Z",
        "createdBy": "sa-5594@serviceaccount.grafana",
        "updatedBy": "sa-5594@serviceaccount.grafana",
        "title": "SLO health",
        "prompt": "How healthy are my SLOs right now?",
        "enabled": true,
        "scope": "tenant"
      }
    ],
    "pagination": {
      "total": 1,
      "limit": 20,
      "offset": 0
    }
  }
}
```

**Examples**

Bash ![Copy code to clipboard](/media/images/icons/icon-copy-small-2.svg) Copy

```bash
curl -X GET "${ASSISTANT_API_URL}/quickstarts?scope=tenant&enabled_only=true" \
  -H "Authorization: Bearer ${SERVICE_ACCOUNT_TOKEN}"
```

## Get a quickstart

Retrieve a single quickstart by ID.

**Endpoint**

`GET /quickstarts/{id}`

**Permissions**

Expand table

| Quickstart scope | Required permission                             |
|------------------|-------------------------------------------------|
| `user`           | `grafana-assistant-app.quickstarts.user:read`   |
| `tenant`         | `grafana-assistant-app.quickstarts.tenant:read` |

**Request**

Expand table

| Parameter | Required | Description                                              |
|-----------|----------|----------------------------------------------------------|
| `id`      | Yes      | The quickstart ID returned when you create a quickstart. |

**Response**

JSON ![Copy code to clipboard](/media/images/icons/icon-copy-small-2.svg) Copy

```json
{
  "status": "success",
  "data": {
    "id": "c5d3e4f6-7890-1234-cdef-056789012345",
    "created": "2025-11-15T10:00:00Z",
    "modified": "2025-11-15T10:00:00Z",
    "createdBy": "sa-5594@serviceaccount.grafana",
    "updatedBy": "sa-5594@serviceaccount.grafana",
    "title": "SLO health",
    "prompt": "How healthy are my SLOs right now?",
    "enabled": true,
    "scope": "tenant"
  }
}
```

**Examples**

Bash ![Copy code to clipboard](/media/images/icons/icon-copy-small-2.svg) Copy

```bash
QUICKSTART_ID="c5d3e4f6-7890-1234-cdef-056789012345"

curl -X GET "${ASSISTANT_API_URL}/quickstarts/${QUICKSTART_ID}" \
  -H "Authorization: Bearer ${SERVICE_ACCOUNT_TOKEN}"
```

## Update a quickstart

Update an existing quickstart. Only the fields you include in the request body are changed, except `scope` which is always required.

**Endpoint**

`PUT /quickstarts/{id}`

**Permissions**

Expand table

| Quickstart scope | Required permission                              |
|------------------|--------------------------------------------------|
| `user`           | `grafana-assistant-app.quickstarts.user:write`   |
| `tenant`         | `grafana-assistant-app.quickstarts.tenant:write` |

**Request**

Expand table

| Parameter | Required | Description        |
|-----------|----------|--------------------|
| `id`      | Yes      | The quickstart ID. |

Send a JSON request body with the fields to update.

Expand table

| Field     | Required | Description                                              |
|-----------|----------|----------------------------------------------------------|
| `scope`   | Yes      | The current scope of the quickstart: `user` or `tenant`. |
| `title`   | No       | Updated display title.                                   |
| `prompt`  | No       | Updated question text.                                   |
| `enabled` | No       | Whether the quickstart is active.                        |

**Response**

The response contains the full updated quickstart.

JSON ![Copy code to clipboard](/media/images/icons/icon-copy-small-2.svg) Copy

```json
{
  "status": "success",
  "data": {
    "id": "c5d3e4f6-7890-1234-cdef-056789012345",
    "created": "2025-11-15T10:00:00Z",
    "modified": "2025-11-20T14:15:00Z",
    "createdBy": "sa-5594@serviceaccount.grafana",
    "updatedBy": "sa-5594@serviceaccount.grafana",
    "title": "SLO health",
    "prompt": "How healthy are my SLOs right now?",
    "enabled": false,
    "scope": "tenant"
  }
}
```

**Examples**

Disable a quickstart:

Bash ![Copy code to clipboard](/media/images/icons/icon-copy-small-2.svg) Copy

```bash
QUICKSTART_ID="c5d3e4f6-7890-1234-cdef-056789012345"

curl -X PUT "${ASSISTANT_API_URL}/quickstarts/${QUICKSTART_ID}" \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer ${SERVICE_ACCOUNT_TOKEN}" \
  -d '{
    "scope": "tenant",
    "enabled": false
  }'
```

## Delete a quickstart

Permanently delete a quickstart.

**Endpoint**

`DELETE /quickstarts/{id}`

**Permissions**

Expand table

| Quickstart scope | Required permission                               |
|------------------|---------------------------------------------------|
| `user`           | `grafana-assistant-app.quickstarts.user:delete`   |
| `tenant`         | `grafana-assistant-app.quickstarts.tenant:delete` |

**Request**

Expand table

| Parameter | Required | Description        |
|-----------|----------|--------------------|
| `id`      | Yes      | The quickstart ID. |

**Response**

A successful deletion returns HTTP 204 with no response body.

**Examples**

Bash ![Copy code to clipboard](/media/images/icons/icon-copy-small-2.svg) Copy

```bash
QUICKSTART_ID="c5d3e4f6-7890-1234-cdef-056789012345"

curl -X DELETE "${ASSISTANT_API_URL}/quickstarts/${QUICKSTART_ID}" \
  -H "Authorization: Bearer ${SERVICE_ACCOUNT_TOKEN}"
```
