Mountly

Documentation

Guides and public API reference

Public API

OpenAPI 1.0.07 endpoints2 groups

Mountly API reference

Browse endpoints, inspect requests and responses

Base URL

https://api.mountly.io

Version

1.0.0

Endpoints

7

Groups

2

Authentication

Mountly uses bearer token authentication. Before you call the API, create an access token.

Send it in the Authorization header:

Authorization: Bearer <YOUR_ACCESS_TOKEN>

Start with a simple GET /forms request:

curl -H "Authorization: Bearer $MOUNTLY_ACCESS_TOKEN" https://api.mountly.io/forms

If that succeeds, your token is valid. The response may be empty if you have not created a form yet.

If you think a token was compromised, revoke it.

Troubleshooting authentication

Trouble with your access-token?
Here is a list you can go through to double check your setup:

  • The Authorization header is present
  • The header uses the Bearer <token> format
  • The token has the permissions required for the endpoint
  • The token is scoped to the correct form, if you use scoped tokens
  • The token has not expired or been revoked

If you still need help, reach out via Discord or email.

Errors

Most error responses use one of these schemas:

  • ProblemDetails for general API errors
  • HttpValidationProblemDetails for validation errors with field-level details

Use this as the default handling model:

StatusMeaningWhat to doRetry
400The request is invalidFix the payload or parametersNo
401The token is missing, invalid, malformed, or expiredFix the token or Authorization headerNo
403The token is valid, but does not have accessUse a token with the correct permissions or scopeNo
404The resource does not exist or is not accessibleCheck the resource ID, path, and access scopeNo
409The request conflicts with the current resource stateRefresh state, resolve the conflict, then retry if appropriateNot automatically
503The service is temporarily unavailableRetry with exponential backoffYes

Practical rules:

  • Do not blindly retry 4xx responses
  • Retry only temporary failures such as 503
  • Use validation details from HttpValidationProblemDetails to show field-specific errors
  • Log the HTTP status code and error payload for debugging

Endpoint reference

Browse by resource

The primary request body and first useful response stay visible by default. Extra content types and secondary responses stay tucked behind a quick reveal.

Form Entries

3 endpoints

GET

List form entries

/entries
Bearer token required200

List form-entries from a specific form using basic pagination.

Parameters

Path and query values accepted by this endpoint.

Parameters

3 fields

id
string
pageNumber
integer
pageSize
integer

Primary response

The first documented success or example-bearing response.

200
application/jsonListFormEntriesResponseobject

Fields

2 fields

entries
FormEntry[]
FormEntryobject

Fields

5 fields

id
string
formId
string
data
Record<string, string>
createdAt
string (date-time)
updatedAt
string (date-time)
metadata
PaginationMetadata
PaginationMetadataobject

Contains pagination metadata

Fields

8 fields

currentPage
integer

The current 1-index based page index. First page is one (1) not zero (0)!

pageSize
integer

The amount of records on this page.

pageCount
integer

Total available of pages

totalEntries
integer

Total available records

isLastPage
boolean

Indicates if this is the last page or not

isFirstPage
boolean

Indicates if this is the first page or not

hasNextPage
boolean

Indicates whether a next page is available or not

hasPreviousPage
boolean

Indicates whether a previous page is available or not

More responses (2)

Validation, and error responses.

401

This response does not include a documented body.

404

This response does not include a documented body.

cURL

bash
curl --request GET \
  --url 'https://api.mountly.io/entries?id=<id>&pageNumber=<pageNumber>&pageSize=<pageSize>' \
  --header 'Accept: application/json' \
  --header 'Authorization: Bearer <token>'

200 example

json
{
  "entries": [
    null
  ],
  "metadata": {
    "currentPage": null,
    "pageSize": null,
    "pageCount": null,
    "totalEntries": null,
    "isLastPage": null,
    "isFirstPage": null,
    "hasNextPage": null,
    "hasPreviousPage": null
  }
}
PATCH

