Developers

REST API integration

A REST API for listing, creating, updating and deleting testimonials and spaces, authenticated with API keys.

R

Short answer

The VideoTestimonials REST API lives at https://app.videotestimonials.video/api/v1. Create a key under Settings → API Keys and send it as Authorization: Bearer sk_live_…. It lists, creates, updates and deletes testimonials — with filters for space, status, type, rating, text search and dates — batch-updates or deletes up to 100 at once, and manages spaces. The API is part of the Pro plan.

Plan
Pro and above
Set up in
Dashboard → Settings → API Keys
Direction
Read and write: the API reads testimonials and spaces and can create, update and delete them.

How to connect REST API

  1. 1In the dashboard, open Settings → API Keys and create a key, choosing its scopes: read, write and delete.
  2. 2Copy the key when it is shown: it starts with sk_live_ and is displayed only once.
  3. 3Call https://app.videotestimonials.video/api/v1 with the header Authorization: Bearer YOUR_KEY, from a server — never from browser code.

Available on Pro plan ($49/month).

How it works

Authentication
Authorization: Bearer sk_live_… . Each key has the scopes you chose (read, write, delete); deleting a key revokes it.
Pagination
limit (1–100, default 50) and offset; responses include pagination.total, limit, offset and has_more.
Sorting
sort_by created_at, updated_at, rating or shares; sort_order asc or desc (default desc).
Rate limit
1,000 requests per hour, reported in X-RateLimit-Limit, X-RateLimit-Remaining and X-RateLimit-Reset headers. Over the limit returns 429 RATE_LIMIT_EXCEEDED.
Errors
{ error: { code, message, details } } with codes such as INVALID_API_KEY, INSUFFICIENT_SCOPE, VALIDATION_ERROR and TESTIMONIAL_NOT_FOUND.
Data scope
A key sees the spaces and testimonials of the account that created it.

Endpoints

Base URL: https://app.videotestimonials.video/api/v1

RequestWhat it does
GET /testimonialsList testimonials. Filters: space_id, status (pending, approved, rejected), type (text, video), rating, search, date_from, date_to.
POST /testimonialsCreate a testimonial: space_id, type, submitter_name and submitter_email, plus optional company, role, avatar, text, video URL, rating and status.
GET /testimonials/{id}Get one testimonial.
PATCH /testimonials/{id}Update status, text, rating, company or role.
DELETE /testimonials/{id}Delete a testimonial and its stored files.
POST /testimonials/batch/updateSet the status of up to 100 testimonials.
POST /testimonials/batch/deleteDelete up to 100 testimonials.
GET /spacesList spaces.
POST /spacesCreate a space: name, plus optional description, logo URL, primary color and custom questions.
GET · PATCH · DELETE /spaces/{id}Read, update or delete a space.

Good to know

  • Call the API at app.videotestimonials.video. Requests to /api on the main domain are redirected there, and many HTTP clients drop the Authorization header across a redirect.
  • There are no API endpoints for forms, walls or widgets yet.
  • API keys are secrets — keep them on your server.

REST API integration: frequently asked questions

What is the API base URL?

https://app.videotestimonials.video/api/v1.

How do I authenticate?

Create a key under Settings → API Keys and send it in the Authorization header as Bearer sk_live_… .

Can I fetch only approved testimonials for my website?

Yes: GET /testimonials?status=approved&space_id=YOUR_SPACE_ID, then render them however you like — for example in a Next.js Server Component.

Is there a rate limit?

Yes, 1,000 requests per hour. Each response reports the limit, the remaining requests and the reset time in X-RateLimit headers.

Start building trust today

Connect REST API.
Start with the Free plan.

Collect video and text testimonials, then connect REST API on Pro plan ($49/month). No credit card to start.

Free forever plan
No credit card required
Cancel anytime