---
title: "Create a form submission"
method: POST
path: "/forms/{id}/submissions"
tags: ["Objects"]
---

# Create a form submission

`POST /forms/{id}/submissions`

Submits an answer set for a form. `data` is an object keyed by field key (cf_*); list the form fields first to discover keys, data types, and allowed options. Returns the created submission.

## Path parameters

- `id` string, required

## Request body

- FormSubmissionInput
  - `data` object, required — Answers keyed by field key (cf_*). Values must match each field's data type; choice fields accept one of the field's allowed option values.

## Response `200`

OK

- FormSubmission
  - `id` string, required — Submission ID (cor_ prefix)
  - `number` string, nullable, required — Auto-generated submission number
  - `data` object, required — Answers keyed by field key (cf_*). Values match each field's data type.
  - `createdAt` string, date-time, required — When the submission was received
  - `updatedAt` string, date-time, nullable, required — When the submission was last updated

## Other responses

- `400` — Validation error or bad request
- `401` — Missing or invalid API key
- `403` — Insufficient permission
- `404` — Resource not found
- `429` — Rate limit exceeded

---

[API](https://skmtc.net/heffl/apis/heffl-api-v2-beta.md) · [All operations](https://skmtc.net/heffl/apis/heffl-api-v2-beta/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/heffl/heffl-api-v2-beta/versions/27006cfef4d8/schema)