Update a form entry

/entries
Bearer token required200

Update the content of a single form-entry.

Request body

The primary payload shape shown in the spec.

application/jsonUpdateFormEntryobjectrequired

Request for updating a form entry

Fields

3 fields

formId
string

The ID of the form to update

formEntryId
string

ID of the form-entry to update

data
Record<string, string>

Updated form-entry data, cannot be empty or null

Primary response

The first documented success or example-bearing response.

200

This response does not include a documented body.

More responses (3)

Validation, and error responses.

400
application/jsonProblemDetailsRecord<string, unknown>

Fields

6 fields

type
stringnullable
title
stringnullable
status
integernullable
detail
stringnullable
instance
stringnullable
extensions
Record<string, unknown>
401

This response does not include a documented body.

404

This response does not include a documented body.

cURL

bash
curl --request PATCH \
  --url 'https://api.mountly.io/entries' \
  --header 'Accept: application/json' \
  --header 'Authorization: Bearer <token>' \
  --header 'Content-Type: application/json' \
  --data-raw '{
    "formId": "<string>",
    "formEntryId": "<string>",
    "data": {
      "key": "<string>"
    }
  }'

UpdateFormEntry

json
{
  "formId": "<string>",
  "formEntryId": "<string>",
  "data": {
    "key": "<string>"
  }
}

400 example

json
{
  "key": null
}
DELETE

Delete form entries

/entries
Bearer token required200

Allows deletion of selected form-entries from a form.

Request body

The primary payload shape shown in the spec.

application/jsonDeleteFormEntryobjectrequired

Request for deleting a defined set of form-entries.

Fields

2 fields

id
string

The ID of the form to delete entries from

formEntryIds
string[]

Array of form-entry IDs to be deleted

Primary response

The first documented success or example-bearing response.

200

This response does not include a documented body.

More responses (3)

Validation, and error responses.

400
application/jsonProblemDetailsRecord<string, unknown>

Fields

6 fields

type
stringnullable
title
stringnullable
status
integernullable
detail
stringnullable
instance
stringnullable
extensions
Record<string, unknown>
401

This response does not include a documented body.

404

This response does not include a documented body.

cURL

bash
curl --request DELETE \
  --url 'https://api.mountly.io/entries' \
  --header 'Accept: application/json' \
  --header 'Authorization: Bearer <token>' \
  --header 'Content-Type: application/json' \
  --data-raw '{
    "id": "<string>",
    "formEntryIds": [
      "<string>"
    ]
  }'

DeleteFormEntry

json
{
  "id": "<string>",
  "formEntryIds": [
    "<string>"
  ]
}

400 example

json
{
  "key": null
}

Forms

4 endpoints

GET

List forms

/forms
Bearer token required200

List all forms owned by the authenticated user.

Primary response

The first documented success or example-bearing response.

200
application/jsonListFormsResponseobject

Response with an array of all available forms.

Fields

1 field

forms
Form[]

Array of all available forms.

Formobject

Definition of a form. Can be seen as a container for submissions.

Fields

9 fields

id
string

Unique ID for this form.

ownerId
string

ID of the user who owns this form.

name
string

Name of the form.

description
stringnullable

Optional description of the form.

redirectUrl
stringnullable

Redirect URL after submission.

notificationSettings
FormNotificationSettings

Notification settings.

FormNotificationSettingsobject

Defines a forms notification settings

Fields

3 fields

mode
FormNotificationModesend as integer

The selected notification mode

Allowed values

send as integer
Disabled = 0EverySubmission = 1SubmissionInterval = 2
submissionInterval
integernullable

Optional submission interval

recipients
string[]

List of email addresses used to send notifications to

acceptedSubmissionCount
integer

Total amount of accepted submissions.

state
FormStatesend as integer

The forms current state, can be ENABLED or DISABLED

Allowed values

