# Publish HTML from ChatGPT to a private link with a Custom GPT

> Build a Custom GPT with an Action that calls the Outbox API, and ChatGPT publishes reports and Canvas drafts as private pages with per-person links and open alerts.

ChatGPT writes plenty of HTML, from Canvas drafts to full reports, but sharing it with a client means copying it somewhere. A Custom GPT with an Outbox Action publishes it straight to your private library and can create a link for each person who should read it.

## Set it up as a Custom GPT Action

1. In Outbox, create an API key under Settings → Keys. Scope it to one folder (for example `gpt`) and give it the `publish` verb, plus `share` if the GPT should create links.
2. In the GPT editor, open Configure → Actions → Create new action.
3. Authentication: API Key, auth type Bearer, and paste the key.
4. Paste the schema below. Save, then test with "publish a test page".

Action schema (OpenAPI):

```
openapi: 3.1.0
info:
  title: Outbox
  version: "1.0"
servers:
  - url: https://api.out-box.dev
paths:
  /publish:
    post:
      operationId: publishPage
      summary: Publish or update an HTML page in Outbox (private by default)
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required: [slug, html, model]
              properties:
                slug: { type: string, description: "Path in the library, e.g. clients/acme/report" }
                title: { type: string }
                html: { type: string, description: "A complete, self-contained HTML document" }
                model: { type: string, description: "Id of the model that wrote the page" }
      responses:
        "200": { description: Published; the body includes the page URL }
  /api/share:
    post:
      operationId: createShareLink
      summary: Create a private share link for one recipient
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required: [resource, resourceType]
              properties:
                resource: { type: string, description: "The page slug" }
                resourceType: { type: string, enum: [post] }
                recipient: { type: string, description: "Who the link is for, e.g. Laura · Acme" }
                expiresInDays: { type: integer, minimum: 1, maximum: 365 }
      responses:
        "200": { description: The link (url, token, expiresAt) }
```

Add a line to the GPT's instructions: "When asked to publish, send a complete HTML document, use slugs under gpt/ and set model to the model you are running on."

## What works today, and what doesn't

- Works: publishing and republishing pages, and creating named share links, through the Action above.
- Not yet: a native Outbox connector inside ChatGPT. It is planned; until then the Custom GPT is the supported path.
- Anyone you share the GPT with publishes with your key. Keep it to people you trust, and scope the key to one folder.

## What people publish from ChatGPT

- A Canvas draft turned into a client-ready page, with a [link for each stakeholder](https://out-box.dev/en/per-recipient-links).
- A weekly market summary a GPT writes on request, republished to the same slug so the link never changes.
- Briefing pages for a sales team, each rep sending their own link to their account.

## ChatGPT Sites vs Outbox

ChatGPT Sites builds and hosts sites and apps from ChatGPT. Outbox is where pages from any agent go to be shared with specific people. See [Outbox vs ChatGPT Sites](https://out-box.dev/en/guides/vs/chatgpt-sites).

## Frequently asked questions

### Do I need a paid ChatGPT plan?

Creating Custom GPTs with Actions depends on your ChatGPT plan; check OpenAI's current terms. On the Outbox side, the free plan is enough to start.

### Can I protect the link with a passphrase from ChatGPT?

The schema above keeps it simple. Add a `passphrase` string property to the share action (4 to 256 characters), or set it later from Library → What I share in Outbox.

## Related

- [Outbox vs ChatGPT Sites](https://out-box.dev/en/guides/vs/chatgpt-sites)
- [Per-recipient links](https://out-box.dev/en/per-recipient-links)
- [Codex](https://out-box.dev/en/agents/codex)

---

Updated 2026-10-11. HTML version: https://out-box.dev/en/agents/chatgpt
