Docs

Add Module Template Block

POST /moduleTemplates/{moduleTemplateId}/blocks

POST/moduleTemplates/{moduleTemplateId}/blocks

Required Tokens

FieldTypeRequiredDescription
BearerAuthorization: Bearer <api-key>OptionalYour API key. Pass it as the Bearer token on every request.
Event tokenx-Event-TokenOptionalRun **Get Tokens** in the Authorization folder, or call `GET /Events/{eventId}/authorize` manually.

Adds a block to a module template. Blocks are the building blocks of a module and come in three types: Content, Question, and Request. Only the field corresponding to the block's type should be populated — the others should be null.

New blocks are appended to the end of the module's block list. Use Update Module Template Block Index to reorder after adding.

Returns 201 Created with no body on success.

Event scoping: These endpoints do not include {eventId} in the URL. The event is determined automatically from your x-Event-Token — the API uses it to know which event's data to return. Ensure you have a valid event token before making any calls in this folder.

Path Parameters

FieldTypeRequiredDescription
moduleTemplateIdGuidRequiredThe ID of the module template to add the block to.

Request Body

FieldTypeRequiredDescription
typestringRequiredBlock type: `Content`, `Question`, or `Request`.
contentBlockobject \Optional✔️ if `type` is `Content`
questionBlockobject \Optional✔️ if `type` is `Question`
requestBlockobject \Optional✔️ if `type` is `Request`

Content Block

FieldTypeRequiredDescription
contentstringRequiredHTML/rich text content to display.

Question Block

FieldTypeRequiredDescription
labelstringRequiredShort label for the question.
questionTextstringRequiredFull question text shown to the collaborator.
responseTypestringRequiredExpected response format. See valid values below.
responseOptionsarrayOptionalRequired for `Select`/`MultiSelect`. Not allowed for other types. Each option has `label`, `type` (`Text`, `Number`, or `Date`), and `value`.

Valid responseType values: Select, MultiSelect, Text, RichText, Number, Date, DateTime, Checkbox, Link, File, MultiFile, Image

Request Block

FieldTypeRequiredDescription
namestringRequiredName of the request.
lineItemLabelstringRequiredDisplay label used throughout the app wherever this request appears as a line item (orders, procurements, tables). Supports variable injection — you can embed dynamic values using `{{variableName}}` syntax alongside plain text.
isAdvanceApprovedboolRequiredWhether advance-side approval is required.
isResourceApprovedboolRequiredWhether resource-side approval is required.
isAssetRequestboolRequiredWhether fulfilling this request links an asset.
allowedAssetTypesarrayOptionalList of asset type IDs (Guids) allowed for this request. Required when `isAssetRequest` is `true`.
propertiesarrayOptionalCustom properties the collaborator fills in for this request. Each has `label`, `isRequired`, `responseType` (same valid values as question `responseType`), and optional `responseOptions` (for `Select`/`MultiSelect`).

Error Codes

CodeHTTP StatusDescription
UNAUTHORIZED401Missing or invalid token.
NOT_FOUND404Module template not found for this event.
BAD_REQUEST400Invalid block type or missing required block fields.