Form
Nick has form support which can be used with the @plone/volto-form-block package.
Submit
To submit a form use the following request. The block id and the data of the form should be provided in the endpoint.
POST /@schemaform-data HTTP/1.1
Accept: application/json
Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJhZG1pbiIsImZ1bGxuYW1lIjoiQWRtaW4iLCJpYXQiOjE2NDkzMTI0NDl9.RS1Ny_r0v7vIylFfK6q0JVJrkiDuTOh9iG9IL8xbzAk
Content-Type: application/json
{
"block_id": "669530d8-d319-48cc-ad4f-cd690ab7e472",
"data": {
"myfield": "Lorem Ipsum"
}
}
Or use the client directly:
import { Client } from '@robgietema/nick';
const cli = Client.initialize({ apiPath: 'http://localhost:8080' });
const login = await cli.login({
data: { login: 'admin', password: 'admin' },
});
const { data } = await cli.postForm({
token: login.data.token,
data: {
block_id: '669530d8-d319-48cc-ad4f-cd690ab7e472',
data: {
myfield: 'Lorem Ipsum',
},
},
});
The API will return a 200 response:
HTTP/1.1 204 No Content
Form Data
If the form has store data enabled you can fetch the submitted values of the form.
GET /@form-data?block_id=6e2235ca-b70b-4e88-bdd9-8cba9838d52c HTTP/1.1
Accept: application/json
Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJhZG1pbiIsImZ1bGxuYW1lIjoiQWRtaW4iLCJpYXQiOjE2NDkzMTI0NDl9.RS1Ny_r0v7vIylFfK6q0JVJrkiDuTOh9iG9IL8xbzAk
Or use the client directly:
import { Client } from '@robgietema/nick';
const cli = Client.initialize({ apiPath: 'http://localhost:8080' });
const login = await cli.login({
data: { login: 'admin', password: 'admin' },
});
const { data } = await cli.getFormData({
token: login.data.token,
block_id: '6e2235ca-b70b-4e88-bdd9-8cba9838d52c',
});
The API will return a 200 response:
HTTP/1.1 200 OK
Content-Type: application/json
{
"@id": "http://localhost:8080/@form-data",
"items": [
{
"myfield": "Lorem Ipsum",
"created": "2026-05-07T11:06:02.000Z"
}
],
"items_total": 1,
"expired_total": 0
}