send as integer
Enabled = 0Disabled = 1
createdAt
string (date-time)

Timestamp this form was created at

More responses (1)

Validation, and error responses.

401

This response does not include a documented body.

cURL

bash
curl --request GET \
  --url 'https://api.mountly.io/forms' \
  --header 'Accept: application/json' \
  --header 'Authorization: Bearer <token>'

200 example

json
{
  "forms": [
    null
  ]
}
POST

Create a form

/forms
Bearer token required200

Create a new form for the authenticated user.

Request body

The primary payload shape shown in the spec.

application/jsonCreateFormobjectrequired

Request to create a new form

Fields

6 fields

name
string

Name of the form, limited to 64 characters

redirectUrl
stringnullable

Set a custom redirect URL

description
stringnullable

Optional: Description of the form, limited to 512 characters

notificationMode
FormNotificationModesend as integernullable

Choose if you want to receive submission notifications. Default is Disabled

Allowed values

send as integer
Disabled = 0EverySubmission = 1SubmissionInterval = 2
notificationSubmissionInterval
integernullable

Sets how many submissions should be processed before sending you a notification. Is only considered when the submission mode is set to "SubmissionInterval".

notificationRecipients
string[]nullable

List of email addresses, used to send submission notifications to

Primary response

The first documented success or example-bearing response.

200
application/jsonCreateFormResponseobject

Response returned after form creation.

Fields

1 field

form
Form

Preview of the newly created form.

Formobject

Definition of a form. Can be seen as a container for submissions.

Fields

9 fields

id
string

Unique ID for this form.

ownerId
string

ID of the user who owns this form.

name
string

Name of the form.

description
stringnullable

Optional description of the form.

redirectUrl
stringnullable

Redirect URL after submission.

notificationSettings
FormNotificationSettings

Notification settings.

FormNotificationSettingsobject

Defines a forms notification settings

Fields

3 fields

mode
FormNotificationModesend as integer

The selected notification mode

Allowed values

send as integer
Disabled = 0EverySubmission = 1SubmissionInterval = 2
submissionInterval
integernullable

Optional submission interval

recipients
string[]

List of email addresses used to send notifications to

acceptedSubmissionCount
integer

Total amount of accepted submissions.

state
FormStatesend as integer

The forms current state, can be ENABLED or DISABLED

Allowed values

send as integer
Enabled = 0Disabled = 1
createdAt
string (date-time)

Timestamp this form was created at

More responses (3)

Validation, and error responses.

400
application/jsonProblemDetailsRecord<string, unknown>

Fields

6 fields

type
stringnullable
title
stringnullable
status
integernullable
detail
stringnullable
instance
stringnullable
extensions
Record<string, unknown>
401

This response does not include a documented body.

403

This response does not include a documented body.

cURL

bash
curl --request POST \
  --url 'https://api.mountly.io/forms' \
  --header 'Accept: application/json' \
  --header 'Authorization: Bearer <token>' \
  --header 'Content-Type: application/json' \
  --data-raw '{
    "name": "<string>",
    "redirectUrl": "<string>",
    "description": "<string>",
    "notificationMode": null,
    "notificationSubmissionInterval": 123,
    "notificationRecipients": [
      "<string>"
    ]
  }'

CreateForm

json
{
  "name": "<string>",
  "redirectUrl": "<string>",
  "description": "<string>",
  "notificationMode": null,
  "notificationSubmissionInterval": 123,
  "notificationRecipients": [
    "<string>"
  ]
}

200 example

json
{
  "form": null
}
PATCH

Update a form

/forms
Bearer token required200

Endpoint for updating any form settings.

Request body

The primary payload shape shown in the spec.

application/jsonUpdateFormobjectrequired

Request to update an existing form

Fields

7 fields

id
string

The forms unique ID

name
string

Name of the form, limited to 64 characters

redirectUrl
stringnullable

Set a custom redirect URL

