---
title: "Design a form from a brief"
description: "A designer builds a new sign-up form from a written brief and saves it as a draft, as Create with AI does on the Forms page of the app."
url: "https://openemail.uk/docs/api/forms/design"
area: "API"
category: "Mailbox"
---

# Design a form from a brief

A designer builds a new sign-up form from a written brief and saves it as a draft, as Create with AI does on the Forms page of the app.

`POST /forms/design`

## POST /forms/design

A designer builds a new sign-up form from a written brief and saves it as a draft, as Create with AI does on the Forms page of the app.

## Example

Needs `forms:write`. `brief` says what the form must ask and say, up to 4,000 characters. `name` is optional, and the designer names the form when you leave it out.

**curl**

```
curl -X POST "$OE/forms/design" -H "$AUTH" -H 'content-type: application/json' -d '{
  "brief": "A waitlist for our beta: email, first name and company, with a line on what joining means. A dark green button that says Join the waitlist."
}'
```

**Response**

```
{
  "object": "form",
  "id": "frm_7d1f3b5a9c2e48f06b1d3f5a",
  "name": "Beta waitlist",
  "status": "draft",
  "design": {
    "notes": ["Made the company field optional, since the brief did not ask for it to be required."]
  }
}
```

> The answer is the whole form, as `GET /forms/{id}` returns it, with `design.notes` on what the designer adjusted. Publish it with `POST /forms/{id}/publish`.

> It spends one AI action and can take up to half a minute. A design that cannot be made valid is a 422 `invalid_form`, a workspace that already holds as many forms as it may a 422 `workspace_limit_reached`, a server with no model a 409 `ai_not_configured`, and a workspace out of AI actions a 429 `ai_quota_exceeded`. Nothing is created in any of them.

## Reference

- [`POST /forms/design`](https://openemail.uk/docs/api/reference/forms#post-forms-design): full reference
