Skip to content

Testimonials

Collect testimonials from your customers and display approved ones on your site. Submissions start as pending and can be approved or rejected in the dashboard.

Every project gets a public testimonial submission page at:

https://saasmaker.vercel.app/t/[project-slug]

Share this link in email campaigns, onboarding flows, or support follow-ups to collect testimonials effortlessly.

POST /v1/testimonials

Auth: API Key

Terminal window
curl -X POST https://saasmaker-api.sarthakagrawal927.workers.dev/v1/testimonials \
-H "Content-Type: application/json" \
-H "X-Project-Key: pk_abc123" \
-d '{
"author_name": "Jane Doe",
"author_email": "jane@example.com",
"content": "SaaS Maker saved us weeks of development time.",
"rating": 5,
"author_title": "CTO at Acme",
"tweet_url": "https://twitter.com/jane/status/123"
}'
FieldTypeRequiredDescription
author_namestringYesName of the person
author_emailstringYesEmail address
contentstringYesTestimonial text
ratingnumberYesRating from 1 to 5
author_titlestringNoJob title or role
tweet_urlstringNoLink to a tweet
POST /v1/testimonials/by-project/:slug

Auth: None (public)

Same body as above. Use this for public submission forms where no API key is available.

GET /v1/testimonials

Auth: API Key

Returns only approved testimonials. Use this to display testimonials on your site.

GET /v1/testimonials/all?project_id=...

Auth: Session Token

Returns all testimonials (pending, approved, rejected) with aggregate stats. Used by the dashboard.

PATCH /v1/testimonials/:id?project_id=...

Auth: Session Token

Terminal window
curl -X PATCH "https://saasmaker-api.sarthakagrawal927.workers.dev/v1/testimonials/456?project_id=proj_123" \
-H "Authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d '{ "status": "approved" }'
DELETE /v1/testimonials/:id?project_id=...

Auth: Session Token