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

# ChatGPT follow-up form schema

> Schema for the follow-up form ChatGPT shows at the end of an answer: the questions it asks to refine the prompt, their options, and the follow-up prompt it would send.

ChatGPT can end an answer with a form that refines the prompt, such as "What's your budget?" with a list of ranges. The [ChatGPT endpoint](/docs/api-reference/endpoint/monitor-chatgpt) returns it as `result.followUpForm`, with no flag and at no extra cost. The questions show how ChatGPT splits the intent behind a prompt.

<Frame caption="Follow-up form in ChatGPT">
  <img src="https://mintcdn.com/cloro/YTZuDFgcJwyDiseW/images/chatgpt/follow-up-form.webp?fit=max&auto=format&n=YTZuDFgcJwyDiseW&q=85&s=10ad1a29bedc3e924e77ed06fdef8094" alt="ChatGPT form with three questions about budget, experience and priority, each with radio options, and a Find my best racket button" width="768" height="712" data-path="images/chatgpt/follow-up-form.webp" />
</Frame>

`followUpForm` is `null` when the answer has no form. The form is not in `text` or `markdown`.

## Response example

The response for the form in the screenshot:

```json theme={null}
{
  "success": true,
  "result": {
    "text": "If you're a beginner buying your first tennis racket in 2026...",
    "followUpForm": {
      "questions": [
        {
          "label": "1. What's your budget?",
          "type": "radio",
          "name": "budget",
          "options": [
            { "label": "Under $60", "value": "Under $60", "selected": false },
            { "label": "$60–$100", "value": "60–100", "selected": false },
            { "label": "$100–$150", "value": "100–150", "selected": true },
            { "label": "$150–$250", "value": "150–250", "selected": false },
            { "label": "$250+", "value": "250+", "selected": false }
          ]
        },
        {
          "label": "2. Which best describes you?",
          "type": "radio",
          "name": "level",
          "options": [
            { "label": "Complete beginner — never played or just starting", "value": "Complete beginner", "selected": true },
            { "label": "Casual player — hitting with friends", "value": "Casual recreational player", "selected": false },
            { "label": "Committed beginner — lessons or playing several times a week", "value": "Committed beginner", "selected": false }
          ]
        },
        {
          "label": "What's most important? (Optional)",
          "type": "radio",
          "name": "priority",
          "options": [
            { "label": "Good all-round performance", "value": "All-round play", "selected": true },
            { "label": "Easy power and a forgiving sweet spot", "value": "Easy power", "selected": false },
            { "label": "Comfort and less shock on the arm", "value": "Arm comfort", "selected": false },
            { "label": "Spin and control as I improve", "value": "Spin and control", "selected": false }
          ]
        }
      ],
      "submitLabel": "Find my best racket",
      "followUpPrompt": "Recommend the best adult beginner tennis racket to buy in 2026. Budget: {budget}. Experience: {level}. Priority: {priority}. Compare suitable models, current prices and purchase links."
    }
  }
}
```

## Form structure

| Field | Type | Description |
| - | - | - |
| `questions` | array | The questions, in the order ChatGPT shows them |
| `submitLabel` | string | The label of the button that sends the follow-up prompt |
| `followUpPrompt` | string | The prompt the button sends, with `{name}` in place of the answer to the question of that `name` |

`submitLabel` and `followUpPrompt` are absent when ChatGPT does not give them, or when cloro cannot read the prompt as a template.

## Question structure

| Field | Type | Description |
| - | - | - |
| `label` | string | The question text. Empty when ChatGPT shows the control with no label |
| `type` | string | `radio`, `checkbox`, `select`, `text`, `textarea` or `date` |
| `name` | string | The variable that `followUpPrompt` refers to as `{name}` |
| `options` | array | The choices of a `radio`, `checkbox` or `select` question. Empty for the other types |
| `placeholder` | string | The placeholder of a `text`, `textarea` or `date` question, when ChatGPT gives one |

## Option structure

| Field | Type | Description |
| - | - | - |
| `label` | string | The text ChatGPT shows for the option |
| `value` | string or boolean | The value the option puts in the follow-up prompt. It can differ from `label` |
| `selected` | boolean | Whether ChatGPT selects the option by default |

A checklist that is part of the answer is not a form: it stays in `text` and `markdown`.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.