> For the complete documentation index, see [llms.txt](https://help.dscout.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://help.dscout.com/study-basics/testing-prototypes/upload-an-html-prototype-to-a-study.md).

# Upload an HTML prototype to a study

<table><thead><tr><th>Study type</th><th data-type="checkbox">Availability</th></tr></thead><tbody><tr><td><strong>Usability tests</strong></td><td>true</td></tr><tr><td><strong>Intercept studies</strong></td><td>true</td></tr><tr><td><strong>AI moderated studies</strong></td><td>true</td></tr></tbody></table>

Not every prototype lives in Figma, and not every prototype is ready to be published to a public URL. If you've got an HTML prototype—something you've built with AI or something that lives on your own computer—you can upload it to your study for use in task questions. Dscout hosts the file for you, so there's nothing to deploy and no share link to manage.

Uploads sit alongside the other two task stimulus options: **Website** and **Figma prototype**. A single task question can use one of the three, not a combination.

{% hint style="success" %}
**Tip:** Testing a traditional Figma prototype instead? See [Add a Figma prototype to a study](/study-basics/testing-prototypes/add-a-figma-prototype-to-a-study.md) for more information.
{% endhint %}

### Supported file types

You can upload either a single `.html` file or a `.zip` containing a whole static site.

| Requirement        | Limit                      |
| ------------------ | -------------------------- |
| **File types**     | `.html`, `.htm`, or `.zip` |
| **File size**      | 25 MB or smaller           |
| **Unzipped size**  | 100 MB or smaller          |
| **Files in a zip** | 500 or fewer               |

Inside a zip file, you can include pages (`.html`, `.htm`), stylesheets (`.css`), images (`.png`, `.jpg`, `.jpeg`, `.gif`, `.webp`, `.avif`, `.svg`, `.ico`, `.bmp`), fonts (`.woff`, `.woff2`, `.ttf`, `.otf`), and media (`.mp4`, `.webm`, `.mp3`, `.wav`).

{% hint style="warning" %}
**Warning:** **Uploaded prototypes are HTML and CSS only.** Dscout checks every file you upload and turns away anything containing JavaScript. That includes `<script>` tags, inline event handlers like `onclick`, `javascript:` links, and embedded frames.

A static export or a click-through built from links between pages will work. A React, Vue, Next.js, or Webflow build won't.
{% endhint %}

### Prepare an HTML file

Your prototype has to be completely self-contained. It can't load anything from the internet while a participant is using it. A few things to check before you upload:

* **Use relative paths.** Paths that start with a forward slash (`/`) won't work.
* **Bundle every asset.** Images, fonts, and stylesheets all need to be inside a single zip file. A hosted web font or a CDN link will be turned away.
* **Include an entry page.** Your zip file needs either an `index.html` at the top level, or exactly one `.html` file at the top level.
* **Point forms inward.** A form that submits somewhere outside your upload won't work.

{% hint style="info" %}
**Note:** Zipping a folder from your desktop is fine. Dscout unwraps a single top-level folder automatically, and it quietly ignores things like `__MACOSX`, `.DS_Store`, and README files.
{% endhint %}

### Upload an HTML file

You can upload an HTML file at the study level or from inside a task question. Either way, once a prototype is in your study, you can reuse it across as many task questions as you like.

**To upload at the study level:**

{% stepper %}
{% step %}
On the **Usability test/Study/AI moderator** tab of your study, click the **Task stimuli** button in the top right corner. The task stimuli management modal is displayed.

<div align="left"><figure><img src="https://3976082747-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FIKfn7RcT4CW9XaIbqAdd%2Fuploads%2FFEcqTC2SIYt3jzVQqLPd%2FHTML_upload%20(9).jpg?alt=media&#x26;token=d38df3dc-c30e-495c-9b20-0da8369bae6e" alt=""><figcaption></figcaption></figure></div>
{% endstep %}

{% step %}
Click **+ Add task stimuli**. Then, select **Upload HTML**.

<div align="left"><figure><img src="https://3976082747-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FIKfn7RcT4CW9XaIbqAdd%2Fuploads%2FObrf4r71dwCuc5MAgulU%2FHTML_upload%20(1).jpg?alt=media&#x26;token=606d7b32-9220-4f67-b33b-2543c5ea1de0" alt="" width="563"><figcaption></figcaption></figure></div>
{% endstep %}

{% step %}
Locate and select your `.html`, `.htm`, or `.zip` file. Then, click **Open**.

You'll see a progress bar while Dscout reviews your file. Keep the tab open until the upload finishes.

<div align="left"><figure><img src="https://3976082747-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FIKfn7RcT4CW9XaIbqAdd%2Fuploads%2FQadDmh6a4ISJuOoBwqwv%2FHTML_upload%20(4).jpg?alt=media&#x26;token=cfeeb385-a7ee-4f9f-9be3-78e06fee9bca" alt="" width="563"><figcaption></figcaption></figure></div>

When the check passes, your prototype appears in the list with its filename and file size.

<div align="left"><figure><img src="https://3976082747-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FIKfn7RcT4CW9XaIbqAdd%2Fuploads%2F2gd8psq10FQMUbR4H6Te%2FHTML_upload%20(3).jpg?alt=media&#x26;token=c3b9a9db-fae4-447c-bb1f-e560d0bb7668" alt="" width="563"><figcaption></figcaption></figure></div>
{% endstep %}

{% step %}
Click **Done**.
{% endstep %}
{% endstepper %}

**To upload from a task question:**

{% stepper %}
{% step %}
While editing your task question, click **Add** beside **Task stimuli**. Then, select **Upload HTML**.

{% hint style="success" %}
**Tip:** To reuse a prototype that's already in your study, pick it from the **Previously added** list instead.
{% endhint %}

<div align="left"><figure><img src="https://3976082747-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FIKfn7RcT4CW9XaIbqAdd%2Fuploads%2FuT9WDqHUfXkkL5EcWqWz%2FHTML_upload.jpg?alt=media&#x26;token=3e746453-fc1b-478e-a87c-28b8d62eedb1" alt=""><figcaption></figcaption></figure></div>
{% endstep %}

{% step %}
Locate and select your `.html`, `.htm`, or `.zip` file. Then, click **Open**.

You'll see a progress bar while Dscout reviews your file. Keep the tab open until the upload finishes.

<div align="left"><figure><img src="https://3976082747-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FIKfn7RcT4CW9XaIbqAdd%2Fuploads%2FJDHb4oG6liDCJvBbBW38%2FHTML_upload%20(2).jpg?alt=media&#x26;token=a6605597-b99f-4736-b919-a40e4c4ff3ce" alt=""><figcaption></figcaption></figure></div>

{% hint style="info" %}
**Note:** If your file doesn't pass the check, Dscout tells you what it found and where. For help fixing any issues, see [Troubleshooting](#troubleshooting).
{% endhint %}
{% endstep %}

{% step %}
When the check passes, click **Done**.
{% endstep %}
{% endstepper %}

### Preview an uploaded file

**You have to preview an uploaded prototype and confirm it before you can launch your study.** This is a required step to make sure what participants see is what you meant to upload.

{% hint style="info" %}
**Note:** If you replace a prototype after confirming it, you'll need to preview and confirm the new one before you can launch. The same goes for a prototype that comes along when you copy a study.
{% endhint %}

{% stepper %}
{% step %}
On the uploaded prototype, click the **Preview (eye)** icon. The **Preview uploaded file** modal is displayed. (To open it in its own tab instead, click the **Open in new tab** icon.)

<div align="left"><figure><img src="https://3976082747-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FIKfn7RcT4CW9XaIbqAdd%2Fuploads%2Fb8ne66jxQH5hXpxXyat4%2FHTML_upload%20(6).jpg?alt=media&#x26;token=64008720-acdf-477b-b0d2-3222cb80abf8" alt=""><figcaption></figcaption></figure></div>
{% endstep %}

{% step %}
Click through your prototype and check it looks and behaves the way you expect.
{% endstep %}

{% step %}
Click **Looks good**.

<div align="left"><figure><img src="https://3976082747-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FIKfn7RcT4CW9XaIbqAdd%2Fuploads%2Fflv1Tnr5VB7zs274zagE%2FHTML_upload%20(8).jpg?alt=media&#x26;token=19b8bc81-be9b-44c2-a12f-928fd8d757b4" alt=""><figcaption></figcaption></figure></div>
{% endstep %}
{% endstepper %}

Now, you're ready to finish building your study.

If you head to launch before confirming your upload, you'll see a validation telling you to confirm the prototype. Click the validation to preview the prototype directly—you don't need to return to the relevant question.

### Convert a prototype with AI

If you run into an issue uploading a prototype, there's probably something in your prototype that isn't supported, typically JavaScript. However, many interactions can be rebuilt using only HTML and CSS, which are both supported.

Here's a breakdown of some common prototype interactions and how well they can be reproduced without JavaScript:

| Interaction                                              | Works without JavaScript? | How it's rebuilt                                                                                                   |
| -------------------------------------------------------- | ------------------------- | ------------------------------------------------------------------------------------------------------------------ |
| Moving between screens                                   | ✅ Yes                     | Each screen becomes its own page, connected by links.                                                              |
| Tabs, accordions, and dropdown menus                     | ✅ Yes                     | CSS techniques and built-in HTML elements reproduce behavior.                                                      |
| Pop-ups and modals                                       | ✅ Yes                     | A link opens a section styled as a modal.                                                                          |
| Hover effects, transitions, and animations               | ✅ Yes                     | CSS techniques.                                                                                                    |
| Image carousels                                          | 🟡 Partly                 | CSS-only carousel, without auto-advance timers.                                                                    |
| Filling out and submitting a form                        | 🟡 Partly                 | Participants can type, but the form can't submit. The "Submit" button becomes a link to a confirmation page.       |
| Search, filters, and sorting                             | 🟡 Partly                 | Pre-built result pages for a few example choices.                                                                  |
| Logins, carts, and anything that remembers input         | ❌ No                      | Show example states as separate pages rather than user-specific inputs (for example, a cart with two items in it). |
| Live data, drag and drop, randomized content, and timers | ❌ No                      | Replace with static example content.                                                                               |

If the above trade-offs work for your study, you can convert your existing prototype.

**To convert your prototype:**

{% stepper %}
{% step %}
Export or download your prototype files from the tool where you built it.
{% endstep %}

{% step %}
In an AI tool like Claude or ChatGPT, attach the exported files and send the following prompt:

{% prompt description="Convert-to-HTML/CSS prompt" icon="sparkles" %}

```markdown
I have a coded prototype that I want to upload to Dscout for a usability study. Dscout only accepts plain HTML and CSS, with no JavaScript of any kind. Convert my prototype into a version that follows every rule below, while keeping as much of the look, content, and interactive behavior as possible.

STEP 1: FEASIBILITY REPORT (do this before writing any code)
- List every screen and every interaction in the prototype (for example: navigation, tabs, menus, modals, form submission, search or filters, data loaded from an API, items added to a cart).
- For each one, say exactly how you will rebuild it without JavaScript (for example: a separate page, a link to an anchor with CSS :target, <details>/<summary>, a hidden checkbox or radio button with a <label>, or CSS :hover and :focus), OR say plainly that it can't be rebuilt.
- For anything that can't be rebuilt, suggest the closest alternative (for example: separate pages showing example states, or pre-filled example content).
- If the main task flow can't work without JavaScript in any way, tell me clearly and stop.

STEP 2: CONVERSION (only after I confirm)
Follow every rule below. An upload that breaks any rule is rejected.

1. Allowed file types only: .html, .htm, .css, images (.png, .jpg, .jpeg, .gif, .webp, .avif, .svg, .ico, .bmp), fonts (.woff, .woff2, .ttf, .otf), and media (.mp4, .webm, .mp3, .wav). No .js, .json, .map, or any other file type.
2. No JavaScript anywhere: no <script> tags (inline or external), no event attributes (onclick, onload, onsubmit, onchange, or any other attribute starting with "on"), and no javascript: links.
3. Don't use <iframe>, <frame>, <frameset>, <object>, <embed>, <applet>, <base>, <portal>, or <meta http-equiv="refresh">.
4. Everything must be self-contained. No external URLs anywhere: no CDNs, Google Fonts, remote images, icon libraries, analytics, or links to other websites (including in CSS url() and @import). Put every font, icon, and image file in the project folder and reference it locally. If the prototype links to an outside website, point that link to a simple placeholder page inside the project instead.
5. Use relative paths only (for example, images/logo.png or ../styles.css). Never start a path with "/", "//", "http:", or "https:". Every file that a page references must exist in the project.
6. Inline data: URIs are allowed only for images and fonts (not SVG data: URIs, and not for links or anything else).
7. SVGs (files and inline) must have no scripts, no <foreignObject>, no animation elements (<animate>, <set>, <animateMotion>, <animateTransform>), and no <style> blocks. Use SVG presentation attributes for styling instead.
8. Forms can be shown, but they can't submit. Replace each submit button with a link styled as a button that goes to the next page (for example, a confirmation page).
9. Compile any framework or library (React, Vue, Svelte, Next.js, Tailwind, and so on) down to plain HTML and CSS. Write each state that JavaScript would normally render as real HTML.
10. Name the starting page index.html and put it at the top level of the project folder.
11. Size limits: each HTML, CSS, or SVG file under 5 MB, the zipped upload under 25 MB, the unzipped folder under 100 MB, and no more than 500 files.

OUTPUT
- The project's folder structure, then the complete contents of every file. No placeholders or "rest of code here" shortcuts.
- A short list of everything you changed, simplified, or couldn't keep, so I know what participants will and won't be able to do.
- A final checklist confirming that each of the 11 rules above passes.
```

{% endprompt %}

Your AI tool will respond with a feasibility report, describing each interaction in your prototype that needs rebuilding as well as how it will be rebuilt.
{% endstep %}

{% step %}
Reply to your AI tool to confirm.
{% endstep %}
{% endstepper %}

Now, your prototype is converted to a version that only uses HTML and CSS. Test it on your computer to ensure it works as needed, then upload it to your Dscout study following the steps in [Upload an HTML file](#upload-an-html-file).

### What participants see

Participants open your prototype inside Dscout, the same way they would a masked task URL. A few things worth knowing:

* **Task URL masking is always on** for an uploaded prototype (and can't be disabled). Participants never see a URL for your file. For more on masking, see [Mask task URL](/study-basics/testing-prototypes/mask-task-url.md).
* **Your prototype isn't public.** Only participants in your study can open it, and they won't be able to access it again once they've finished the study.
* **Clicks are captured** just like any other task (though heat maps are not generated). Click data shows up in analysis labeled by page (`index.html`, `checkout.html`, and so on). For more information, see [Analyze heat maps and click data](/study-basics/testing-prototypes/analyze-heat-maps-and-click-data.md).

### Manage uploaded prototypes

Every prototype you've uploaded lives in the **Task stimuli manager**, alongside your website and Figma links. Each one shows its filename, file size, and the questions it's attached to.

<figure><img src="https://3976082747-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FIKfn7RcT4CW9XaIbqAdd%2Fuploads%2FdRdRFKy4AsBqoEnKHrzQ%2FHTML_upload%20(7).jpg?alt=media&#x26;token=85dec85c-8550-4493-bcf2-3aa10d31c806" alt=""><figcaption></figcaption></figure>

**To reuse a prototype:** click **Add** beside **Task stimuli** on any task question, then pick the prototype from **Previously added**. One upload can serve as many questions as you need.

**To remove a prototype from a single question:** click the **Delete (trash)** icon on the prototype in that question. The file stays in your study for reuse elsewhere.

**To delete a prototype entirely:** open the **Task stimuli manager** and click the **Delete (trash)** icon beside it. If it's attached to any questions, you'll get a confirmation first.

{% hint style="info" %}
**Note:** You can't delete a prototype that's attached to a question in a launched study.
{% endhint %}

### Troubleshooting

If your HTML upload doesn't pass, Dscout tells you exactly what went wrong and where. Here's what each message means and how to fix it.

{% hint style="success" %}
**Tip:** Many of the following errors can be resolved by converting your file to only use HTML and CSS. For more information, see [Convert a prototype with AI](#convert-a-prototype-with-ai).
{% endhint %}

| What you'll see                                             | What to do                                                                                             |
| ----------------------------------------------------------- | ------------------------------------------------------------------------------------------------------ |
| Contains JavaScript (`<script>`)                            | Remove the script tags. Uploaded prototypes support HTML and CSS only.                                 |
| Uses inline JavaScript event handlers                       | Remove `onclick`, `onload`, and similar attributes.                                                    |
| Contains a `javascript:` link                               | Replace it with a normal link to a page in your upload.                                                |
| Uses an element that isn't allowed                          | Remove any `iframe`, `embed`, `object`, `base`, or meta refresh tags.                                  |
| Contains an SVG with scripts, animation, or embedded styles | Re-export the SVG without scripting or animation, or swap it for a PNG.                                |
| Loads something from outside the file                       | Download the web font, CDN file, or image and include it in your zip.                                  |
| Has a form that submits outside the file                    | Point the form at a page inside your upload, or remove the action.                                     |
| References a path starting with `/`                         | Switch to relative paths.                                                                              |
| References a file that isn't in the upload                  | Add the missing file, or fix the path.                                                                 |
| Embeds a `data:` resource of a type that isn't allowed      | Only images and fonts can be embedded this way.                                                        |
| Includes a file type that isn't supported                   | Remove it. `.js` files are the most common cause.                                                      |
| Has no `index.html`, and no single HTML page to open        | Add an `index.html`, or reduce to one top-level HTML file.                                             |
| Is larger than 25 MB                                        | Compress your images, or trim unused files.                                                            |
| Is larger than 100 MB when unzipped                         | Compress your images, or trim unused files.                                                            |
| Contains more than 500 files                                | Remove anything the prototype doesn't need.                                                            |
| Contains file paths that aren't allowed                     | Re-zip without `..` in any path.                                                                       |
| Contains symbolic links                                     | Re-zip with the real files instead of shortcuts.                                                       |
| Couldn't be read                                            | Your zip file may be damaged, password-protected, or saved in an unusual format. Re-zip and try again. |
| Couldn't be checked                                         | Something went wrong on our end. Try uploading again.                                                  |

**Other things you might run into:**

| Situation                                               | What's happening                                                                                                                                                                                   |
| ------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Your upload finished, but nothing changed               | Your new file is identical to the one already attached to your task question, so there was nothing to swap. Make sure you're using the correct file and are looking at the intended task question. |
| You can't launch                                        | A prototype still needs confirming. Preview it, ensure it works as expected, then click **Looks good**.                                                                                            |
| "There is nothing to preview for this upload yet"       | The file is still being checked, or it didn't pass.                                                                                                                                                |
| A participant lands back at the start of your prototype | Long sessions refresh the prototype periodically, which returns participants to the entry page.                                                                                                    |

{% hint style="info" %}
Still stuck? Reach out to your Research Advisor or Dscout Support with your file attached.
{% endhint %}

### Frequently asked questions

<details>

<summary>Who can see my uploaded prototype?</summary>

On your team, anyone who can manage the study can open, preview, and reuse the prototype. Uploads follow the same permissions as everything else in your study, so they're visible to your project members and nobody outside them.

On the participant side, only participants in that study can open it, and only while they're actively working through it.

</details>

<details>

<summary>Can someone open my prototype if they're not in my study?</summary>

No. Every time a participant opens your prototype, Dscout re-checks that they're the right participant and that their session is still active. If either check fails, they get a "not available" page instead—no prototype, and no link to one.

</details>

<details>

<summary>Is my prototype public, or findable through a search engine?</summary>

No. Your file is kept in Dscout's private storage, which isn't reachable from the open web. Every request for it has to carry a valid, time-limited access signature that Dscout generates, so there's nothing for a search engine to crawl and nothing to stumble onto by guessing a URL.

</details>

<details>

<summary>What happens if a participant shares their link?</summary>

The links Dscout generates are short-lived and expire on their own within a couple of hours. Dscout issues a fresh one each time a participant opens the prototype, and it's tied to that moment rather than permanently to that person.

So a shared link won't give someone lasting access, and it won't work at all once it expires. That said, a link that's still within its window will work for whoever has it. Treat these links the way you'd treat any unlisted share link.

</details>

<details>

<summary>Where is my file stored, and is it encrypted?</summary>

Your file is stored in Dscout's private cloud storage and encrypted at rest. The storage isn't publicly accessible, and access to it is logged.

</details>

<details>

<summary>How long does Dscout keep my uploaded prototype?</summary>

Your prototype stays in Dscout for as long as it's part of your study. Removing it from a single task question doesn't delete it—it stays in the **Task stimuli manager** so you can use it elsewhere.

When you delete a prototype from your study entirely, Dscout permanently removes the file from its systems 37 days later.

</details>

<details>

<summary>Can my prototype collect data from participants?</summary>

No, intentionally. If you need to collect something from participants, use Dscout question types around your task rather than building it into the prototype.

</details>

<details>

<summary>Can I use my own analytics in an uploaded prototype?</summary>

No. Analytics tools need JavaScript, which uploaded prototypes don't support. Dscout's own click tracking still works, so you'll see what participants clicked and which pages they reached. For more information, see [Analyze heat maps and click data](/study-basics/testing-prototypes/analyze-heat-maps-and-click-data.md).

</details>

<details>

<summary>Can I set a starting screen or success screen for an uploaded prototype?</summary>

No. **Task flow** settings—starting screen and success screen—are only available for Figma prototypes, and **Set success URL** only works with a website. An uploaded prototype always opens on its entry page: either `index.html`, or the single HTML page at the top level of your zip file.

If you want participants to begin somewhere specific, make that page the entry page of your upload. To measure whether they finished, use the **Self-reported completion** follow-up instead.

</details>

<details>

<summary>Can I control how my prototype is sized or scaled?</summary>

No. The scaling and device frame options in **Prototype settings** apply to Figma prototypes only. An uploaded prototype displays at whatever size your HTML and CSS specify, so build it responsively if your participants will be on a range of screen sizes.

</details>

<details>

<summary>Can I use an uploaded prototype in a mobile study?</summary>

Yes. Uploaded prototypes work in mobile usability tests as well as desktop studies.

Keep two things in mind: Because there are no scaling options for an uploaded file, your HTML and CSS decide how it looks on a small screen—so design it responsively, or participants will spend the task pinching and zooming. And participants won't have browser navigation controls while they're in your prototype, so make sure every screen they need is reachable from links inside it.

</details>

<details>

<summary>Can I test a prototype that requires a login?</summary>

No. Uploaded prototypes can't reach the internet or submit forms, so there's nothing for a login to connect to. A sign-in screen in your upload can be a visual mock, but it can't actually sign anyone in.

If you need to test something behind a real login, host it yourself and add it as a **Website** instead.

</details>

<details>

<summary>Can I replace my prototype after launching my study?</summary>

No. Once your study is live, the prototype attached to a task question is locked—you can't swap in a new file or delete it.

This is why previewing is required before launch. Click through the whole prototype while you're previewing it, not just the first screen, and make sure it's the version you want participants to see. For more on what can and can't change after launch, see [Edit a launched screener or study](/study-basics/edit-close-or-relaunch-studies/edit-a-launched-screener-or-study.md).

</details>

<details>

<summary>Can I reuse an uploaded prototype in another study?</summary>

Not directly. An uploaded prototype belongs to the study you uploaded it to, and the **Task stimuli manager** only shows that study's stimuli. Within a study, you can attach one upload to as many task questions as you need.

If you copy the study, the prototype comes along—but you'll need to preview and confirm it again before the copy can launch. To use the same file in an unrelated study, upload it there as well.

</details>


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation by asking a question.

Perform an HTTP GET request on the following URL with the `ask` and `goal` query parameters:

```
GET https://help.dscout.com/study-basics/testing-prototypes/upload-an-html-prototype-to-a-study.md?ask=<question>&goal=<user_goal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is what the user is ultimately trying to achieve, the reason they need the answer. Sharing it helps GitBook give you a better, more relevant answer. A goal is most helpful when it describes the outcome the user wants rather than restating the question. For example, with `ask=how do I create an API token`, a goal like `automate deployments from our CI pipeline` lets GitBook tailor the answer to that use case.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
