---
title: "Create procedure template"
method: POST
path: "/proceduretemplates"
tags: ["Procedure Templates"]
---

# Create procedure template

`POST /proceduretemplates`

## Query parameters

- `skipWebhook` boolean

## Headers

- `x-organization-id` integer

## Request body

- object — The procedure template data
  - `title` string, required
  - `fields` object[], required
    - `label` string, required
    - `type` 'NUMBER' | 'AMOUNT' | 'TEXT' | 'UNSUPPORTED' | 'HEADING' | 'FILE' | 'SIGNATURE' | 'MULTIPLE_CHOICE' | 'INSPECTION_CHECK' | 'YES_NO_NA' | 'CHECKBOX' | 'CHECKLIST' | 'METER' | 'DATE' | 'CYCLE_COUNT', required
    - `description` string, nullable
    - `choices` string[]
    - `urls` object[]
      - `label` string — Label of the url
      - `link` string, required — Link
    - `meterId` number, nullable — Id of the meter
    - `isDateAndTime` boolean — Indicate if a DATE field also contains the time
    - `index` number — Order which the row is displayed

## Response `201`

Successfully created the custom fields

- object
  - `id` number, required — Id of the procedure template
  - `fields` object[], required
    - `id` number, required
    - `label` string, required
    - `type` 'NUMBER' | 'AMOUNT' | 'TEXT' | 'UNSUPPORTED' | 'HEADING' | 'FILE' | 'SIGNATURE' | 'MULTIPLE_CHOICE' | 'INSPECTION_CHECK' | 'YES_NO_NA' | 'CHECKBOX' | 'CHECKLIST' | 'METER' | 'DATE' | 'CYCLE_COUNT', required
    - `description` string, nullable
    - `choices` string[], nullable
    - `meterId` number, nullable
    - `isDateAndTime` boolean, nullable — Indicate if a DATE field also contains the time
    - `attachmentId` number, nullable
    - `attachments` object[] — List of attachments linked to the procedure row
      - `id` number, required — Global ID of the attachment
      - `mimeType` string, required — MIME type of the file
      - `fileName` string, required — Attachment's file name
      - `url` string, required — Url of the file. Valid for 60 minutes.
      - `createdAt` string, date-time, required — Date & time at which the attachment was uploaded
      - `width` number, nullable — Width if the file is an image
      - `height` number, nullable — Height if the file is an image
    - `urls` object[]
      - `label` string — Label of the url
      - `link` string, required — Link

## Other responses

- `400` — OrganizationId was not provided
- `401` — Invalid token

---

[API](https://skmtc.net/getmaintainx/apis/maintainx-api.md) · [All operations](https://skmtc.net/getmaintainx/apis/maintainx-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/getmaintainx/maintainx-api/revisions/ef9153fcac7c/schema)
