> ## Documentation Index
> Fetch the complete documentation index at: https://docs.keebai.com/llms.txt
> Use this file to discover all available pages before exploring further.

# GET /v1/agents/prompt-types

> The catalogue of prompt sections, goals and channels an agent can be built from.

The source of truth for every value you can put in `section`, `goal.type` and `channels`. **Read it instead of hardcoding a list**: a section added to the platform shows up here without this API publishing a version, and a list you copied into your code goes stale the day that happens.

Each section row also carries a `tip`, which is the platform's own guidance on what belongs in that section. If you generate section text with an LLM, that `tip` is the instruction to give it.

## Endpoint

```
GET https://api.keebai.com/v1/agents/prompt-types
```

## Required scope

`agents:read`

## Query parameters

| Parameter | Type     | Description                                                                     |
| --------- | -------- | ------------------------------------------------------------------------------- |
| `kind`    | `string` | Narrow to one family: `section`, `goal` or `channel`. Omit it to get all three. |

## Example request

<CodeGroup>
  ```bash curl theme={"system"}
  curl "https://api.keebai.com/v1/agents/prompt-types?kind=section" \
    -H "Authorization: Bearer kbai_pk_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
  ```

  ```js JavaScript theme={"system"}
  const resp = await fetch(
    "https://api.keebai.com/v1/agents/prompt-types?kind=section",
    { headers: { Authorization: `Bearer ${process.env.KEEBAI_API_TOKEN}` } },
  );
  const { data } = await resp.json();

  const sections = data.map((row) => row.type);
  ```

  ```python Python theme={"system"}
  import os, requests

  resp = requests.get(
      "https://api.keebai.com/v1/agents/prompt-types",
      params={"kind": "section"},
      headers={"Authorization": f"Bearer {os.environ['KEEBAI_API_TOKEN']}"},
      timeout=10,
  )
  resp.raise_for_status()
  sections = resp.json()["data"]
  ```
</CodeGroup>

## Response

### 200 OK

```json theme={"system"}
{
  "data": [
    {
      "kind": "section",
      "type": "business_context",
      "label": "Contexto del negocio",
      "description": "Qué hace el negocio, a quién atiende, y quién es el agente y con qué voz habla.",
      "tip": "Parte por quién es el agente y cómo habla, y sigue con el negocio: qué vende, dónde está y a quién atiende.",
      "placeholder": "",
      "toolkits": [],
      "channels": [],
      "goals": [],
      "order": 1
    },
    {
      "kind": "section",
      "type": "agent_limits",
      "label": "Límites del agente",
      "description": "Lo que el agente no hace, cada límite con la alternativa que sí ofrece.",
      "tip": "Cada límite lleva su salida positiva: en vez de \"no des precios\", escribe \"los precios los das solo desde el catálogo; si no está, ofreces confirmarlo con el equipo\".",
      "placeholder": "",
      "toolkits": [],
      "channels": [],
      "goals": [],
      "order": 2
    }
  ],
  "total": 2
}
```

### 401 Unauthorized

Missing, invalid, revoked, or expired token.

### 403 Forbidden

The token does not have the `agents:read` scope.

### 502 Bad Gateway

The agent service is unreachable.

## Operational notes

* **The catalogue is per company.** A business can have its own wording for a section, and you get that wording, not the platform default.
* **`toolkits` only means something on goals.** It names which tool families the goal switches on — that is why the goal is not just a label.
* **`order` is the order the sections take in the prompt**, and it is also a sensible order to present them in a UI.
* **`prompt` is not exposed.** Each row has one internally: it is the text that tells the *agent* what that section is. It is part of the system prompt, not integration surface.


## OpenAPI

````yaml GET /v1/agents/prompt-types
openapi: 3.0.0
info:
  title: Keebai Public API
  description: Superficie pública REST autenticada con Personal Access Tokens (PAT).
  version: 1.0.0
  contact: {}
servers:
  - url: https://api.keebai.com
    description: Production
security: []
tags: []
paths:
  /v1/agents/prompt-types:
    get:
      tags:
        - agents
      summary: 'El catalogo: que secciones, objetivos y canales existen'
      description: >-
        La fuente de verdad de los valores validos de `section`, `goal.type` y
        `channels`. Sale de la plataforma y no de una lista fija de esta API,
        asi que una seccion nueva aparece aca sin que haya que publicar una
        version. Cada fila trae ademas `tip`, que dice como se escribe esa
        seccion.
      operationId: PublicAgentsController_listPromptTypes
      parameters:
        - name: kind
          required: false
          in: query
          description: >-
            Familia del catalogo. Sin esto vuelven todas: secciones, objetivos y
            canales.
          schema:
            type: string
            enum:
              - section
              - goal
              - channel
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PublicPromptTypeListResponseDto'
      security:
        - PAT: []
components:
  schemas:
    PublicPromptTypeListResponseDto:
      type: object
      properties:
        data:
          type: array
          items:
            $ref: '#/components/schemas/PublicPromptTypeDto'
        total:
          type: number
      required:
        - data
        - total
    PublicPromptTypeDto:
      type: object
      properties:
        kind:
          type: string
          enum:
            - section
            - goal
            - channel
        type:
          type: string
          example: business_context
        label:
          type: string
          example: Contexto del negocio
        description:
          type: string
        tip:
          type: string
          description: Como se escribe esta seccion.
        placeholder:
          type: string
        toolkits:
          description: 'Solo los objetivos: que herramientas enciende.'
          type: array
          items:
            type: string
        channels:
          type: array
          items:
            type: string
        goals:
          type: array
          items:
            type: string
        order:
          type: number
      required:
        - kind
        - type
        - label
        - description
        - tip
        - placeholder
        - toolkits
        - channels
        - goals
        - order
  securitySchemes:
    PAT:
      scheme: bearer
      bearerFormat: kbai_pk_<hex>
      type: http
      description: >-
        Personal Access Token con prefijo `kbai_pk_`. Generar desde el portal
        con permiso `developer.manage_tokens`.

````