---
title: "Create form"
method: POST
path: "/forms"
tags: ["Forms"]
---

# Create form

`POST /forms`

Creates a new form with the authenticated user as the owner.

## Request body

- FormCreate
  - `title` string, required
  - `slug` string, required
  - `description` string, nullable
  - `structure` string, kdl, required
  - `live` boolean
  - `opens` string, date-time, nullable
  - `closes` string, date-time, nullable
  - `anonymous` boolean
  - `max_responses` integer, nullable
  - `individual_limit` integer
  - `editable_responses` boolean

## Response `201`

Form created successfully.

- Form
  - `id` string, ulid, required
  - `owner` string, ulid, required
  - `title` string, required
  - `slug` string, required
  - `description` string, nullable
  - `structure` string, kdl, required
  - `live` boolean, required
  - `opens` string, date-time, nullable
  - `closes` string, date-time, nullable
  - `anonymous` boolean
  - `max_responses` integer, nullable
  - `individual_limit` integer
  - `editable_responses` boolean

## Other responses

- `400` — Bad Request
- `401` — Unauthorized
- `409` — Conflict
- `422` — Unprocessable Entity

## Changes

- **2025-07-14** `3fcd68b489c2` — 5 info
  - added the new optional request property `anonymous`
  - added the optional property `anonymous` to the response with the `201` status
  - the `editable_responses` response's property default value `false` was added for the status `201`
  - the `individual_limit` response's property default value `1` was added for the status `201`
  - …1 more
- **2025-07-13** `434dd7ec37b5` — 2 breaking, 1 warning, 3 info
  - added the new required request property `structure`
  - removed the required property `specification` from the response with the `201` status
  - removed the request property `specification`
  - added the new optional request property `editable_responses`
  - …2 more
- **2025-07-13** `0d7f3c750979` — 2 breaking, 4 warning, 5 info
  - added the new required request property `specification`
  - removed the required property `structure` from the response with the `201` status
  - removed the request property `anonymous`
  - removed the request property `editable_responses`
  - …7 more

[Change history](https://skmtc.dev/osdg-iiith/apis/forms-portal-api/changes/forms/post.md)

---

[API](https://skmtc.dev/osdg-iiith/apis/forms-portal-api.md) · [All operations](https://skmtc.dev/osdg-iiith/apis/forms-portal-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/osdg-iiith/forms-portal-api/revisions/7761ba23f677/schema)
