---
title: "Create a new form submission"
method: POST
path: "/forms/submissions"
tags: ["Form Submissions"]
---

# Create a new form submission

`POST /forms/submissions`

Creates a new form submission. When createPractitioner is true, also creates or links a practitioner (using data.practitionerData) and a portal crosswalk; returns the form submission response with certifyId and providerCreated. Form submission is created first; on failure the request fails without creating a practitioner.

## Query parameters

- `createFacility` boolean
- `createPractitioner` boolean

## Headers

- `tenant-id` string, required

## Request body

- CreateFormSubmissionRequest — Request payload for creating a form submission
  - `data` unknown, required

## Response `201`

Form submission created successfully. When createPractitioner is true, the response includes all form submission fields plus certifyId (tenant crosswalk identifier) and providerCreated (true if a new practitioner was created, false if the practitioner already existed).

- FormSubmissionResponseDto — Form submission response
  - `id` string — The unique identifier for the form submission
  - `organizationId` string — The unique identifier for the client organization within Certify
  - `mappedData` unknown
  - `submissionData` unknown
  - `submissionPdf` unknown
  - `submittedBy` FormSubmissionSubmittedByResponse — Information about who submitted the form
    - `email` string — The email of the user who submitted the form
    - `user` unknown
  - `form` unknown
  - `formVersionId` string — The id of the version of the form used for this submission
  - `createdAt` string — The date and time when the form submission was created
  - `createdBy` string — The identifier of the user or system that created the submission
  - `updatedAt` string — The date and time when the form submission was last updated

## Other responses

- `400` — Bad request: invalid or missing request body, or when createPractitioner is true: missing data, missing practitionerData, or practitionerData missing npi/externalId.
- `401` — Unauthorized: valid JWT is required.
- `403` — Forbidden: insufficient permissions.
- `500` — Internal server error: unexpected failure during form submission or practitioner/crosswalk operations.

---

[API](https://skmtc.net/certifyos/apis/certify-api-layer.md) · [All operations](https://skmtc.net/certifyos/apis/certify-api-layer/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/certifyos/certify-api-layer/revisions/3d27e9019c7b/schema)
