# URLs and generated files

How page paths become addresses, and the sitemap, robots, llms and Markdown files every site serves.

A Docup site is addressed predictably. This page explains how.

## Your site address

Each site has its own host, one level under `docup.dev`:

```text
https://your-address.docup.dev
```

The address is chosen when you create the project and can be changed in [Site and domain](/settings/domain). `www`, `app`, `api` and `cname` are reserved and never serve a docs site.

## Page URLs

A page's path is its URL:

| Page path | URL |
| --- | --- |
| `index` | `https://your-address.docup.dev/` |
| `getting-started` | `https://your-address.docup.dev/getting-started` |
| `guides/editor` | `https://your-address.docup.dev/guides/editor` |

Paths are lowercase letters, numbers and hyphens with at most one folder. The overview is the front page and has no path of its own. 

A path that does not exist returns a "not found" page, and the visit is recorded under **Not found (404)** in [Analytics](/guides/analytics). If a client requests a missing page with the header `Accept: text/markdown`, or requests a missing `.md` file, Docup returns a Markdown error instead of HTML. This error page includes helpful discovery links, including the sitemap and `llms.txt`.

## Generated files

These are served from the root of every published site. They are built from the live pages, and they update when you publish.

| URL | Content type | Purpose |
| --- | --- | --- |
| `/sitemap.xml` | XML | Every indexable page with its last modified time. |
| `/robots.txt` | Text | Crawl rules, the sitemap link and your extra lines. |
| `/llms.txt` | Text | An index for AI tools: a title, a summary and a link to every page, grouped by section. |
| `/llms-full.txt` | Text | Every page in one file, each with its title and source address. |
| `/openapi.json` | JSON | An OpenAPI 3.1 description of the site's read-only content endpoints. |
| `/<path>.md` | Markdown | One page as Markdown. `/index.md` is the overview. |

The `.md` copy begins with the page title and summary, then the text, with callouts turned into block quotes. The HTML page links to it with a `rel="alternate"` of type `text/markdown`, and the Markdown response names the HTML page as its canonical address, so search engines list the page and not the file.

Pages hidden from search are left out of the sitemap, `llms.txt` and `llms-full.txt`. When **llms.txt** is turned off in [Search and sharing](/settings/search), the `llms` files are not served and return a 404 error. If a site is private or has search engines turned off, `/sitemap.xml` returns a 404 error. An unpublished site, or one with search engines turned off, answers `robots.txt` with `Disallow: /`. The `.md` copies are served for any public site.

All generated files are sent with `Cache-Control: public, max-age=300`.

## Social images

Every page has an image used in link previews, at `/docup-og/<path>`, or your own uploaded image. See [Search and sharing](/settings/search).

## Example

```bash
curl https://your-address.docup.dev/llms.txt
curl https://your-address.docup.dev/getting-started.md
curl https://your-address.docup.dev/openapi.json
```
