List submissions
List testimonial submissions for a project, newest first, with paging and filters.
GET /testimonials/submissionsAuthentication
Send your API key as a bearer token. See Authentication .
Query parameters
| Parameter | Type | Default | Notes |
projectId | UUID | required | The project to read. |
page | integer | 1 | The page number, starting at 1. |
pageSize | integer | 25 | Rows per page. The maximum is 100. |
search | string | none | Free text search. |
status | string | none | One or more of pending, approved, rejected. Comma separated. |
type | string | none | text or video. |
source | string | none | One or more of form, manual, import, migration. Comma separated. |
kind | string | none | testimonial or feedback. |
sentiment | string | none | One or more of positive, neutral, negative. Comma separated. |
minRating | integer | none | 1 to 5. Returns rows with a rating at or above this value. |
formBuilderId | UUID | none | Only rows from this form. |
customerId | UUID | none | Only rows from this customer. |
Response
{
"data": [
{
"testimonialSubmissionId": "b1d0c3a2-6f4e-4b8a-9c1d-2e3f4a5b6c7d",
"projectId": "8a7b6c5d-4e3f-2a1b-0c9d-8e7f6a5b4c3d",
"formBuilderId": "1f2e3d4c-5b6a-7980-1234-56789abcdef0",
"customerId": null,
"type": "text",
"kind": "testimonial",
"content": "Contendar saved my team hours every week.",
"rating": 5,
"hasConsent": true,
"videoUrl": null,
"sourceUrl": null,
"tags": ["onboarding", "time-saving"],
"sentiment": "positive",
"status": "approved",
"source": "form",
"approvedAt": "2026-08-20T10:15:00.000Z",
"createdAt": "2026-08-19T09:00:00.000Z",
"updatedAt": "2026-08-20T10:15:00.000Z",
"formName": "Customer review form",
"customerName": null,
"customerEmail": null,
"customerAvatarUrl": null
}
],
"pagination": { "page": 1, "pageSize": 25, "total": 1, "totalPages": 1 }
}Response fields
| Field | Type | Notes |
testimonialSubmissionId | string | The ID of the submission. |
projectId | string | The project the submission belongs to. |
formBuilderId | string or null | The form the submission came from. |
customerId | string or null | The linked customer, if any. |
type | string | text or video. |
kind | string | testimonial or feedback. |
content | string or null | The written review text. |
rating | number or null | A star rating from 1 to 5. |
hasConsent | boolean | Whether the customer agreed to public use. |
videoUrl | string or null | A temporary URL to the video review. It is valid for 24 hours. |
sourceUrl | string or null | The original page the review was imported from. |
tags | array of string or null | Tags on the submission. |
sentiment | string or null | positive, neutral, or negative. |
status | string | pending, approved, or rejected. |
source | string | form, manual, import, or migration. |
approvedAt | string or null | When the review was approved, as an ISO date. |
createdAt | string | When the review arrived, as an ISO date. |
updatedAt | string | When the review was last changed, as an ISO date. |
formName | string or null | The name of the form. |
customerName | string or null | The linked customer name. |
customerEmail | string or null | The linked customer email. |
customerAvatarUrl | string or null | The linked customer avatar. |
Example
curl "https://app.contendar.com/api/v1/testimonials/submissions?projectId=YOUR_PROJECT_ID&status=approved&minRating=4&page=1&pageSize=25" \
-H "Authorization: Bearer ck_your_key_here"Related pages
Was this helpful?