description
stringnullable

Optional: Description of the form, limited to 512 characters

notificationMode
FormNotificationModesend as integer

Choose if you want to receive submission notifications. Default is Disabled

Allowed values

send as integer
Disabled = 0EverySubmission = 1SubmissionInterval = 2
notificationSubmissionInterval
integernullable

Sets how many submissions should be processed before sending you a notification. Will only be considered when FormNotificationMode is set to SubmissionInterval

notificationRecipients
string[]nullable

Recipient email addresses for submission notifications

Primary response

The first documented success or example-bearing response.

200
application/jsonUpdateFormResponseobject

Response returned after form update.

Fields

1 field

form
Form

Preview of the updated form object.

Formobject

Definition of a form. Can be seen as a container for submissions.

Fields

9 fields

id
string

Unique ID for this form.

ownerId
string

ID of the user who owns this form.

name
string

Name of the form.

description
stringnullable

Optional description of the form.

redirectUrl
stringnullable

Redirect URL after submission.

notificationSettings
FormNotificationSettings

Notification settings.

FormNotificationSettingsobject

Defines a forms notification settings

Fields

3 fields

mode
FormNotificationModesend as integer

The selected notification mode

Allowed values

send as integer
Disabled = 0EverySubmission = 1SubmissionInterval = 2
submissionInterval
integernullable

Optional submission interval

recipients
string[]

List of email addresses used to send notifications to

acceptedSubmissionCount
integer

Total amount of accepted submissions.

state
FormStatesend as integer

The forms current state, can be ENABLED or DISABLED

Allowed values

send as integer
Enabled = 0Disabled = 1
createdAt
string (date-time)

Timestamp this form was created at

More responses (3)

Validation, and error responses.

400
application/jsonProblemDetailsRecord<string, unknown>

Fields

6 fields

type
stringnullable
title
stringnullable
status
integernullable
detail
stringnullable
instance
stringnullable
extensions
Record<string, unknown>
401

This response does not include a documented body.

404

This response does not include a documented body.

cURL

bash
curl --request PATCH \
  --url 'https://api.mountly.io/forms' \
  --header 'Accept: application/json' \
  --header 'Authorization: Bearer <token>' \
  --header 'Content-Type: application/json' \
  --data-raw '{
    "id": "<string>",
    "name": "<string>",
    "redirectUrl": "<string>",
    "description": "<string>",
    "notificationMode": null,
    "notificationSubmissionInterval": 123,
    "notificationRecipients": [
      "<string>"
    ]
  }'

UpdateForm

json
{
  "id": "<string>",
  "name": "<string>",
  "redirectUrl": "<string>",
  "description": "<string>",
  "notificationMode": null,
  "notificationSubmissionInterval": 123,
  "notificationRecipients": [
    "<string>"
  ]
}

200 example

json
{
  "form": null
}
DELETE

Delete a form

/forms
Bearer token required200

Delete a form owned by the authenticated user.

Request body

The primary payload shape shown in the spec.

application/jsonDeleteFormobjectrequired

Request used to delete a form.

Fields

1 field

id
string

ID of the form to delete

Primary response

The first documented success or example-bearing response.

200

This response does not include a documented body.

More responses (3)

Validation, and error responses.

400
application/jsonProblemDetailsRecord<string, unknown>

Fields

6 fields

type
stringnullable
title
stringnullable
status
integernullable
detail
stringnullable
instance
stringnullable
extensions
Record<string, unknown>
401

This response does not include a documented body.

404

This response does not include a documented body.

cURL

bash
curl --request DELETE \
  --url 'https://api.mountly.io/forms' \
  --header 'Accept: application/json' \
  --header 'Authorization: Bearer <token>' \
  --header 'Content-Type: application/json' \
  --data-raw '{
    "id": "<string>"
  }'

DeleteForm

json
{
  "id": "<string>"
}

400 example

json
{
  "key": null
}