getFormsDataByMarker
Get the submissions of a form by its marker.
Description
Fetches the submissions of the form identified by marker. Resolves to an IFormsByMarkerDataEntity, not an array: the records are in items, the count in total.
Only forms an admin has marked as public can be read this way. Forms are private by default, and reading a private form returns 403 ("This form's submissions are not publicly readable"). An unknown marker returns { items: [], total: 0 }.
.getFormsDataByMarker(
,
,
,
,
,
,
);
Parameters schema
Schema
marker(required): string
Marker of the form.
example: "contact_form"
formModuleConfigId(required): number
ID of the form module configuration.
example: 4
body: IFormsDataFilter
Filter for the records to return. Every field is optional; an omitted or empty field is not applied.
example:
{
"entityIdentifier": "blog",
"parentId": 10,
"userIdentifier": "",
"status": [
"moderation",
"approved"
],
"dateFrom": "2025-01-01",
"dateTo": ""
}
body.entityIdentifier: string | number
Identifier of the entity the records belong to; an empty string means no filter. A marker for content entities (blog), the numeric ID for products (2954), the login for users and admins.
example: "blog"
body.parentId: number
Identifier of the parent record — the way to fetch replies to one comment.
example: 10
body.userIdentifier: string
Text identifier of the sender; an empty string means "no filter".
example: "admin"
body.status: FormDataStatus[]
Moderation statuses to keep. Must be an array — a bare string is rejected with 400. An empty array means "no filter".
example: ["approved"]
body.dateFrom: string
Lower bound of the submission date, YYYY-MM-DD; an empty string means "no bound" — getFormsDataByMarker strips it from the body, since the endpoint rejects an empty date with a 400. A non-empty value the API cannot parse still fails the request.
example: "2025-01-01"
body.dateTo: string
Upper bound of the submission date, YYYY-MM-DD; an empty string means "no bound", handled like dateFrom.
example: "2025-12-31"
isExtended: number
Pass 1 to also return parentId, depth, status, userIdentifier and isUserAdmin for each record. Default: 0.
example: 1
langCode: string
Language code. Default: the langCode passed to defineOneEntry ("en_US" if none).
example: "en_US"
offset: number
Number of records to skip. Default: 0. offset + limit must not exceed 200; a larger window is rejected with 400.
example: 0
limit: number
Maximum number of records to return. Default: 30.
example: 30
Record limit. If the user group's permission for this method allows only restricted reading, the API returns at most the number of records set in the project settings (10 by default), whatever limit you pass. With full read access, limit works as usual. See Module permissions (opens in a new tab).
Examples
Minimal example
const response = await FormData.getFormsDataByMarker('test-form', 2);
Example with a filter
const response = await FormData.getFormsDataByMarker(
'test-form',
2,
{ entityIdentifier: 'blog', status: ['approved'] },
0,
'en_US',
0,
30,
);
The API returns each record's fields wrapped by language ("formData": { "en_US": [ … ] }), and the SDK unwraps them for the requested langCode. Read record.formData as an array: record.formData[langCode] is undefined and silently yields nothing. This applies to both values of isExtended.
Example response
{
"items": [
{
"id": 9239,
"formIdentifier": "test-form",
"time": "2026-10-26T16:25:38.689Z",
"formData": [
{
"marker": "name",
"type": "string",
"value": "Test"
}
],
"attributeSetIdentifier": "form",
"moduleIdentifier": "content",
"entityIdentifier": "blog",
"entityId": 8,
"formModuleConfigId": 2
},
{
"id": 9221,
"formIdentifier": "test-form",
"time": "2026-10-26T13:48:20.498Z",
"formData": [
{
"marker": "name",
"type": "string",
"value": "Test"
}
],
"attributeSetIdentifier": "form",
"moduleIdentifier": "content",
"entityIdentifier": "blog",
"entityId": 8,
"formModuleConfigId": 2
},
{
"id": 9203,
"formIdentifier": "test-form",
"time": "2026-10-26T13:47:49.055Z",
"formData": [
{
"marker": "name",
"type": "string",
"value": "Test"
}
],
"attributeSetIdentifier": "form",
"moduleIdentifier": "content",
"entityIdentifier": "blog",
"entityId": 8,
"formModuleConfigId": 2
}
],
"total": 907
}
Response schema
Schema: IFormsByMarkerDataEntity
items: IFormByMarkerDataEntity[]
Form data records.
example:
[
{
"id": 42,
"parentId": null,
"formIdentifier": "test-form",
"depth": 0,
"ip": null,
"status": null,
"userIdentifier": null,
"formData": [
{
"marker": "name",
"type": "string",
"value": "Test"
}
],
"attributeSetIdentifier": "form",
"time": "2025-03-03T15:51:17.458Z",
"entityIdentifier": "blog",
"isUserAdmin": false,
"formModuleConfigId": 2
}
]
items.id: number
ID of the form data record.
example: 12345
items.parentId: null | number
ID of the parent form data record; null for a top-level record.
example: 123
items.formIdentifier: string
Marker of the form.
example: "contact_form"
items.depth: number
**
example: 1
items.ip: string | null
Not returned by the Content API; available only in the admin API.
example: '127.0.0.1'
items.fingerprint: string | null
Not returned by the Content API; available only in the admin API.
example: 'fingerprint'
items.status: string | null
Moderation status of the record: "sent", "moderation", "approved", "banned" or "deleted"; null when the form does not moderate.
example: 'approved'
items.userIdentifier: string | null
Text identifier (marker) of the user.
example: "admin"
items.formData: FormDataType[]
Submitted fields, already unwrapped from the locale: the API returns { "en_US": [ … ] } and the SDK hands over the array for the requested langCode. Read formData directly — formData[langCode] is undefined.
example:
[
{
"marker": "name",
"type": "string",
"value": "Test"
}
]
items.attributeSetIdentifier: string | null
Marker of the attribute set used by the form.
example: "product_attributes"
items.time: Date | string
Date and time the form data was last changed.
example: "2023-10-01T12:00:00Z"
items.entityIdentifier: string
Marker of the entity the record belongs to.
example: "test"
items.isUserAdmin: boolean
Whether the record was submitted by an admin.
example: true
items.formModuleConfigId: number
ID of the form module configuration.
example: 2
items.moduleIdentifier: string
Marker of the module.
example: "blog"
items.entityId: number
ID of the entity the record belongs to.
example: 2
total: number
Total number of found records.
example: 100